[jboss-svn-commits] JBL Code SVN: r21545 - in labs/jbosstm/workspace/interop: WSTFSC02-interop and 29 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 14 10:55:01 EDT 2008
Author: adinn
Date: 2008-08-14 10:55:00 -0400 (Thu, 14 Aug 2008)
New Revision: 21545
Added:
labs/jbosstm/workspace/interop/WSTFSC02-interop/
labs/jbosstm/workspace/interop/WSTFSC02-interop/WSTFSC02-interop.iml
labs/jbosstm/workspace/interop/WSTFSC02-interop/build.xml
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/build.sh
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/sc002handlers.xml
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.wsdl
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.xsd
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/build.sh
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/sc003handlers.xml
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc002.xsd
labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc003.wsdl
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/commons-logging.jar
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/jaxrpc.jar
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/junit.jar
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saaj-api.jar
labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saxon.jar
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestCase.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestSuite.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/MessageLogging.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/Sc002TestCase.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/BaseState.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/InteropWaitState.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/AddressingConstants.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversation.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversationState.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestConstants.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogController.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogServlet.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestRunner.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestServlet.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/directoryContents.html
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/notFoundResponse.html
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/processor.xsl
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/ServiceRegistry.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/handlers/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/Sc002Constants.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002Client.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002ClientHandler.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/sei/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/sei/Sc002PortImpl.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/server/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/server/Sc002Initialisation.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/util/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/util/ClassLoaderHelper.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginResponseType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoResponseType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndResponseType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/MessageType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/NotifyType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/ObjectFactory.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Port.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Service.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesResponseType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SessionDataType.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/package-info.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Port.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Service.java
labs/jbosstm/workspace/interop/WSTFSC02-interop/web.xml
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/index.jsp
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/details.jsp
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/index.jsp
labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/results.jsp
Log:
implementation of WSTF Scenario 2 interop test and generated code for Scenario 3 interop test
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/WSTFSC02-interop.iml
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/WSTFSC02-interop.iml (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/WSTFSC02-interop.iml 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="true" type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module" module-name="jbossts-trunk" />
+ <orderEntry type="module" module-name="jbossws3.0.2" />
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/lib/junit.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntryProperties />
+ </component>
+</module>
+
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/build.xml
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/build.xml (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/build.xml 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<project name="project" default="war">
+ <description>
+ JBoss Transactions WS-Addressing interop test
+ </description>
+
+ <property environment="env"/>
+
+ <property name="host" value="localhost"/>
+ <property name="port" value="8080"/>
+
+ <property name="jboss.deploy.dir" location="${env.JBOSS_HOME}/server/default/deploy"/>
+
+ <property name="build.dir" location="build"/>
+ <property name="build.classes.dir" location="${build.dir}/classes"/>
+ <property name="build.lib.dir" location="${build.dir}/lib"/>
+ <property name="build.war.file.name" value="wstf.war"/>
+ <property name="build.war.file" location="${build.lib.dir}/${build.war.file.name}"/>
+ <property name="build.webxml.file" location="${build.lib.dir}/web.xml"/>
+
+ <property name="src.dir" location="src"/>
+ <property name="dd.dir" location="dd/"/>
+ <property name="webxml.file" location="web.xml"/>
+ <property name="lib.dir" location="lib"/>
+ <property name="web.dir" location="web"/>
+
+ <property name="jboss.client.lib.dir" location="${env.JBOSS_HOME}/client"/>
+ <!--
+ <property name="dist.compile.libs" value="ws-c.jar ws-t.jar wscf.jar wstx.jar wsas.jar jbossjta.jar jbossts-common.jar stax-api-1.0.jar junit-3.8.1.jar saxon8.jar"/>
+ -->
+ <property name="jboss.compile.client.libs" value="jaxb-api.jar jboss-javaee.jar jbossws-native-jaxrpc.jar
+ jbossws-native-jaxws.jar jbossws-client.jar stax-api.jar jbossws-native-saaj.jar
+ jbossws-native-jaxws-ext.jar jbossws-native-core.jar jbossws-common.jar"/>
+
+ <property name="dist.compile.libs" value="junit.jar saxon.jar"/>
+
+ <!--
+ <property name="dist.dependency.libs" value="wstx-asl-2.0.3.jar"/>
+ <property name="dist.libs" value="${dist.compile.libs} ${dist.dependency.libs}"/>
+ -->
+ <property name="dist.libs" value="${dist.compile.libs}"/>
+
+ <property name="compile.debug" value="true"/>
+
+ <path id="classpath">
+ <fileset dir="${lib.dir}" includes="${dist.compile.libs}"/>
+ <fileset dir="${jboss.client.lib.dir}" includes="${jboss.compile.client.libs}"/>
+ </path>
+ <property name="classpath" refid="classpath"/>
+
+ <target name="init">
+ <mkdir dir="${build.dir}"/>
+ <mkdir dir="${build.classes.dir}"/>
+ <mkdir dir="${build.lib.dir}"/>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac classpathref="classpath" destdir="${build.classes.dir}" srcdir="${src.dir}" debug="${compile.debug}"/>
+ </target>
+
+ <target name="war" depends="compile">
+ <copy file="${webxml.file}" tofile="${build.webxml.file}" overwrite="yes">
+ <filterset>
+ <filter token="HOST" value="${host}"/>
+ <filter token="PORT" value="${port}"/>
+ </filterset>
+ </copy>
+ <!-- todo put one copy of each handler file in WEB-INF and refer to it correctly from SEI class annotation-->
+ <!-- wsdl gets loaded relative to service implementation class -->
+ <copy toDir="${build.classes.dir}/org/wstf/docs/scenarios/sc002"
+ overwrite="yes">
+ <fileset dir="${dd.dir}/sc002/"
+ includes="wsdl/sc002.wsdl wsdl/sc002.xsd"/>
+ </copy>
+ <war destfile="${build.war.file}" webxml="${build.webxml.file}">
+ <classes dir="${build.classes.dir}"/>
+ <classes dir="${src.dir}" excludes="**/*.java"/>
+ <lib dir="${lib.dir}" includes="${dist.libs}"/>
+ <webinf dir="${dd.dir}/sc002" includes="wsdl/sc002.wsdl wsdl/sc002.xsd"/>
+ <fileset dir="${web.dir}"/>
+ </war>
+ </target>
+
+ <target name="deploy" depends="war">
+ <copy file="${build.war.file}" todir="${jboss.deploy.dir}"/>
+ </target>
+
+ <target name="undeploy">
+ <delete file="${jboss.deploy.dir}/${build.war.file.name}"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="${build.dir}"/>
+ </target>
+</project>
+
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/build.sh
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/build.sh (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/build.sh 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,21 @@
+#
+#
+#
+
+if [ ! -d tmp ] ; then
+ mkdir tmp
+fi
+
+if [ ! -d tmp/classes ] ; then
+ mkdir tmp/classes
+fi
+
+if [ ! -d tmp/src ] ; then
+ mkdir tmp/src
+fi
+
+# delete old generated versions -- any changes should be made to a copy!
+
+rm -rf tmp/classes/* tmp/src/*
+
+$GF_HOME/bin/wsimport -verbose -keep -wsdllocation wsdl/sc002.wsdl -d tmp/classes -s tmp/src -target 2.0 -extension wsdl/sc002.wsdl
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/sc002handlers.xml
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/sc002handlers.xml (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/sc002handlers.xml 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags.
+ See the copyright.txt in the distribution for a full listing
+ of individual contributors.
+ This copyrighted material is made available to anyone wishing to use,
+ modify, copy, or redistribute it subject to the terms and conditions
+ of the GNU General Public License, v. 2.0.
+ This program is distributed in the hope that it will be useful, but WITHOUT A
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License,
+ v. 2.0 along with this distribution; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ (C) 2008,
+ @author JBoss Inc.
+-->
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>WSTF Sc002 Server Handler</handler-name>
+ <handler-class>org.jboss.ws.extensions.addressing.jaxws.WSAddressingServerHandler</handler-class>
+ </handler>
+ </handler-chain>
+</handler-chains>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.wsdl
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.wsdl (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.wsdl 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.wstf.org/docs/scenarios/sc002">
+
+ <wsdl:types>
+ <xs:schema targetNamespace="http://www.wstf.org/docs/scenarios/sc002">
+ <xs:include schemaLocation="sc002.xsd"/>
+ <xs:element name="Begin" type="tns:BeginType"/>
+ <xs:element name="BeginResponse" type="tns:BeginResponseType"/>
+ <xs:element name="Notify" type="tns:NotifyType"/>
+ <xs:element name="Echo" type="tns:EchoType"/>
+ <xs:element name="EchoResponse" type="tns:EchoResponseType"/>
+ <xs:element name="End" type="tns:EndType"/>
+ <xs:element name="EndResponse" type="tns:EndResponseType"/>
+ <xs:element name="SendMessages" type="tns:SendMessagesType"/>
+ <xs:element name="SendMessagesResponse" type="tns:SendMessagesResponseType"/>
+ <xs:element name="SessionData" type="tns:SessionDataType"/>
+ </xs:schema>
+ </wsdl:types>
+
+ <wsdl:message name="Begin">
+ <wsdl:part name="Begin" element="tns:Begin"/>
+ <wsdl:part name="SessionData" element="tns:SessionData"/>
+ </wsdl:message>
+
+ <wsdl:message name="BeginResponse">
+ <wsdl:part name="BeginResponse" element="tns:BeginResponse"/>
+ </wsdl:message>
+
+ <wsdl:message name="Notify">
+ <wsdl:part name="Notify" element="tns:Notify"/>
+ <wsdl:part name="SessionData" element="tns:SessionData"/>
+ </wsdl:message>
+
+ <wsdl:message name="Echo">
+ <wsdl:part name="Echo" element="tns:Echo"/>
+ <wsdl:part name="SessionData" element="tns:SessionData"/>
+ </wsdl:message>
+
+ <wsdl:message name="EchoResponse">
+ <wsdl:part name="EchoResponse" element="tns:EchoResponse"/>
+ </wsdl:message>
+
+ <wsdl:message name="End">
+ <wsdl:part name="End" element="tns:End"/>
+ <wsdl:part name="SessionData" element="tns:SessionData"/>
+ </wsdl:message>
+
+ <wsdl:message name="EndResponse">
+ <wsdl:part name="EndResponse" element="tns:EndResponse"/>
+ </wsdl:message>
+
+ <wsdl:message name="SendMessages">
+ <wsdl:part name="SendMessages" element="tns:SendMessages"/>
+ </wsdl:message>
+
+ <wsdl:message name="SendMessagesResponse">
+ <wsdl:part name="SendMessagesResponse" element="tns:SendMessagesResponse"/>
+ </wsdl:message>
+
+ <wsdl:portType name="sc002Port">
+ <wsdl:operation name="Begin">
+ <wsdl:input message="tns:Begin"/>
+ <wsdl:output message="tns:BeginResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="Notify">
+ <wsdl:input message="tns:Notify"/>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <wsdl:input message="tns:Echo"/>
+ <wsdl:output message="tns:EchoResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="End">
+ <wsdl:input message="tns:End"/>
+ <wsdl:output message="tns:EndResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="SendMessages">
+ <wsdl:input message="tns:SendMessages"/>
+ <wsdl:output message="tns:SendMessagesResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="sc002SOAP11Binding" type="tns:sc002Port">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="Begin">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Begin"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:Begin"/>
+ <soap:body use="literal" parts="Begin"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="Notify">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Notify"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:Notify"/>
+ <soap:body use="literal" parts="Notify"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Echo"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:Echo"/>
+ <soap:body use="literal" parts="Echo"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="End">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/End"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:End"/>
+ <soap:body use="literal" parts="End"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendMessages">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/SendMessages"/>
+ <wsdl:input>
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:binding name="sc002SOAP12Binding" type="tns:sc002Port">
+ <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="Begin">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Begin"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:Begin"/>
+ <soap12:body use="literal" parts="Begin"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="Notify">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Notify"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:Notify"/>
+ <soap12:body use="literal" parts="Notify"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Echo"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:Echo"/>
+ <soap12:body use="literal" parts="Echo"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="End">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/End"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:End"/>
+ <soap12:body use="literal" parts="End"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="SendMessages">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/SendMessages"/>
+ <wsdl:input>
+ <soap12:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="sc002Service">
+ <wsdl:port name="soap11port" binding="tns:sc002SOAP11Binding">
+ <soap:address location="http://www.wstf.org/sc002/sc002SOAP11"/>
+ </wsdl:port>
+ <wsdl:port name="soap12port" binding="tns:sc002SOAP12Binding">
+ <soap12:address location="http://www.wstf.org/sc002/sc002SOAP12"/>
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.xsd
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.xsd (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc002/wsdl/sc002.xsd 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:tns="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ elementFormDefault="qualified">
+
+ <xs:import namespace="http://www.w3.org/2005/08/addressing"
+ schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
+
+ <xs:complexType name="BeginType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="BeginResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="NotifyType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EchoType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EchoResponseType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EndType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EndResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="MessageType">
+ <xs:sequence>
+ <xs:element name="service" type="xs:QName"/>
+ <xs:element name="port" type="xs:NCName"/>
+ <xs:element name="operation" type="xs:string"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SendMessagesType">
+ <xs:sequence>
+ <xs:element name="epr" type="wsa:EndpointReferenceType"/>
+ <xs:element name="messages">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="message" type="tns:MessageType" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SendMessagesResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SessionDataType">
+ <xs:sequence>
+ <xs:element name="ID" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/build.sh
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/build.sh (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/build.sh 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,23 @@
+#
+#
+#
+
+if [ ! -d tmp ] ; then
+ mkdir tmp
+fi
+
+if [ ! -d tmp/classes ] ; then
+ mkdir tmp/classes
+fi
+
+if [ ! -d tmp/src ] ; then
+ mkdir tmp/src
+fi
+
+# delete old generated versions -- any changes should be made to a copy!
+
+rm -rf tmp/classes/* tmp/src/*
+
+$GF_HOME/bin/wsimport -verbose -keep -wsdllocation wsdl/sc003.wsdl -d tmp/classes -s tmp/src -target 2.0 -extension wsdl/sc003.wsdl
+
+# ${JBOSS_HOME}/bin/wsconsume.sh --verbose --keep --wsdlLocation=wsdl/sc003.wsdl --source=tmp/src --output=tmp/classes --target=2.0 --extension wsdl/sc003.wsdl
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/sc003handlers.xml
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/sc003handlers.xml (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/sc003handlers.xml 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ JBoss, Home of Professional Open Source
+ Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ as indicated by the @author tags.
+ See the copyright.txt in the distribution for a full listing
+ of individual contributors.
+ This copyrighted material is made available to anyone wishing to use,
+ modify, copy, or redistribute it subject to the terms and conditions
+ of the GNU General Public License, v. 2.0.
+ This program is distributed in the hope that it will be useful, but WITHOUT A
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License,
+ v. 2.0 along with this distribution; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA.
+
+ (C) 2008,
+ @author JBoss Inc.
+-->
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
+ <handler-chain>
+ <handler>
+ <handler-name>WSTF Sc003 Server Handler</handler-name>
+ <handler-class>org.jboss.ws.extensions.addressing.jaxws.WSAddressingServerHandler</handler-class>
+ </handler>
+ </handler-chain>
+</handler-chains>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc002.xsd
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc002.xsd (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc002.xsd 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:tns="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ elementFormDefault="qualified">
+
+ <xs:import namespace="http://www.w3.org/2005/08/addressing"
+ schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
+
+ <xs:complexType name="BeginType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="BeginResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="NotifyType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EchoType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EchoResponseType">
+ <xs:sequence>
+ <xs:element name="text" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EndType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="EndResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="MessageType">
+ <xs:sequence>
+ <xs:element name="service" type="xs:QName"/>
+ <xs:element name="port" type="xs:NCName"/>
+ <xs:element name="operation" type="xs:string"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SendMessagesType">
+ <xs:sequence>
+ <xs:element name="epr" type="wsa:EndpointReferenceType"/>
+ <xs:element name="messages">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="message" type="tns:MessageType" minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SendMessagesResponseType">
+ <xs:sequence>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="SessionDataType">
+ <xs:sequence>
+ <xs:element name="ID" type="xs:string" />
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc003.wsdl
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc003.wsdl (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/dd/sc003/wsdl/sc003.wsdl 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://www.wstf.org/docs/scenarios/sc003"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.wstf.org/docs/scenarios/sc003"
+ xmlns:sc002="http://www.wstf.org/docs/scenarios/sc002"
+ xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
+ xmlns:wsp="http://www.w3.org/ns/ws-policy">
+
+ <wsdl:types>
+ <xs:schema targetNamespace="http://www.wstf.org/docs/scenarios/sc002">
+ <xs:include schemaLocation="sc002.xsd"/>
+ <xs:element name="Notify" type="sc002:NotifyType"/>
+ <xs:element name="Echo" type="sc002:EchoType"/>
+ <xs:element name="EchoResponse" type="sc002:EchoResponseType"/>
+ <xs:element name="SessionData" type="sc002:SessionDataType"/>
+ </xs:schema>
+ </wsdl:types>
+
+ <wsdl:message name="Notify">
+ <wsdl:part name="Notify" element="sc002:Notify"/>
+ <wsdl:part name="SessionData" element="sc002:SessionData"/>
+ </wsdl:message>
+ <wsdl:message name="Echo">
+ <wsdl:part name="Echo" element="sc002:Echo"/>
+ <wsdl:part name="SessionData" element="sc002:SessionData"/>
+ </wsdl:message>
+ <wsdl:message name="EchoResponse">
+ <wsdl:part name="EchoResponse" element="sc002:EchoResponse"/>
+ </wsdl:message>
+
+ <wsdl:portType name="sc003Port">
+ <wsdl:operation name="Notify">
+ <wsdl:input message="tns:Notify"
+ wsam:Action="http://www.wstf.org/docs/scenarios/sc002/Notify"/>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <wsdl:documentation>
+ Note the use of distinct action values for the input and
+ output messages of this operation.
+ </wsdl:documentation>
+ <wsdl:input message="tns:Echo"
+ wsam:Action="http://www.wstf.org/docs/scenarios/sc002/Echo"/>
+ <wsdl:output message="tns:EchoResponse"
+ wsam:Action="http://www.wstf.org/docs/scenarios/sc002/EchoResponse"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="sc003SOAP11Binding" type="tns:sc003Port">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="Notify">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Notify"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:Notify"/>
+ <soap:body use="literal" parts="Notify"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <soap:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Echo"/>
+ <wsdl:input>
+ <soap:header use="literal" part="SessionData" message="tns:Echo"/>
+ <soap:body use="literal" parts="Echo"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:binding name="sc003SOAP12Binding" type="tns:sc003Port">
+ <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="Notify">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Notify"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:Notify"/>
+ <soap12:body use="literal" parts="Notify"/>
+ </wsdl:input>
+ </wsdl:operation>
+ <wsdl:operation name="Echo">
+ <soap12:operation soapAction="http://www.wstf.org/docs/scenarios/sc002/Echo"/>
+ <wsdl:input>
+ <soap12:header use="literal" part="SessionData" message="tns:Echo"/>
+ <soap12:body use="literal" parts="Echo"/>
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+
+ <wsdl:service name="sc003Service">
+ <wsdl:port name="soap11port" binding="tns:sc003SOAP11Binding">
+ <wsdl:documentation>
+ This port supports the optional use of WS-Addressing 1.0.
+ </wsdl:documentation>
+ <soap:address location="http://www.wstf.org/sc003/sc003SOAP11"/>
+ <wsp:Policy>
+ <wsam:Addressing wsp:Optional="true">
+ <wsp:Policy/>
+ </wsam:Addressing>
+ </wsp:Policy>
+ </wsdl:port>
+ <wsdl:port name="soap12port" binding="tns:sc003SOAP12Binding">
+ <wsdl:documentation>
+ This port supports the optional use of WS-Addressing 1.0.
+ </wsdl:documentation>
+ <soap12:address location="http://www.wstf.org/sc003/sc003SOAP12"/>
+ <wsp:Policy>
+ <wsam:Addressing wsp:Optional="true">
+ <wsp:Policy/>
+ </wsam:Addressing>
+ </wsp:Policy>
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/commons-logging.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/commons-logging.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/jaxrpc.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/jaxrpc.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/junit.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/junit.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saaj-api.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saaj-api.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saxon.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbosstm/workspace/interop/WSTFSC02-interop/lib/saxon.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestCase.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestCase.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestCase.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,162 @@
+package com.jboss.transaction.wstf.interop;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+
+import com.jboss.transaction.wstf.proxy.ProxyConversation;
+
+/**
+ * Base class for interop tests.
+ * @author kevin
+ */
+public class InteropTestCase extends TestCase
+{
+ /**
+ * The log message prefix start.
+ */
+ private static final String LOG_MESSAGE_PREFIX_START = "<log:message testcase=\"" ;
+ /**
+ * The log message prefix centre.
+ */
+ private static final String LOG_MESSAGE_PREFIX_CENTRE = "\" message=\"" ;
+ /**
+ * The log message prefix end.
+ */
+ private static final String LOG_MESSAGE_PREFIX_END = "\"><log:content>" ;
+ /**
+ * The log message suffix.
+ */
+ private static final String LOG_MESSAGE_SUFFIX = "</log:content></log:message>" ;
+
+ /**
+ * The URI of the participant.
+ */
+ private String participantURI ;
+
+ /**
+ * The conversation id for the test.
+ */
+ private String conversationId ;
+
+ /**
+ * The test timeout value.
+ */
+ private long testTimeout ;
+ /**
+ * The asynchronous test flag.
+ */
+ private boolean asyncTest ;
+
+ /**
+ * Set the participant URI.
+ * @param participantURI The participant URI.
+ */
+ public void setParticipantURI(final String participantURI)
+ {
+ this.participantURI = participantURI ;
+ }
+
+ /**
+ * Get the participant URI.
+ * @return The participant URI.
+ */
+ protected String getParticipantURI()
+ {
+ return participantURI ;
+ }
+
+ /**
+ * Set the test timeout value.
+ * testTimeout The test timeout value.
+ */
+ public void setTestTimeout(final long testTimeout)
+ {
+ this.testTimeout = testTimeout ;
+ }
+
+ /**
+ * Get the asynchronous test flag.
+ * @return The asynchronous test flag.
+ */
+ protected boolean getAsyncTest()
+ {
+ return asyncTest ;
+ }
+
+ /**
+ * Set the asynchronous test flag.
+ * asyncTest The asynchronous test flag.
+ */
+ public void setAsyncTest(final boolean asyncTest)
+ {
+ this.asyncTest = asyncTest ;
+ }
+
+ /**
+ * Get the test timeout value.
+ * @return The test timeout value.
+ */
+ protected long getTestTimeout()
+ {
+ return testTimeout ;
+ }
+
+ /**
+ * Get the conversation id.
+ * @return The conversation id.
+ */
+ protected String getConversationId()
+ {
+ return conversationId ;
+ }
+
+ /**
+ * Wraps the run method to include logging of message interactions.
+ * @param result The test result.
+ */
+ public void run(final TestResult result)
+ {
+ // get a conversation id, start the log, clear it on finish.
+ conversationId = ProxyConversation.createConversation() ;
+ try
+ {
+ super.run(result) ;
+ }
+ finally
+ {
+ final String[] messages = ProxyConversation.removeConversation(conversationId) ;
+ conversationId = null ;
+ if (messages != null)
+ {
+ final int numMessages = messages.length ;
+ final StringBuffer buffer = new StringBuffer() ;
+ int count = 0 ;
+ while(count < numMessages)
+ {
+ final String message = messages[count] ;
+ count++ ;
+ if (message != null)
+ {
+ buffer.append(LOG_MESSAGE_PREFIX_START) ;
+ buffer.append(getName()) ;
+ buffer.append(LOG_MESSAGE_PREFIX_CENTRE) ;
+ buffer.append(count) ;
+ buffer.append(LOG_MESSAGE_PREFIX_END) ;
+ buffer.append(message) ;
+ buffer.append(LOG_MESSAGE_SUFFIX) ;
+ }
+ }
+ MessageLogging.appendThreadLog(buffer.toString()) ;
+ }
+ }
+ }
+
+ /**
+ * Return the string represenation of this test.
+ * @return the string representation.
+ */
+ public String toString()
+ {
+ return getName() ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestSuite.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestSuite.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/InteropTestSuite.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,111 @@
+package com.jboss.transaction.wstf.interop;
+
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Interop testsuite to initialise the participant uri on addition.
+ * @author kevin
+ */
+public class InteropTestSuite extends TestSuite
+{
+ /**
+ * The participant URI for this test.
+ */
+ private final String participantURI ;
+ /**
+ * The test timeout.
+ */
+ private final long testTimeout ;
+ /**
+ * The asynchronous test flag.
+ */
+ private final boolean asyncTest ;
+
+ /**
+ * Construct an empty test suite with the specified participant URI.
+ * @param testTimeout The test timeout.
+ * @param participantURI The participant URI.
+ */
+ public InteropTestSuite(final String participantURI, final long testTimeout, final boolean asyncTest)
+ {
+ super() ;
+ this.participantURI = participantURI ;
+ this.testTimeout = testTimeout ;
+ this.asyncTest = asyncTest ;
+ }
+
+ /**
+ * Construct an empty test suite with the specified participant URI and name.
+ * @param participantURI The participant URI.
+ * @param testTimeout The test timeout.
+ * @param name The name of the test suite.
+ */
+ public InteropTestSuite(final String participantURI, final long testTimeout, final boolean asyncTest, final String name)
+ {
+ super(name) ;
+ this.participantURI = participantURI ;
+ this.testTimeout = testTimeout ;
+ this.asyncTest = asyncTest ;
+ }
+
+ /**
+ * Constructs a TestSuite from the given class using the specified participant URI.
+ * @param participantURI The participant URI.
+ * @param testTimeout The test timeout.
+ * @param clazz The class containing the tests.
+ */
+ public InteropTestSuite(final String participantURI, final long testTimeout, final boolean asyncTest, final Class clazz)
+ {
+ super(clazz) ;
+ this.participantURI = participantURI ;
+ this.testTimeout = testTimeout ;
+ this.asyncTest = asyncTest ;
+ final int numTests = countTestCases() ;
+ for(int count = 0 ; count < numTests ; count++)
+ {
+ initialiseTest(testAt(count)) ;
+ }
+ }
+
+ /**
+ * Constructs a TestSuite from the given class using the specified participant URI and name.
+ * @param participantURI The participant URI.
+ * @param testTimeout The test timeout.
+ * @param clazz The class containing the tests.
+ * @param name The name of the test suite.
+ */
+ public InteropTestSuite(final String participantURI, final long testTimeout, final boolean asyncTest, final Class clazz, final String name)
+ {
+ super(clazz, name) ;
+ this.participantURI = participantURI ;
+ this.testTimeout = testTimeout ;
+ this.asyncTest = asyncTest ;
+ }
+
+ /**
+ * Add a test to the test suite.
+ * @param test The test to add.
+ */
+ public void addTest(final Test test)
+ {
+ initialiseTest(test) ;
+ super.addTest(test) ;
+ }
+
+ /**
+ * Perform initialisation on the test.
+ * @param test The test to initialise.
+ */
+ private void initialiseTest(final Test test)
+ {
+ if (test instanceof InteropTestCase)
+ {
+ final InteropTestCase interopTestCase = (InteropTestCase)test ;
+ interopTestCase.setParticipantURI(participantURI) ;
+ interopTestCase.setTestTimeout(testTimeout) ;
+ interopTestCase.setAsyncTest(asyncTest) ;
+ }
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/MessageLogging.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/MessageLogging.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/MessageLogging.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,51 @@
+package com.jboss.transaction.wstf.interop;
+
+/**
+ * Class providing test message logging.
+ * @author kevin
+ */
+public class MessageLogging
+{
+ /**
+ * The thread local message log.
+ */
+ private static final ThreadLocal MESSAGE_LOG = new ThreadLocal() ;
+
+ /**
+ * Clear the log for the current thread.
+ */
+ public static void clearThreadLog()
+ {
+ MESSAGE_LOG.set(null) ;
+ }
+
+ /**
+ * Get the thread log.
+ * @return The thread log.
+ */
+ public static String getThreadLog()
+ {
+ final Object value = MESSAGE_LOG.get() ;
+ return (value == null ? "" : value.toString()) ;
+ }
+
+ /**
+ * Append a message to the thread log.
+ * @param message The thread message to append.
+ */
+ public static void appendThreadLog(final String message)
+ {
+ final Object value = MESSAGE_LOG.get() ;
+ final StringBuffer buffer ;
+ if (value == null)
+ {
+ buffer = new StringBuffer(message) ;
+ MESSAGE_LOG.set(buffer) ;
+ }
+ else
+ {
+ buffer = (StringBuffer)value ;
+ buffer.append(message) ;
+ }
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/Sc002TestCase.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/Sc002TestCase.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/Sc002TestCase.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,324 @@
+package com.jboss.transaction.wstf.interop;
+
+import com.jboss.transaction.wstf.webservices.sc002.Sc002Constants;
+import com.jboss.transaction.wstf.webservices.sc002.client.Sc002Client;
+import com.jboss.transaction.wstf.webservices.ServiceRegistry;
+import com.jboss.transaction.wstf.proxy.ProxyConversation;
+import org.wstf.docs.scenarios.sc002.*;
+
+import javax.xml.ws.soap.SOAPFaultException;
+import javax.xml.ws.ProtocolException;
+import javax.xml.ws.WebServiceException;
+
+/**
+ * test case for WSTF scenario 2 Echo Notify service
+ *
+ * inherits from InteropTestCase so we can get redirection through the proxy service
+ * and hence logging of the messages. we don't strictly have a participant service
+ * here but the corresponding entity is the Sc002 service which we provide an
+ * implementation for. We also implement a client service which can be used to accept
+ * asynchronous replies and faults.
+ */
+public class Sc002TestCase extends InteropTestCase
+{
+ /**
+ * The service URI of the Sc002 service.
+ */
+ private static final String SC002_SERVICE_URI ;
+
+ /**
+ * Construct the named test case.
+ */
+ public Sc002TestCase()
+ {
+ // Default the participant service to the local Sc002 service.
+ setParticipantURI(getSc002ServiceURI()) ;
+ setTestTimeout(120000) ;
+ setAsyncTest(true) ;
+ }
+
+ /**
+ * Get the Sc002 service URI.
+ * @return The Sc002 service uri.
+ */
+ protected static String getSc002ServiceURI()
+ {
+ return SC002_SERVICE_URI ;
+ }
+
+ /**
+ * testSc002_1 - Test 1 simple notify
+ * Participant sends a simple notify.
+ * @throws Exception on failure.
+ */
+ public void testSc002_1()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ NotifyType notifyType = new NotifyType();
+ session.setID("0");
+ notifyType.setText("Hello-");
+ Sc002Client.getSc002Port(serviceURI, conversationId, false).notify(notifyType, session);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_2 - Test 1 faulting notify
+ * Participant sends a faulting notify and traps a fault response.
+ * @throws Exception unless the correct fault is caught.
+ */
+ public void testSc002_2()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ NotifyType notifyType = new NotifyType();
+ session.setID("0");
+ notifyType.setText("fault");
+ Sc002Client.getSc002Port(serviceURI, conversationId, false).notify(notifyType, session);
+ }
+ catch (SOAPFaultException sfe)
+ {
+ // did not expect this
+ fail("unexpected soap fault exception " + sfe);
+ }
+ catch (ProtocolException pe)
+ {
+ // did not expect this
+ fail("unexpected protocol exception " + pe);
+ }
+ catch (WebServiceException wse)
+ {
+ // did not expect this
+ fail("unexpected web service exception " + wse);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_3 - Test 3 simple echo
+ * Participant sends a simple echo.
+ * @throws Exception on failure.
+ */
+ public void testSc002_3()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ EchoType echoType = new EchoType();
+ session.setID("0");
+ echoType.setText("World");
+ EchoResponseType result = Sc002Client.getSc002Port(serviceURI, conversationId, false).echo(echoType, session);
+ String reply = result.getText();
+
+ if (reply == null) {
+ fail("invalid null echo response");
+ } else {
+ int length = reply.length();
+ int idx = reply.indexOf("World");
+ if ((idx < 0) || ((idx + 5) != length)) {
+ fail ("invalid echo response " + reply);
+ }
+ }
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_4 - Test 4 faulting echo
+ * Participant sends a faulting echo and traps a fault response.
+ * @throws Exception unless the correct fault is caught.
+ */
+ public void testSc002_4()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ EchoType echoType = new EchoType();
+ session.setID("0");
+ echoType.setText("fault");
+ EchoResponseType result = Sc002Client.getSc002Port(serviceURI, conversationId, false).echo(echoType, session);
+ fail("faulting echo expected fault! got " + result.getText());
+ }
+ catch (SOAPFaultException sfe)
+ {
+ // expected this
+ }
+ catch (ProtocolException pe)
+ {
+ // did not expect this
+ fail("unexpected protocol exception " + pe);
+ }
+ catch (WebServiceException wse)
+ {
+ // did not expect this
+ fail("unexpected web service exception " + wse);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_5 - Test 5 simple notify with mu
+ * Participant sends a simple notify with a must understand header.
+ * @throws Exception on failure.
+ */
+ public void testSc002_5()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ NotifyType notifyType = new NotifyType();
+ session.setID("0");
+ notifyType.setText("Hello-");
+ Sc002Client.getSc002Port(serviceURI, conversationId, true).notify(notifyType, session);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_6 - Test 6 faulting notify with mu
+ * Participant sends a faulting notify with a must understand header and traps a fault
+ * response.
+ * @throws Exception unless the correct fault is caught.
+ */
+ public void testSc002_6()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ NotifyType notifyType = new NotifyType();
+ session.setID("0");
+ notifyType.setText("fault");
+ Sc002Client.getSc002Port(serviceURI, conversationId, true).notify(notifyType, session);
+ }
+ catch (SOAPFaultException sfe)
+ {
+ // did not expect this
+ fail("unexpected soap fault exception " + sfe);
+ }
+ catch (ProtocolException pe)
+ {
+ // did not expect this
+ fail("unexpected protocol exception " + pe);
+ }
+ catch (WebServiceException wse)
+ {
+ // did not expect this
+ fail("unexpected web service exception " + wse);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_7 - Test 7 simple echo with mu
+ * Participant sends a simple echo with a must understand header.
+ * @throws Exception on failure.
+ */
+ public void testSc002_7()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ EchoType echoType = new EchoType();
+ session.setID("0");
+ echoType.setText("World");
+ EchoResponseType result = Sc002Client.getSc002Port(serviceURI, conversationId, true).echo(echoType, session);
+ String reply = result.getText();
+ fail("expecting soap fault!");
+ }
+ catch (SOAPFaultException sfe)
+ {
+ // expect this
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ /**
+ * testSc002_8 - Test 8 faulting echo with mu
+ * Participant sends a faulting echo with a must understand and traps a fault response.
+ * @throws Exception unless the correct fault is caught.
+ */
+ public void testSc002_8()
+ throws Exception
+ {
+ final String conversationId = getConversationId() ;
+ try
+ {
+ final String serviceURI = getParticipantURI(); // ProxyURIRewriting.rewriteURI(conversationId, getParticipantURI()) ;
+ SessionDataType session = new SessionDataType();
+ EchoType echoType = new EchoType();
+ session.setID("0");
+ echoType.setText("fault");
+ EchoResponseType result = Sc002Client.getSc002Port(serviceURI, conversationId, true).echo(echoType, session);
+ fail("faulting echo expected fault! got " + result.getText());
+ }
+ catch (SOAPFaultException sfe)
+ {
+ // expected this
+ }
+ catch (ProtocolException pe)
+ {
+ // did not expect this
+ fail("unexpected protocol exception " + pe);
+ }
+ catch (WebServiceException wse)
+ {
+ // did not expect this
+ fail("unexpected web service exception " + wse);
+ }
+ finally
+ {
+ ProxyConversation.clearConversationState(conversationId) ;
+ }
+ }
+
+ static
+ {
+ final ServiceRegistry serviceRegistry = ServiceRegistry.getRegistry() ;
+ SC002_SERVICE_URI = serviceRegistry.getServiceURI(Sc002Constants.SERVICE_SC002) ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/BaseState.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/BaseState.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/BaseState.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,97 @@
+package com.jboss.transaction.wstf.interop.states;
+
+import org.xml.sax.ContentHandler;
+
+import com.jboss.transaction.wstf.proxy.ProxyConversationState;
+
+/**
+ * The base state class for proxy conversations.
+ */
+abstract class BaseState implements ProxyConversationState
+{
+ /**
+ * The complete flag.
+ */
+ private boolean complete ;
+ /**
+ * The success flag.
+ */
+ private boolean success ;
+
+ /**
+ * Mark the conversation as successfully completed.
+ */
+ protected synchronized void success()
+ {
+ if (!complete)
+ {
+ System.out.println("KEV: success!") ;
+ complete = true ;
+ success = true ;
+ notifyAll() ;
+ }
+ else
+ {
+ System.out.println("KEV: AAAAAARRRRRRRGGGGGGGHHHHHHHHH, multiple successes called for conversation!") ;
+ }
+ }
+
+ /**
+ * Wait a specified period for the conversation to complete.
+ * @param timeout The timeout period of the conversation.
+ */
+ public synchronized void waitForCompletion(final long timeout)
+ {
+ if (!complete && (timeout > 0))
+ {
+ final long end = System.currentTimeMillis() + timeout ;
+ do
+ {
+ final long delay = end - System.currentTimeMillis() ;
+ if (delay > 0)
+ {
+ try
+ {
+ wait(delay) ;
+ }
+ catch (final InterruptedException ie) {} // ignore
+ }
+ else
+ {
+ break ;
+ }
+ }
+ while(!complete) ;
+ }
+
+ complete = true ;
+ }
+
+ /**
+ * Has the conversation complete?
+ * @return true if the conversation has complete, false otherwise.
+ */
+ public synchronized boolean isComplete()
+ {
+ return complete ;
+ }
+
+ /**
+ * Was the conversation successful?
+ * @return true if the conversation was successful, false otherwise.
+ */
+ public synchronized boolean isSuccessful()
+ {
+ return success ;
+ }
+
+ /**
+ * Get the Handler for rewriting the XML.
+ * @param nextHandler The next handler in the sequence.
+ * @return The handler or null if no rewriting required.
+ */
+ public ContentHandler getHandler(final ContentHandler nextHandler)
+ {
+ return null ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/InteropWaitState.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/InteropWaitState.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/interop/states/InteropWaitState.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,54 @@
+package com.jboss.transaction.wstf.interop.states;
+
+/**
+ * A conversation state that waits for a specified action before completing.
+ */
+public class InteropWaitState extends BaseState
+{
+ /**
+ * The last action.
+ */
+ private final String lastAction ;
+ /**
+ * The action count.
+ */
+ private int count ;
+
+ /**
+ * Construct the conversation state.
+ * @param lastAction The last action of the conversation.
+ */
+ public InteropWaitState(final String lastAction)
+ {
+ this(lastAction, 1) ;
+ }
+
+ /**
+ * Construct the conversation state.
+ * @param lastAction The last action of the conversation.
+ * @param count The occurrance to trigger on.
+ */
+ public InteropWaitState(final String lastAction, final int count)
+ {
+ this.lastAction = lastAction ;
+ this.count = count ;
+ }
+
+ /**
+ * Handle the next action in the sequence.
+ * @param action The SOAP action.
+ * @param identifier The identifier associated with the endpoint.
+ * @return true if the message should be dropped, false otherwise.
+ */
+ public boolean handleAction(final String action, final String identifier)
+ {
+ if (lastAction.equals(action))
+ {
+ if (--count == 0)
+ {
+ success() ;
+ }
+ }
+ return false ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/AddressingConstants.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/AddressingConstants.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/AddressingConstants.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,308 @@
+package com.jboss.transaction.wstf.proxy;
+
+import javax.xml.namespace.QName;
+
+/**
+ * constants used in WS Addressing 2005/08
+ */
+public class AddressingConstants {
+ /**
+ * The Namespace.
+ */
+ public static String WSA_NAMESPACE = "http://www.w3.org/2005/08/addressing" ;
+ /**
+ * The Attribute Namespace.
+ */
+ public static String WSA_ATTRIBUTE_NAMESPACE = "" ;
+ /**
+ * The namespace prefix.
+ */
+ public static String WSA_PREFIX = "wsa" ;
+ /**
+ * The attribute namespace prefix.
+ */
+ public static String WSA_ATTRIBUTE_PREFIX = "" ;
+
+ /**
+ * The Action element.
+ */
+ public static String WSA_ELEMENT_ACTION = "Action" ;
+ /**
+ * The Action QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_ACTION = new QName(WSA_NAMESPACE, WSA_ELEMENT_ACTION, WSA_PREFIX) ;
+ /**
+ * The Endpoint Reference element.
+ */
+ public static String WSA_ELEMENT_ENDPOINT_REFERENCE = "EndpointReference" ;
+ /**
+ * The Endpoint Reference QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_ENDPOINT_REFERENCE = new QName(WSA_NAMESPACE, WSA_ELEMENT_ENDPOINT_REFERENCE, WSA_PREFIX) ;
+ /**
+ * The Fault To element.
+ */
+ public static String WSA_ELEMENT_FAULT_TO = "FaultTo" ;
+ /**
+ * The Fault To QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_FAULT_TO = new QName(WSA_NAMESPACE, WSA_ELEMENT_FAULT_TO, WSA_PREFIX) ;
+ /**
+ * The From element.
+ */
+ public static String WSA_ELEMENT_FROM = "From" ;
+ /**
+ * The From QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_FROM = new QName(WSA_NAMESPACE, WSA_ELEMENT_FROM, WSA_PREFIX) ;
+ /**
+ * The Message ID element.
+ */
+ public static String WSA_ELEMENT_MESSAGE_ID = "MessageID" ;
+ /**
+ * The Message ID QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_MESSAGE_ID = new QName(WSA_NAMESPACE, WSA_ELEMENT_MESSAGE_ID, WSA_PREFIX) ;
+ /**
+ * The Relates To element.
+ */
+ public static String WSA_ELEMENT_RELATES_TO = "RelatesTo" ;
+ /**
+ * The Relates To QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_RELATES_TO = new QName(WSA_NAMESPACE, WSA_ELEMENT_RELATES_TO, WSA_PREFIX) ;
+ /**
+ * The Reply To element.
+ */
+ public static String WSA_ELEMENT_REPLY_TO = "ReplyTo" ;
+ /**
+ * The Reply To QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_REPLY_TO = new QName(WSA_NAMESPACE, WSA_ELEMENT_REPLY_TO, WSA_PREFIX) ;
+ /**
+ * The To element.
+ */
+ public static String WSA_ELEMENT_TO = "To" ;
+ /**
+ * The To QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_TO = new QName(WSA_NAMESPACE, WSA_ELEMENT_TO, WSA_PREFIX) ;
+ /**
+ * The Address element.
+ */
+ public static String WSA_ELEMENT_ADDRESS = "Address" ;
+ /**
+ * The Address QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_ADDRESS = new QName(WSA_NAMESPACE, WSA_ELEMENT_ADDRESS, WSA_PREFIX) ;
+ /**
+ * The Reference Parameters element.
+ */
+ public static String WSA_ELEMENT_REFERENCE_PARAMETERS = "ReferenceParameters" ;
+ /**
+ * The Reference Parameters QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_REFERENCE_PARAMETERS = new QName(WSA_NAMESPACE, WSA_ELEMENT_REFERENCE_PARAMETERS, WSA_PREFIX) ;
+ /**
+ * The Metadata element.
+ */
+ public static String WSA_ELEMENT_METADATA = "Metadata" ;
+ /**
+ * The Metadata QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_METADATA = new QName(WSA_NAMESPACE, WSA_ELEMENT_METADATA, WSA_PREFIX) ;
+
+ /**
+ * The Relationship Type attribute.
+ */
+ public static String WSA_ATTRIBUTE_RELATIONSHIP_TYPE = "RelationshipType" ;
+ /**
+ * The Relationship Type QName.
+ */
+ public static QName WSA_ATTRIBUTE_QNAME_RELATIONSHIP_TYPE = new QName(WSA_ATTRIBUTE_NAMESPACE, WSA_ATTRIBUTE_RELATIONSHIP_TYPE, WSA_ATTRIBUTE_PREFIX) ;
+
+ /**
+ * The value of the Action element for faults.
+ */
+ public static String WSA_ACTION_FAULT = WSA_NAMESPACE + "/fault" ;
+ /**
+ * The value of the Action element for SOAP faults.
+ */
+ public static String WSA_ACTION_SOAP_FAULT = WSA_NAMESPACE + "/soap/fault" ;
+
+ /**
+ * The unspecified Message ID for use in relationships.
+ * KEV check
+ */
+ public static String WSA_MESSAGE_ID_UNSPECIFIED = WSA_NAMESPACE + "/unspecified" ;
+
+ /**
+ * The address URI representing an anonymous endpoint.
+ */
+ public static String WSA_ADDRESS_ANONYMOUS = WSA_NAMESPACE + "/anonymous" ;
+ /**
+ * The address URI representing the none endpoint.
+ */
+ public static String WSA_ADDRESS_NONE = WSA_NAMESPACE + "/none" ;
+
+ /**
+ * The relates to reply URI.
+ */
+ public static String WSA_RELATES_TO_REPLY = WSA_NAMESPACE + "/reply" ;
+
+ /**
+ * The Is Reference Parameter attribute.
+ */
+ public static String WSA_ATTRIBUTE_IS_REFERENCE_PARAMETER = "IsReferenceParameter" ;
+ /**
+ * The Is Reference Parameter QName.
+ */
+ public static QName WSA_ATTRIBUTE_QNAME_IS_REFERENCE_PARAMETER = new QName(WSA_NAMESPACE, WSA_ATTRIBUTE_IS_REFERENCE_PARAMETER, WSA_PREFIX) ;
+
+ /**
+ * The Fault Detail element.
+ */
+ public static String WSA_ELEMENT_FAULT_DETAIL = "FaultDetail" ;
+ /**
+ * The Fault Detail QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_FAULT_DETAIL = new QName(WSA_NAMESPACE, WSA_ELEMENT_FAULT_DETAIL, WSA_PREFIX) ;
+
+ /**
+ * The Invalid Addressing Header fault code.
+ */
+ public static String WSA_FAULT_CODE_INVALID_ADDRESSING_HEADER = "InvalidAddressingHeader" ;
+ /**
+ * The Invalid Addressing Header fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_INVALID_ADDRESSING_HEADER = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_INVALID_ADDRESSING_HEADER, WSA_PREFIX) ;
+ /**
+ * The Invalid Address fault code.
+ */
+ public static String WSA_FAULT_CODE_INVALID_ADDRESS = "InvalidAddress" ;
+ /**
+ * The Invalid Address fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_INVALID_ADDRESS = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_INVALID_ADDRESS, WSA_PREFIX) ;
+ /**
+ * The Invalid EPR fault code.
+ */
+ public static String WSA_FAULT_CODE_INVALID_EPR = "InvalidEPR" ;
+ /**
+ * The Invalid EPR fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_INVALID_EPR = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_INVALID_EPR, WSA_PREFIX) ;
+ /**
+ * The Invalid Cardinality fault code.
+ */
+ public static String WSA_FAULT_CODE_INVALID_CARDINALITY = "InvalidCardinality" ;
+ /**
+ * The Invalid Cardinality fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_INVALID_CARDINALITY = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_INVALID_CARDINALITY, WSA_PREFIX) ;
+ /**
+ * The Missing Address In EPR fault code.
+ */
+ public static String WSA_FAULT_CODE_MISSING_ADDRESS_IN_EPR = "MissingAddressInEPR" ;
+ /**
+ * The Missing Address In EPR fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_MISSING_ADDRESS_IN_EPR = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_MISSING_ADDRESS_IN_EPR, WSA_PREFIX) ;
+ /**
+ * The Duplicate Message ID fault code.
+ */
+ public static String WSA_FAULT_CODE_DUPLICATE_MESSAGE_ID = "DuplicateMessageID" ;
+ /**
+ * The Duplicate Message ID fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_DUPLICATE_MESSAGE_ID = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_DUPLICATE_MESSAGE_ID, WSA_PREFIX) ;
+ /**
+ * The Action Mismatch fault code.
+ */
+ public static String WSA_FAULT_CODE_ACTION_MISMATCH = "ActionMismatch" ;
+ /**
+ * The Action Mismatch fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_ACTION_MISMATCH = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_ACTION_MISMATCH, WSA_PREFIX) ;
+ /**
+ * The Message Addressing Header Required fault code.
+ */
+ public static String WSA_FAULT_CODE_MESSAGING_ADDRESSING_HEADER_REQUIRED = "MessageAddressingHeaderRequired" ;
+ /**
+ * The Message Addressing Header Required fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_MESSAGING_ADDRESSING_HEADER_REQUIRED = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_MESSAGING_ADDRESSING_HEADER_REQUIRED, WSA_PREFIX) ;
+ /**
+ * The Destination Unreachable fault code.
+ */
+ public static String WSA_FAULT_CODE_DESTINATION_UNREACHABLE = "DestinationUnreachable" ;
+ /**
+ * The Destination Unreachable fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_DESTINATION_UNREACHABLE = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_DESTINATION_UNREACHABLE, WSA_PREFIX) ;
+ /**
+ * The Action Not Supported fault code.
+ */
+ public static String WSA_FAULT_CODE_ACTION_NOT_SUPPORTED = "ActionNotSupported" ;
+ /**
+ * The Action Not Supported fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_ACTION_NOT_SUPPORTED = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_ACTION_NOT_SUPPORTED, WSA_PREFIX) ;
+ /**
+ * The Endpoint Unavailable fault code.
+ */
+ public static String WSA_FAULT_CODE_ENDPOINT_UNAVAILABLE = "EndpointUnavailable" ;
+ /**
+ * The Endpoint Unavailable fault code QName.
+ */
+ public static QName WSA_FAULT_CODE_QNAME_ENDPOINT_UNAVAILABLE = new QName(WSA_NAMESPACE, WSA_FAULT_CODE_ENDPOINT_UNAVAILABLE, WSA_PREFIX) ;
+
+ /**
+ * The Problem Header element.
+ */
+ public static String WSA_ELEMENT_PROBLEM_HEADER = "ProblemHeader" ;
+ /**
+ * The Problem Header QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_PROBLEM_HEADER = new QName(WSA_NAMESPACE, WSA_ELEMENT_PROBLEM_HEADER, WSA_PREFIX) ;
+ /**
+ * The Problem Header QName element.
+ */
+ public static String WSA_ELEMENT_PROBLEM_HEADER_QNAME = "ProblemHeaderQName" ;
+ /**
+ * The Problem Header QName QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_PROBLEM_HEADER_QNAME = new QName(WSA_NAMESPACE, WSA_ELEMENT_PROBLEM_HEADER_QNAME, WSA_PREFIX) ;
+ /**
+ * The Problem IRI element.
+ */
+ public static String WSA_ELEMENT_PROBLEM_IRI = "ProblemIRI" ;
+ /**
+ * The Problem IRI QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_PROBLEM_IRI = new QName(WSA_NAMESPACE, WSA_ELEMENT_PROBLEM_IRI, WSA_PREFIX) ;
+ /**
+ * The Problem Action element.
+ */
+ public static String WSA_ELEMENT_PROBLEM_ACTION = "ProblemAction" ;
+ /**
+ * The Problem Action QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_PROBLEM_ACTION = new QName(WSA_NAMESPACE, WSA_ELEMENT_PROBLEM_ACTION, WSA_PREFIX) ;
+ /**
+ * The Soap Action element.
+ */
+ public static String WSA_ELEMENT_SOAP_ACTION = "SoapAction" ;
+ /**
+ * The Soap Action QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_SOAP_ACTION = new QName(WSA_NAMESPACE, WSA_ELEMENT_SOAP_ACTION, WSA_PREFIX) ;
+ /**
+ * The Retry After element.
+ */
+ public static String WSA_ELEMENT_RETRY_AFTER = "RetryAfter" ;
+ /**
+ * The Retry After QName.
+ */
+ public static QName WSA_ELEMENT_QNAME_RETRY_AFTER = new QName(WSA_NAMESPACE, WSA_ELEMENT_METADATA, WSA_PREFIX) ;
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversation.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversation.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversation.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,145 @@
+package com.jboss.transaction.wstf.proxy;
+
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Message logging via the proxy.
+ */
+public class ProxyConversation
+{
+ /**
+ * The conversation id.
+ */
+ private static int currentConversationId ;
+ /**
+ * The conversation map.
+ */
+ private static Map conversationMap = new TreeMap() ;
+ /**
+ * The conversation state map.
+ */
+ private static Map conversationStateMap = new TreeMap() ;
+
+ /**
+ * The marker for an internal id.
+ */
+ private static final char INTERNAL_ID = 'c' ;
+ /**
+ * The marker for an external id.
+ */
+ private static final char EXTERNAL_ID = 'C' ;
+
+ /**
+ * Create a conversation.
+ * @return The id of the conversation.
+ */
+ public static synchronized String createConversation()
+ {
+ final String conversationId = INTERNAL_ID + Integer.toString(++currentConversationId) ;
+ conversationMap.put(mapConversationId(conversationId), new ArrayList()) ;
+System.out.println("KEV: created conversation " + conversationId) ;
+ return conversationId ;
+ }
+
+ /**
+ * Remove the conversation.
+ * @param conversationId The conversation id.
+ * @return The conversation messages in sequence.
+ */
+ public static synchronized String[] removeConversation(final String conversationId)
+ {
+ final ArrayList list = (ArrayList)conversationMap.remove(mapConversationId(conversationId)) ;
+System.out.println("KEV: removed conversation " + conversationId) ;
+ return (list == null ? new String[0] : (String[])list.toArray(new String[list.size()])) ;
+ }
+
+ /**
+ * Append a message to the conversation.
+ * @param conversationId The conversation id.
+ * @param message The message to append to the conversation.
+ */
+ public static synchronized void appendConversation(final String conversationId, final String message)
+ {
+ final ArrayList list = (ArrayList)conversationMap.get(mapConversationId(conversationId)) ;
+ if (list != null)
+ {
+ list.add(message) ;
+ }
+ }
+
+ /**
+ * Set the conversation state for the specified conversation.
+ * @param conversationId The conversation id.
+ * @param conversationState The conversation state.
+ */
+ public static synchronized void setConversationState(final String conversationId, final ProxyConversationState conversationState)
+ {
+ conversationStateMap.put(mapConversationId(conversationId), conversationState) ;
+ }
+
+ /**
+ * Get the conversation state for the specified conversation.
+ * @param conversationId The conversation id.
+ * @return The conversation state or null.
+ */
+ public static synchronized ProxyConversationState getConversationState(final String conversationId)
+ {
+ return (ProxyConversationState)conversationStateMap.get(mapConversationId(conversationId)) ;
+ }
+
+ /**
+ * Clear the conversation state for the specified conversation.
+ * @param conversationId The conversation id.
+ */
+ public static synchronized void clearConversationState(final String conversationId)
+ {
+ conversationStateMap.remove(mapConversationId(conversationId)) ;
+ }
+
+ /**
+ * Is the conversation id an internal id?
+ * @param conversationId The conversation id.
+ * @return True if the conversation id is internal, false if it is external.
+ */
+ public static boolean isInternalConversationId(final String conversationId)
+ {
+ return ((conversationId != null) && (conversationId.length() != 0) && (conversationId.charAt(0) == INTERNAL_ID)) ;
+ }
+
+ /**
+ * Get the alternate conversation id.
+ * @param conversationId The current conversation id.
+ * @return The alternate conversation id.
+ */
+ public static String getAlternateConversationId(final String conversationId)
+ {
+ if ((conversationId == null) || (conversationId.length() == 0))
+ {
+ return conversationId ;
+ }
+ if (conversationId.charAt(0) == INTERNAL_ID)
+ {
+ return EXTERNAL_ID + mapConversationId(conversationId) ;
+ }
+ else
+ {
+ return INTERNAL_ID + mapConversationId(conversationId) ;
+ }
+ }
+
+ /**
+ * Get the map conversation id.
+ * @param conversationId The full conversation id.
+ * @return The conversation id for the map.
+ */
+ private static String mapConversationId(final String conversationId)
+ {
+ if ((conversationId == null) || (conversationId.length() == 0))
+ {
+ return conversationId ;
+ }
+ return conversationId.substring(1) ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversationState.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversationState.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/proxy/ProxyConversationState.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,24 @@
+package com.jboss.transaction.wstf.proxy;
+
+import org.xml.sax.ContentHandler;
+
+/**
+ * Interface representing a conversation state.
+ */
+public interface ProxyConversationState
+{
+ /**
+ * Handle the next action in the sequence.
+ * @param action The SOAP action.
+ * @param identifier The identifier associated with the endpoint.
+ * @return true if the message should be dropped, false otherwise.
+ */
+ public boolean handleAction(final String action, final String identifier) ;
+
+ /**
+ * Get the Handler for rewriting the XML.
+ * @param nextHandler The next handler in the sequence.
+ * @return The handler or null if no rewriting required.
+ */
+ public ContentHandler getHandler(final ContentHandler nextHandler) ;
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestConstants.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestConstants.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestConstants.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,147 @@
+package com.jboss.transaction.wstf.test ;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * This class contains constants used to map the front end onto
+ * the WS-TX interop tests.
+ * @author kevin
+ */
+public class TestConstants
+{
+ /**
+ * The name of the Service URI parameter.
+ */
+ public static final String PARAM_SERVICE_URI = "serviceuri" ;
+ /**
+ * The name of the test parameter.
+ */
+ public static final String PARAM_TEST = "test" ;
+ /**
+ * The name of the test timeout parameter.
+ */
+ public static final String PARAM_TEST_TIMEOUT = "testTimeout" ;
+ /**
+ * The name of the asynchronous test flag parameter.
+ */
+ public static final String PARAM_ASYNC_TEST = "asyncTest" ;
+
+ /**
+ * The name of the test results attribute.
+ */
+ public static final String ATTRIBUTE_TEST_RESULT = "testResult" ;
+ /**
+ * The name of the test validation attribute.
+ */
+ public static final String ATTRIBUTE_TEST_VALIDATION = "testValidation" ;
+ /**
+ * The name of the log count attribute.
+ */
+ public static final String ATTRIBUTE_LOG_COUNT = "logCount" ;
+ /**
+ * The name of the log name attribute.
+ */
+ public static final String ATTRIBUTE_LOG_NAME = "logName" ;
+
+ /**
+ * test name for all Sc002 tests
+ */
+ public static final String NAME_ALL_TESTS_SC002 = "allSc002" ;
+ /**
+ * The prefix for all Sc007 (AT) tests.
+ */
+ public static final String PREFIX_TESTS_AT = "testSc007" ;
+ /**
+ * The prefix for all Sc002 tests.
+ */
+ public static final String PREFIX_TESTS_SC002 = "testSc002" ;
+
+ /* Sc002 scenario defs */
+
+ /**
+ * test name for Sc002 Scenario 1
+ */
+ public static final String NAME_TEST_SC002_1 = PREFIX_TESTS_SC002 + "_1" ;
+ /**
+ * test description for Sc002 Scenario 1
+ */
+ public static final String DESCRIPTION_TEST_SC002_1 = "1 - Simple Notify : notify(\"Hello-\")" ;
+ /**
+ * test name for Sc002 Scenario 2
+ */
+ public static final String NAME_TEST_SC002_2 = PREFIX_TESTS_SC002 + "_2" ;
+ /**
+ * test description for Sc002 Scenario 2
+ */
+ public static final String DESCRIPTION_TEST_SC002_2 = "1 - Faulting Notify : notify(\"fault\")" ;
+ /**
+ * test name for Sc002 Scenario 3
+ */
+ public static final String NAME_TEST_SC002_3 = PREFIX_TESTS_SC002 + "_3" ;
+ /**
+ * test description for Sc002 Scenario 3
+ */
+ public static final String DESCRIPTION_TEST_SC002_3 = "1 - Simple Echo : echo(\"World\")" ;
+ /**
+ * test name for Sc002 Scenario 4
+ */
+ public static final String NAME_TEST_SC002_4 = PREFIX_TESTS_SC002 + "_4" ;
+ /**
+ * test description for Sc002 Scenario 4
+ */
+ public static final String DESCRIPTION_TEST_SC002_4 = "1 - Faulting Echo : echo(\"fault\")" ;
+ /**
+ * test name for Sc002 Scenario 5
+ */
+ public static final String NAME_TEST_SC002_5 = PREFIX_TESTS_SC002 + "_5" ;
+ /**
+ * test description for Sc002 Scenario 5
+ */
+ public static final String DESCRIPTION_TEST_SC002_5 = "1 - Simple Notify + mu : notify(\"Hello-\")" ;
+ /**
+ * test name for Sc002 Scenario 6
+ */
+ public static final String NAME_TEST_SC002_6 = PREFIX_TESTS_SC002 + "_6" ;
+ /**
+ * test description for Sc002 Scenario 2
+ */
+ public static final String DESCRIPTION_TEST_SC002_6 = "1 - Faulting Notify + mu : notify(\"fault\")" ;
+ /**
+ * test name for Sc002 Scenario 7
+ */
+ public static final String NAME_TEST_SC002_7 = PREFIX_TESTS_SC002 + "_7" ;
+ /**
+ * test description for Sc002 Scenario 7
+ */
+ public static final String DESCRIPTION_TEST_SC002_7 = "1 - Simple Echo + mu : echo(\"World\")" ;
+ /**
+ * test name for Sc002 Scenario 4
+ */
+ public static final String NAME_TEST_SC002_8 = PREFIX_TESTS_SC002 + "_8" ;
+ /**
+ * test description for Sc002 Scenario 8
+ */
+ public static final String DESCRIPTION_TEST_SC002_8 = "1 - Faulting Echo + mu : echo(\"fault\")" ;
+
+ /**
+ * The Sc002 name to description map.
+ */
+ public static final Map DESCRIPTIONS_SC002 ;
+
+ static
+ {
+ final TreeMap descriptionsSc002 = new TreeMap() ;
+
+ descriptionsSc002.put(NAME_TEST_SC002_1, DESCRIPTION_TEST_SC002_1) ;
+ descriptionsSc002.put(NAME_TEST_SC002_2, DESCRIPTION_TEST_SC002_2) ;
+ descriptionsSc002.put(NAME_TEST_SC002_3, DESCRIPTION_TEST_SC002_3) ;
+ descriptionsSc002.put(NAME_TEST_SC002_4, DESCRIPTION_TEST_SC002_4) ;
+ descriptionsSc002.put(NAME_TEST_SC002_5, DESCRIPTION_TEST_SC002_5) ;
+ descriptionsSc002.put(NAME_TEST_SC002_6, DESCRIPTION_TEST_SC002_6) ;
+ descriptionsSc002.put(NAME_TEST_SC002_7, DESCRIPTION_TEST_SC002_7) ;
+ descriptionsSc002.put(NAME_TEST_SC002_8, DESCRIPTION_TEST_SC002_8) ;
+
+ DESCRIPTIONS_SC002 = descriptionsSc002 ;
+ }
+}
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogController.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogController.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogController.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,84 @@
+package com.jboss.transaction.wstf.test;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * The test log controller.
+ * @author kevin
+ */
+public class TestLogController
+{
+ /**
+ * The base directory for logs, hardcoded for now.
+ */
+ private static File baseDir ;
+
+ static
+ {
+ final String userHome = System.getProperty("user.home") ;
+ baseDir = new File(userHome, "logs") ;
+ if (!baseDir.exists())
+ {
+ baseDir.mkdir() ;
+ }
+ }
+
+ /**
+ * Read the contents of the specified log.
+ * @param logName The log to retrieve.
+ * @return The log contents.
+ * @throws IOException for reading errors.
+ */
+ public static String readLog(final String logName)
+ throws IOException
+ {
+ final File logFile = new File(baseDir, logName) ;
+ if (logFile.exists() && logFile.canRead())
+ {
+ final FileReader reader = new FileReader(logFile) ;
+ try
+ {
+ final StringBuffer buffer = new StringBuffer() ;
+ final char[] charBuffer = new char[256] ;
+ while(reader.ready())
+ {
+ final int count = reader.read(charBuffer) ;
+ if (count > 0)
+ {
+ buffer.append(charBuffer, 0, count) ;
+ }
+ }
+ return buffer.toString() ;
+ }
+ finally
+ {
+ reader.close() ;
+ }
+ }
+ throw new IOException("Cannot read log file: " + logName) ;
+ }
+
+ /**
+ * Write the contents of the specified log.
+ * @param logName The log to write.
+ * @param contents The log contents.
+ * @throws IOException for reading errors.
+ */
+ public static void writeLog(final String logName, final String contents)
+ throws IOException
+ {
+ final File logFile = new File(baseDir, logName) ;
+ final FileWriter writer = new FileWriter(logFile) ;
+ try
+ {
+ writer.write(contents) ;
+ }
+ finally
+ {
+ writer.close() ;
+ }
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogServlet.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogServlet.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestLogServlet.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,96 @@
+package com.jboss.transaction.wstf.test;
+
+import com.jboss.transaction.wstf.webservices.util.ClassLoaderHelper;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * The test servlet.
+ * @author kevin
+ */
+public class TestLogServlet extends HttpServlet
+{
+ /**
+ * The servlet serial version UID.
+ */
+ private static final long serialVersionUID = 2566877081747112520L ;
+
+ /**
+ * The not found HTML page.
+ */
+ private String notFoundResponse ;
+ /**
+ * The directory contents HTML page.
+ */
+ private String directoryContents ;
+
+ /**
+ * Initialise the servlet.
+ * @param servletConfig The servlet configuration.
+ */
+ public void init(final ServletConfig servletConfig)
+ throws ServletException
+ {
+ super.init(servletConfig) ;
+ try
+ {
+ notFoundResponse = ClassLoaderHelper.getResourceAsString(TestLogServlet.class, "notFoundResponse.html") ;
+ directoryContents = ClassLoaderHelper.getResourceAsString(TestLogServlet.class, "directoryContents.html") ;
+ }
+ catch (final IOException ioe)
+ {
+ throw new ServletException("Failed to load HTML pages", ioe) ;
+ }
+ }
+
+ /**
+ * Return the specified logs
+ * @param request The HTTP servlet request.
+ * @param response The HTTP servlet response.
+ */
+ protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ final String logName = request.getPathInfo() ;
+ if ((logName == null) || (logName.length() == 0))
+ {
+ response.sendRedirect("logs/") ;
+ return ;
+ }
+ else if ("/".equals(logName))
+ {
+ response.setContentType("text/html") ;
+ response.setStatus(HttpServletResponse.SC_OK) ;
+ response.setContentLength(directoryContents.length()) ;
+ response.getOutputStream().print(directoryContents) ;
+ }
+ else
+ {
+ final String contents ;
+ try
+ {
+ contents = TestLogController.readLog(logName) ;
+ }
+ catch (final Throwable th)
+ {
+ log("Error reading log file", th) ;
+ response.setContentType("text/html") ;
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND) ;
+ response.setContentLength(notFoundResponse.length()) ;
+ response.getOutputStream().print(notFoundResponse) ;
+ return ;
+ }
+
+ response.setContentType("text/xml") ;
+ response.setStatus(HttpServletResponse.SC_OK) ;
+ response.setContentLength(contents.length()) ;
+ response.getOutputStream().print(contents) ;
+ }
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestRunner.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestRunner.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestRunner.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,106 @@
+package com.jboss.transaction.wstf.test;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import com.jboss.transaction.wstf.interop.*;
+
+/**
+ * Class responsible for executing the appropriate JUnit test.
+ * @author kevin
+ */
+public class TestRunner
+{
+ /**
+ * The log message prefix.
+ */
+ private static final String LOG_MESSAGE_PREFIX = "<log:log xmlns:log=\"http://docs.oasis-open.org/ws-tx/logs/\">" ;
+ /**
+ * The log message suffix.
+ */
+ private static final String LOG_MESSAGE_SUFFIX = "</log:log>";
+
+ /**
+ * The Sc002 test class.
+ */
+ private static final Class SC002_TEST_CLASS = Sc002TestCase.class ;
+
+ /**
+ * Execute the specific test against the specified participant.
+ * @param participantURI The URI of the participant.
+ * @param testTimeout The test timeout.
+ * @param asyncTest The asynchronous test flag.
+ * @param testName The name of the test to execute.
+ * @return The test result.
+ */
+ public static TestResult execute(final String participantURI, final long testTimeout, final boolean asyncTest, final String testName)
+ {
+ MessageLogging.clearThreadLog() ;
+ final Test test ;
+ if (TestConstants.NAME_ALL_TESTS_SC002.equals(testName))
+ {
+ final TestSuite testSuite = new TestSuite() ;
+ testSuite.addTest(new InteropTestSuite(participantURI, testTimeout, asyncTest, SC002_TEST_CLASS)) ;
+ test = testSuite ;
+ }
+ else if (testName.startsWith(TestConstants.PREFIX_TESTS_SC002))
+ {
+ final Class testClass = SC002_TEST_CLASS;
+ try
+ {
+ test = createTest(testClass, participantURI, testTimeout, asyncTest, testName) ;
+ }
+ catch (final Throwable th)
+ {
+ System.err.println("Unexpected error instantiating test class: " + th) ;
+ return null ;
+ }
+ }
+ else
+ {
+ System.err.println("Unidentified test name: " + testName) ;
+ return null ;
+ }
+ MessageLogging.appendThreadLog(LOG_MESSAGE_PREFIX) ;
+ final TestResult testResult = new TestResult() ;
+ test.run(testResult) ;
+ MessageLogging.appendThreadLog(LOG_MESSAGE_SUFFIX) ;
+ return testResult ;
+ }
+
+ /**
+ * Create the test instance.
+ * @param testClass The test class name.
+ * @param participantURI The participant URI.
+ * @param testTimeout The test timeout.
+ * @param asyncTest The asynchronous test flag.
+ * @param testName The test name.
+ * @return The test instance.
+ * @throws IllegalAccessException For access exception instantiating the test class.
+ * @throws InstantiationException For errors instantiating the test class.
+ * @throws IllegalArgumentException For an invalid test class.
+ */
+ private static TestCase createTest(final Class testClass, final String participantURI, final long testTimeout, final boolean asyncTest, final String testName)
+ throws IllegalAccessException, InstantiationException, IllegalArgumentException
+ {
+ final Object testObject = testClass.newInstance() ;
+ if (testObject instanceof InteropTestCase)
+ {
+ final InteropTestCase interopTestCase = (InteropTestCase)testObject ;
+ interopTestCase.setParticipantURI(participantURI) ;
+ interopTestCase.setTestTimeout(testTimeout) ;
+ interopTestCase.setAsyncTest(asyncTest) ;
+ interopTestCase.setName(testName) ;
+ return interopTestCase ;
+ }
+ else if (testObject instanceof TestCase)
+ {
+ final TestCase test = (TestCase)testObject ;
+ test.setName(testName) ;
+ return test ;
+ }
+ throw new IllegalArgumentException("Invalid class: " + testClass.getName()) ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestServlet.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestServlet.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/TestServlet.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,209 @@
+package com.jboss.transaction.wstf.test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.servlet.RequestDispatcher;
+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.servlet.http.HttpSession;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestResult;
+
+import com.jboss.transaction.wstf.interop.MessageLogging;
+import com.jboss.transaction.wstf.webservices.util.ClassLoaderHelper;
+
+/**
+ * The test servlet.
+ * @author kevin
+ */
+public class TestServlet extends HttpServlet
+{
+ /**
+ * The servlet serial version UID.
+ */
+ private static final long serialVersionUID = 6764303043215036856L ;
+
+ /**
+ * The validation templates.
+ */
+ private Templates validationTemplates ;
+
+ /**
+ * Initialise the servlet.
+ * @param config The servlet configuration.
+ */
+ public void init(final ServletConfig config)
+ throws ServletException
+ {
+ super.init(config) ;
+
+ final InputStream is = ClassLoaderHelper.getResourceAsStream(getClass(), "processor.xsl") ;
+ if (is == null)
+ {
+ throw new ServletException("Cannot locate transformation stylesheet") ;
+ }
+ final TransformerFactory factory = TransformerFactory.newInstance() ;
+ try
+ {
+ validationTemplates = factory.newTemplates(new StreamSource(is)) ;
+ }
+ catch (final TransformerConfigurationException tce)
+ {
+ throw new ServletException("Error creating transformation template!", tce) ;
+ }
+ }
+
+ /**
+ * Execute the test
+ * @param request The HTTP servlet request.
+ * @param response The HTTP servlet response.
+ */
+ protected void doPost(final HttpServletRequest request, final HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ final String serviceURI = request.getParameter(TestConstants.PARAM_SERVICE_URI) ;
+ final String test = request.getParameter(TestConstants.PARAM_TEST) ;
+ final String testTimeoutValue = request.getParameter(TestConstants.PARAM_TEST_TIMEOUT) ;
+ // final String asyncTestValue = request.getParameter(TestConstants.PARAM_ASYNC_TEST) ;
+
+ final int serviceURILength = (serviceURI == null ? 0 : serviceURI.length()) ;
+ final int testLength = (test == null ? 0 : test.length()) ;
+
+ long testTimeout = 0 ;
+
+ boolean testTimeoutValid = false ;
+ if ((testTimeoutValue != null) && (testTimeoutValue.length() > 0))
+ {
+ try
+ {
+ testTimeout = Long.parseLong(testTimeoutValue) ;
+ testTimeoutValid = true ;
+ }
+ catch (final NumberFormatException nfe) {} // ignore
+ }
+
+ // final boolean asyncTest = (asyncTestValue != null) ;
+ final boolean asyncTest = true ;
+
+ if ((serviceURILength == 0) || (testLength == 0) || !testTimeoutValid)
+ {
+ final RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/invalidParameters.html") ;
+ dispatcher.forward(request, response) ;
+ return ;
+ }
+
+ final HttpSession session = request.getSession() ;
+ final String id = session.getId() ;
+ final int logCount = getLogCount(session) ;
+ final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss") ;
+ final String date = format.format(new Date()) ;
+ final String logName = date + "-" + id + "-" + logCount ;
+
+ session.setAttribute(TestConstants.ATTRIBUTE_TEST_RESULT, null) ;
+ session.setAttribute(TestConstants.ATTRIBUTE_TEST_VALIDATION, null) ;
+ session.setAttribute(TestConstants.ATTRIBUTE_LOG_NAME, null) ;
+
+ final String threadLog ;
+ try
+ {
+ final TestResult result = TestRunner.execute(serviceURI, testTimeout, asyncTest, test) ;
+ if (result != null)
+ {
+ session.setAttribute(TestConstants.ATTRIBUTE_TEST_RESULT, result) ;
+
+ threadLog = MessageLogging.getThreadLog() ;
+
+ try
+ {
+ TestLogController.writeLog(logName, threadLog) ;
+ session.setAttribute(TestConstants.ATTRIBUTE_LOG_NAME, logName) ;
+ }
+ catch (final IOException ioe)
+ {
+ log("Unexpected IOException writing message log", ioe) ;
+ }
+ }
+ else
+ {
+ threadLog = null ;
+ }
+ }
+ finally
+ {
+ MessageLogging.clearThreadLog() ;
+ }
+
+ if ((threadLog != null) && (threadLog.length() > 0))
+ {
+ try
+ {
+ final String testValidation = transform(threadLog) ;
+ session.setAttribute(TestConstants.ATTRIBUTE_TEST_VALIDATION, testValidation) ;
+ }
+ catch (final Throwable th)
+ {
+ log("Unexpected throwable transforming message log", th) ;
+ }
+ }
+
+ String forwardingURI;
+ if (test.indexOf("Sc002") > 0) {
+ forwardingURI = "/sc002/results.jsp";
+ } else if (test.indexOf("Sc003") > 0) {
+ forwardingURI = "/sc003/results.jsp";
+ } else {
+ // should never happen!
+ forwardingURI = "/";
+ }
+ final RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(forwardingURI) ;
+ dispatcher.forward(request, response) ;
+ }
+
+ /**
+ * Get the log count from the session, incrementing afterwards.
+ * @param session The current HTTP session.
+ * @return The log count.
+ */
+ private int getLogCount(final HttpSession session)
+ {
+ final Object logCountObject = session.getAttribute(TestConstants.ATTRIBUTE_LOG_COUNT) ;
+ final int logCount = (logCountObject == null ? 1 : ((Integer)logCountObject).intValue() + 1) ;
+ session.setAttribute(TestConstants.ATTRIBUTE_LOG_COUNT, new Integer(logCount)) ;
+ return logCount ;
+ }
+
+ /**
+ * Transform the specified message log.
+ * @param messageLog The specified message log.
+ * @return The transformed result.
+ * @throws TransformerConfigurationException For transformer configuration errors.
+ * @throws TransformerException The transformation errors.
+ */
+ private String transform(final String messageLog)
+ throws TransformerConfigurationException, TransformerException
+ {
+ final Source source = new StreamSource(new StringReader(messageLog)) ;
+ final Transformer transformer = validationTemplates.newTransformer() ;
+ final StringWriter writer = new StringWriter() ;
+ final Result result = new StreamResult(writer) ;
+ transformer.transform(source, result) ;
+ return writer.toString() ;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/directoryContents.html
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/directoryContents.html (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/directoryContents.html 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,25 @@
+<html>
+ <head>
+ <title>JBoss Transaction WS-TX interop results</title>
+ </head>
+ <body>
+ <h1>WS-TX Interop results</h1>
+ <!--
+ <p>These log files are the results of executing the JBoss Transaction WS-TX Interop client against public endpoints</p>
+ <table>
+ <thead>
+ <tr><td>Endpoint</td><td>Log file</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>JBoss</td><td><a href="jboss-jboss.xml">jboss-jboss.xml</a></td></tr>
+ <tr><td>IBM</td><td><a href="jboss-ibm.xml">jboss-ibm.xml</a></td></tr>
+ <tr><td>Sun</td><td><a href="jboss-sun.xml">jboss-sun.xml</a></td></tr>
+ <tr><td>Microsoft</td><td><a href="jboss-msft.xml">jboss-msft.xml</a></td></tr>
+ <tr><td>Apache</td><td><a href="jboss-apache.xml">jboss-apache.xml</a></td></tr>
+ <tr><td>WSO2</td><td><a href="jboss-wso2.xml">jboss-wso2.xml</a></td></tr>
+ </tbody>
+ </table>
+ -->
+ <p>Please send any queries to the <a href="mailto:adinn at redhat.com?subject=Log%20results%20query">wstf test contact</a></p>
+ </body>
+</html>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/notFoundResponse.html
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/notFoundResponse.html (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/notFoundResponse.html 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,9 @@
+<html>
+ <head>
+ <title>Log file not found</title>
+ </head>
+ <body>
+ <h1>Log file not found</h1>
+ Requested log file could not be found
+ </body>
+</html>
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/processor.xsl
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/processor.xsl (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/test/processor.xsl 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,3 @@
+<xsl:transform
+ id = "empty" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+</xsl:transform>
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/ServiceRegistry.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/ServiceRegistry.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/ServiceRegistry.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.jboss.transaction.wstf.webservices;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * A registry of service providers for the WSTF Test Services.
+ * @author kevin
+ */
+public class ServiceRegistry
+{
+ /**
+ * The registry singleton.
+ */
+ private static final ServiceRegistry REGISTRY = new ServiceRegistry() ;
+
+ /**
+ * The SOAP service provider registry.
+ */
+ private final Map<String, String> serviceProviderRegistry = new TreeMap<String, String>() ;
+
+ /**
+ * Get the service registry.
+ * @return The service registry.
+ */
+ public static ServiceRegistry getRegistry()
+ {
+ return REGISTRY ;
+ }
+
+ /**
+ * Register the specified service.
+ * @param serviceName The service name.
+ * @param url The service url.
+ */
+ public void registerServiceProvider(final String serviceName, final String url)
+ {
+ synchronized(serviceProviderRegistry)
+ {
+ serviceProviderRegistry.put(serviceName, url) ;
+ }
+ }
+
+ /**
+ * Remove the specified service.
+ * @param serviceName The service name.
+ */
+ public void removeServiceProvider(final String serviceName)
+ {
+ synchronized(serviceProviderRegistry)
+ {
+ serviceProviderRegistry.remove(serviceName) ;
+ }
+ }
+
+ /**
+ * Get the service URI.
+ * @param serviceName The service name.
+ * @return The service URI or null if not registered.
+ */
+ public String getServiceURI(final String serviceName)
+ {
+ String uri;
+
+ synchronized(serviceProviderRegistry)
+ {
+ uri = serviceProviderRegistry.get(serviceName) ;
+ }
+
+ return uri;
+ }
+}
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/Sc002Constants.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/Sc002Constants.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/Sc002Constants.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,69 @@
+package com.jboss.transaction.wstf.webservices.sc002;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Interface containing WS-TX AT Interop constants.
+ */
+public interface Sc002Constants
+{
+ /**
+ * The sc002 test initiator service name.
+ */
+ final static public String SERVICE_SC002 = "Sc002Service" ;
+
+ /**
+ * The sc002 Namespace.
+ */
+ final static public String SC002_NAMESPACE = "http://www.wstf.org/docs/scenarios/sc002" ;
+ /**
+ * The sc002 namespace prefix.
+ */
+ final static public String SC002_PREFIX = "sc002" ;
+ /**
+ * The sc002 SOAP 1.1 port name.
+ */
+ final static public String SC002_SOAP11_PORT_NAME = "soap11port" ;
+
+ /**
+ * The sc002 SOAP 1.1 port qname.
+ */
+ final static public QName SC002_SOAP11_PORT_QNAME = new QName(SC002_NAMESPACE, SC002_SOAP11_PORT_NAME, SC002_PREFIX);
+
+ /**
+ * The sc002 SOAP 1.1 port name.
+ */
+ final static public String SC002_SOAP12_PORT_NAME = "soap12port" ;
+
+ /**
+ * The sc002 SOAP 1.1 port qname.
+ */
+ final static public QName SC002_SOAP12_PORT_QNAME = new QName(SC002_NAMESPACE, SC002_SOAP12_PORT_NAME, SC002_PREFIX);
+
+ /**
+ * The sc002 SessionID header name.
+ */
+ final static public String SC002_HEADER_SESSIONID_NAME = "SessionID" ;
+
+ /**
+ * The sc002 SessionID header qname.
+ */
+ final static public QName SC002_HEADER_SESSIONID_QNAME = new QName(SC002_NAMESPACE, SC002_HEADER_SESSIONID_NAME, SC002_PREFIX);
+
+ /**
+ * The sc002 TestMustUnderstand header name.
+ */
+ final static public String SC002_HEADER_TESTMU_NAME = "TestMU" ;
+
+ /**
+ * The sc002 TestMustUnderstand header qname.
+ */
+ final static public QName SC002_HEADER_TESTMU_QNAME = new QName(SC002_NAMESPACE, SC002_HEADER_TESTMU_NAME, SC002_PREFIX);
+
+ /**
+ * message context property used to identify conversation between client and server
+ */
+
+ String SC002_CONVERSATION_IDENTIFIER = "conversation.identifier";
+ String SC002_ADDMU_HEADER = "add.must.understand.header";
+}
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002Client.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002Client.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002Client.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,61 @@
+package com.jboss.transaction.wstf.webservices.sc002.client;
+
+import org.wstf.docs.scenarios.sc002.Sc002Service;
+import org.wstf.docs.scenarios.sc002.Sc002Port;
+
+import javax.xml.ws.addressing.*;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.handler.Handler;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+
+import com.jboss.transaction.wstf.webservices.sc002.Sc002Constants;
+import com.jboss.transaction.wstf.webservices.sc002.client.Sc002ClientHandler;
+
+/**
+ * class to provide access to Sc002 service fro Sc002 test code
+ */
+public class Sc002Client
+{
+ // TODO -- do we really need a thread local here or can we just use one service?
+ /**
+ * thread local which maintains a per thread Sc002 service instance
+ */
+ private static ThreadLocal<Sc002Service> sc002Service = new ThreadLocal<Sc002Service>();
+
+ /**
+ * builder used to construct addressing info for calls
+ */
+ private static AddressingBuilder builder = AddressingBuilder.getAddressingBuilder();
+
+ /**
+ * fetch an Sc002 service unique to the current thread
+ * @return
+ */
+ private static synchronized Sc002Service getSc002Service()
+ {
+ if (sc002Service.get() == null) {
+ sc002Service.set(new Sc002Service());
+ }
+ return sc002Service.get();
+ }
+
+ public static Sc002Port getSc002Port(String toUri, String conversationId, boolean addMUHeader)
+ {
+ // TODO - we need the 2.1 verison of Service so we can specify that we want to use the WS Addressing feature
+ Sc002Service service = getSc002Service();
+ Sc002Port port = service.getPort(Sc002Constants.SC002_SOAP11_PORT_QNAME, Sc002Port.class);
+ BindingProvider bindingProvider = (BindingProvider)port;
+ List<Handler> customHandlerChain = new ArrayList<Handler>();
+ customHandlerChain.add(new Sc002ClientHandler());
+ bindingProvider.getBinding().setHandlerChain(customHandlerChain);
+
+ Map<String, Object> requestContext = bindingProvider.getRequestContext();
+ requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, toUri);
+ requestContext.put(Sc002Constants.SC002_CONVERSATION_IDENTIFIER, conversationId);
+ requestContext.put(Sc002Constants.SC002_ADDMU_HEADER, addMUHeader);
+
+ return port;
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002ClientHandler.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002ClientHandler.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/client/Sc002ClientHandler.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,163 @@
+package com.jboss.transaction.wstf.webservices.sc002.client;
+
+import com.jboss.transaction.wstf.webservices.sc002.Sc002Constants;
+import com.jboss.transaction.wstf.proxy.ProxyConversation;
+
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.namespace.QName;
+import javax.xml.soap.*;
+import java.util.Set;
+import java.util.Collections;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ */
+public class Sc002ClientHandler implements SOAPHandler<SOAPMessageContext>
+{
+ /**
+ * Gets the header blocks that can be processed by this Handler
+ * instance.
+ *
+ * @return Set of QNames of header blocks processed by this
+ * handler instance. <code>QName</code> is the qualified
+ * name of the outermost element of the Header block.
+ */
+ public Set<QName> getHeaders() {
+ return Collections.singleton(Sc002Constants.SC002_HEADER_SESSIONID_QNAME);
+ }
+
+ /**
+ * The <code>handleMessage</code> method is invoked for normal processing
+ * of inbound and outbound messages. Refer to the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context.
+ * @return An indication of whether handler processing should continue for
+ * the current message
+ * <ul>
+ * <li>Return <code>true</code> to continue
+ * processing.</li>
+ * <li>Return <code>false</code> to block
+ * processing.</li>
+ * </ul>
+ * @throws RuntimeException Causes the JAX-WS runtime to cease
+ * handler processing and generate a fault.
+ * @throws javax.xml.ws.ProtocolException Causes the JAX-WS runtime to switch to
+ * fault message processing.
+ */
+ public boolean handleMessage(SOAPMessageContext context)
+ {
+ SOAPMessage message = context.getMessage();
+
+ handleMustUnderstand(context, message);
+ handleConversation(context, message);
+
+ return true;
+ }
+
+ /**
+ * The <code>handleFault</code> method is invoked for fault message
+ * processing. Refer to the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context
+ * @return An indication of whether handler fault processing should continue
+ * for the current message
+ * <ul>
+ * <li>Return <code>true</code> to continue
+ * processing.</li>
+ * <li>Return <code>false</code> to block
+ * processing.</li>
+ * </ul>
+ * @throws RuntimeException Causes the JAX-WS runtime to cease
+ * handler fault processing and dispatch the fault.
+ * @throws javax.xml.ws.ProtocolException Causes the JAX-WS runtime to cease
+ * handler fault processing and dispatch the fault.
+ */
+ public boolean handleFault(SOAPMessageContext context)
+ {
+ SOAPMessage message = context.getMessage();
+
+ // no need to add must understand ehaders for faults just append to the conversation
+
+ handleConversation(context, message);
+
+ return true;
+ }
+
+ /**
+ * Called at the conclusion of a message exchange pattern just prior to
+ * the JAX-WS runtime disptaching a message, fault or exception. Refer to
+ * the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context
+ */
+ public void close(MessageContext context)
+ {
+ // do nothing
+ }
+
+ private void handleMustUnderstand(SOAPMessageContext context, SOAPMessage message)
+ {
+ // if this is outbound and the context contains a must understand property
+ // with value true then add a must understand header
+
+ Boolean isOutBound = (Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+
+ if (isOutBound != null && isOutBound) {
+ Boolean addMustUnderstand = (Boolean)context.get(Sc002Constants.SC002_ADDMU_HEADER);
+
+ if (addMustUnderstand != null && addMustUnderstand) {
+ try {
+ SOAPPart soapPart = message.getSOAPPart();
+ SOAPEnvelope envelope = soapPart.getEnvelope();
+ SOAPHeader header = envelope.getHeader();
+ if (header == null) {
+ header = envelope.addHeader();
+ }
+
+ SOAPHeaderElement headerElement = header.addHeaderElement(Sc002Constants.SC002_HEADER_TESTMU_QNAME);
+ headerElement.setMustUnderstand(true);
+ } catch (SOAPException e) {
+ // just ignore
+ System.out.println("soap exception adding must understand header : " + e);
+ }
+ }
+ }
+ }
+
+ private void handleConversation(SOAPMessageContext context, SOAPMessage message)
+ {
+ // update the conversation id if attached to the context or use the last one provided
+
+ String id = (String) context.get(Sc002Constants.SC002_CONVERSATION_IDENTIFIER);
+
+ if (id != null) {
+ conversationId = id;
+ }
+
+ if (conversationId != null) {
+ // add the message to the conversation log
+
+ // we need to add the message to the conversation as a string
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ try {
+ message.writeTo(baos);
+ String messageString = baos.toString();
+ ProxyConversation.appendConversation(conversationId, messageString);
+ } catch (SOAPException e) {
+ // print error and continue
+ ProxyConversation.appendConversation(conversationId, "<error> could not log message : " + e + "</error>");
+ } catch (IOException e) {
+ ProxyConversation.appendConversation(conversationId, "<error> could not log message : " + e + "</error>");
+ }
+ }
+ }
+
+ private String conversationId = null;
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/sei/Sc002PortImpl.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/sei/Sc002PortImpl.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/sei/Sc002PortImpl.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,399 @@
+package com.jboss.transaction.wstf.webservices.sc002.sei;
+
+import org.wstf.docs.scenarios.sc002.*;
+
+import javax.jws.*;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.namespace.QName;
+import java.util.*;
+
+/**
+ * Imnplementation class for WSTF scenario sc002 port SEI Scoo2Port
+ */
+ at WebService(name = "sc002Port",
+ targetNamespace = "http://www.wstf.org/docs/scenarios/sc002",
+ wsdlLocation="/WEB-INF/wsdl/sc002.wsdl",
+ portName = "soap11port",
+ serviceName="sc002Service")
+ at SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+// @HandlerChain(file="sc002handlers.xml")
+public class Sc002PortImpl implements Sc002Port
+{
+ /**
+ * @param sessionData
+ * @param begin
+ * @return returns org.wstf.docs.scenarios.sc002.BeginResponseType
+ */
+ @WebMethod(operationName = "Begin", action = "http://www.wstf.org/docs/scenarios/sc002/Begin")
+ @WebResult(name = "BeginResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "BeginResponse")
+ public BeginResponseType begin(@WebParam(name = "Begin", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Begin")
+ BeginType begin, @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData) {
+ String id = sessionData.getID();
+ beginSession(id);
+ return new BeginResponseType();
+ }
+
+ /**
+ * @param sessionData
+ * @param notify
+ */
+ @WebMethod(operationName = "Notify", action = "http://www.wstf.org/docs/scenarios/sc002/Notify")
+ @Oneway
+ public void notify(@WebParam(name = "Notify", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Notify")
+ NotifyType notify, @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData) {
+ String id = sessionData.getID();
+ String text = notify.getText();
+ if (FAULTSTRING.equals(text)) {
+ throw new WebServiceException("faultingNotify");
+ } else {
+ notify(id, text);
+ }
+ }
+
+ /**
+ * @param sessionData
+ * @param echo
+ * @return returns org.wstf.docs.scenarios.sc002.EchoResponseType
+ */
+ @WebMethod(operationName = "Echo", action = "http://www.wstf.org/docs/scenarios/sc002/Echo")
+ @WebResult(name = "EchoResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "EchoResponse")
+ public EchoResponseType echo(@WebParam(name = "Echo", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Echo")
+ EchoType echo, @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData) {
+ String id = sessionData.getID();
+ String text = echo.getText();
+ if (FAULTSTRING.equals(text)) {
+ throw new WebServiceException("faultingEcho");
+ } else {
+ String replyText = echo(id, text);
+ EchoResponseType response = new EchoResponseType();
+ response.setText(replyText);
+ return response;
+ }
+ }
+
+ /**
+ * @param sessionData
+ * @param end
+ * @return returns org.wstf.docs.scenarios.sc002.EndResponseType
+ */
+ @WebMethod(operationName = "End", action = "http://www.wstf.org/docs/scenarios/sc002/End")
+ @WebResult(name = "EndResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "EndResponse")
+ public EndResponseType end(@WebParam(name = "End", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "End")
+ EndType end, @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData) {
+ String id = sessionData.getID();
+ end(id);
+ return new EndResponseType();
+ }
+
+ /**
+ * @param sendMessages
+ * @return returns org.wstf.docs.scenarios.sc002.SendMessagesResponseType
+ */
+ @WebMethod(operationName = "SendMessages", action = "http://www.wstf.org/docs/scenarios/sc002/SendMessages")
+ @WebResult(name = "SendMessagesResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "SendMessagesResponse")
+ public SendMessagesResponseType sendMessages(@WebParam(name = "SendMessages", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "SendMessages")
+ SendMessagesType sendMessages) {
+ W3CEndpointReference epr = sendMessages.getEpr();
+ SendMessagesType.Messages messages = sendMessages.getMessages();
+ messages(epr, messages);
+ return new SendMessagesResponseType();
+ }
+
+ /******************************************************************************************/
+ /* implementation of service */
+ /******************************************************************************************/
+
+ /**
+ * class used to respresent an active client session keyed by the session id supplied
+ * in the begin, echo, notify and end messages
+ */
+ class Session implements Comparable
+ {
+ /**
+ * timeout in milliseconds after which we may legitimately purge data associated
+ * with a given session
+ */
+ static final long TIMEOUT = 50 * 1000; // milliseconds
+ /**
+ * the key used to identify a session
+ */
+ private String id;
+ /**
+ * the text string accumulated from requests associated with this session
+ */
+ private String text;
+ /**
+ * the sytsem time (in milliseconds) after which this session can legitimately be purged
+ */
+ private long bestBefore; // system time in milliseconds
+
+ /**
+ * create a session with the given identifier
+ * @param id the session identifier
+ */
+ Session(String id)
+ {
+ this.id = id;
+ this.text = null;
+ this.bestBefore = System.currentTimeMillis() + TIMEOUT;
+ }
+
+ /**
+ * Compares this object with the specified object for order. Returns a
+ * negative integer, zero, or a positive integer as this object is less
+ * than, equal to, or greater than the specified object.<p>
+ * <p/>
+ * In the foregoing description, the notation
+ * <tt>sgn(</tt><i>expression</i><tt>)</tt> designates the mathematical
+ * <i>signum</i> function, which is defined to return one of <tt>-1</tt>,
+ * <tt>0</tt>, or <tt>1</tt> according to whether the value of <i>expression</i>
+ * is negative, zero or positive.
+ * <p/>
+ * The implementor must ensure <tt>sgn(x.compareTo(y)) ==
+ * -sgn(y.compareTo(x))</tt> for all <tt>x</tt> and <tt>y</tt>. (This
+ * implies that <tt>x.compareTo(y)</tt> must throw an exception iff
+ * <tt>y.compareTo(x)</tt> throws an exception.)<p>
+ * <p/>
+ * The implementor must also ensure that the relation is transitive:
+ * <tt>(x.compareTo(y)>0 && y.compareTo(z)>0)</tt> implies
+ * <tt>x.compareTo(z)>0</tt>.<p>
+ * <p/>
+ * Finally, the implementer must ensure that <tt>x.compareTo(y)==0</tt>
+ * implies that <tt>sgn(x.compareTo(z)) == sgn(y.compareTo(z))</tt>, for
+ * all <tt>z</tt>.<p>
+ * <p/>
+ * It is strongly recommended, but <i>not</i> strictly required that
+ * <tt>(x.compareTo(y)==0) == (x.equals(y))</tt>. Generally speaking, any
+ * class that implements the <tt>Comparable</tt> interface and violates
+ * this condition should clearly indicate this fact. The recommended
+ * language is "Note: this class has a natural ordering that is
+ * inconsistent with equals."
+ *
+ * @param o the Object to be compared.
+ * @return a negative integer, zero, or a positive integer as this object
+ * is less than, equal to, or greater than the specified object.
+ * @throws ClassCastException if the specified object's type prevents it
+ * from being compared to this Object.
+ */
+ public int compareTo(Object o) {
+ Session other = (Session)o;
+
+ if (this.bestBefore < other.bestBefore) {
+ return -1;
+ }
+ if (this.bestBefore > other.bestBefore) {
+ return 1;
+ }
+
+ return 0;
+ }
+
+ /**
+ * get the identifier for this session
+ * @return the identifier for this session
+ */
+ public String getId()
+ {
+ return id;
+ }
+
+ /**
+ * get the text string accumulated from requests associated with this session or
+ * the empty string if no requests have been made yet
+ * @return the accumulated text
+ */
+ public synchronized String getText()
+ {
+ return (text == null ? "" : text);
+ }
+
+ /**
+ * append a string to the text string accumulated from requests associated with this
+ * session trimming any whitespace before appending it
+ * @param text the text to be trimmed and appended
+ * @return the new value of the accumulated text
+ */
+ public synchronized String appendText(String text)
+ {
+ this.text = (this.text == null ? text.trim() : this.text + text.trim());
+
+ return this.text;
+ }
+ }
+
+ /**
+ * a text string which causes a fault to be thrown when supplied as the argument to an
+ * echo or notify request
+ */
+ final private static String FAULTSTRING = "fault";
+ /**
+ * a map containing all currently active sessions keyed by session id
+ */
+ private static HashMap<String, Session> sessionMap = new HashMap<String, Session>();
+ /**
+ * a sorted set of all active sessions sorted by earliest bestBeforeDate
+ *
+ * n.b. updates to this map only occur when synchronized on sessionMap since both fields
+ * must always contain exactly the same set of elements
+ */
+ private SortedSet<Session> timeouts = new TreeSet<Session>();
+
+ /**
+ * implements the begin operation by ensuring that a session exists
+ * @param id the session to reate if not already present
+ */
+ private void beginSession(String id)
+ {
+ // n.b. we don't actually check that the session is not present although this is
+ // sort of implied in the spec
+ getSession(id);
+ }
+
+ /**
+ * implements the notify operation by creating a session if needed then appending the
+ * supplied text to it
+ * @param id the session with which the text is associated
+ * @param text the text to be appended to the session
+ */
+ private void notify(String id, String text)
+ {
+ Session session = getSession(id);
+
+ session.appendText(text);
+ }
+
+ /**
+ * implements the echo operation by creating a session if needed then appending the
+ * supplied text to it and returning the resulting text, purging the session on the
+ * way out.
+ * @param id the session with which the text is associated
+ * @param text the text to be appended to the session
+ * @return the accumulated text for the session
+ */
+ private String echo(String id, String text)
+ {
+ Session session = getSession(id);
+
+ String result = session.appendText(text);
+
+ // n.b. we don't concern ourselves with the possibility that a concurrent update
+ // to the session might happen before we can purge it
+
+ purgeSession(session);
+
+ return result;
+ }
+
+ /**
+ * implements the end operation by purging a session from the session map
+ * @param id the session to be purged
+ * @throws WebServiceException if the session is not found
+ */
+ private void end(String id) throws WebServiceException
+ {
+ Session session = getSession(id, false);
+ if (session != null) {
+ purgeSession(session);
+ } else {
+ throw new WebServiceException("unknown session " + id);
+ }
+ }
+
+ /**
+ * implements the sendMessages operation by queueing a task to post the messages to the
+ * supplied endpoint
+ * @param epr an endpoint which implements the required service/port
+ * @param messages the messages to be dispatched along with the service,
+ * port and operation name identifying the operation to be invoked.
+ */
+ private void messages(W3CEndpointReference epr, SendMessagesType.Messages messages)
+ {
+ final List<MessageType> messagesToDo = messages.getMessage();
+ Thread runner = new Thread() {
+ private List<MessageType> messages = messagesToDo;
+ public void run()
+ {
+ ListIterator<MessageType> iterator = messages.listIterator();
+ while (iterator.hasNext()) {
+ MessageType message = iterator.next();
+ QName serviceName = message.getService();
+ String portName = message.getPort();
+ String operationName = message.getOperation();
+ }
+ }
+ };
+ }
+
+ /**
+ * retrieve an existing session with the given id or create a new one if there is not
+ * one already present.
+ * @param id the id of the desired session
+ * @return an existing session with the given id or a new one if there is not one
+ * already present.
+ */
+ private Session getSession(String id)
+ {
+ return getSession(id, true);
+ }
+
+ /**
+ * retrieve an existing session with the given id or else either create a new one if there
+ * is not one already present or return null depending upon whether create is, respectively,
+ * true or false.
+ * @param id the id of the desired session
+ * @param create true if a new session shoudl be created if none is found
+ * @return an existing session with the given id or a new one if there is not one
+ * already present and create is true or null if there is not one already present and
+ * create si false.
+ */
+ private Session getSession(String id, boolean create)
+ {
+ Session session;
+
+ synchronized (sessionMap) {
+ session = sessionMap.get(id);
+ if (session == null && create) {
+ session = new Session(id);
+ sessionMap.put(id, session);
+ timeouts.add(session);
+ }
+
+ // purge any timed out sessions while we are here
+
+ long timeNow = System.currentTimeMillis();
+
+ while (!timeouts.isEmpty()) {
+ Session first = timeouts.first();
+ if (first.bestBefore < timeNow) {
+ sessionMap.remove(first);
+ timeouts.remove(first);
+ } else {
+ break;
+ }
+ }
+ }
+
+ return session;
+ }
+
+ /**
+ * remove a session from the session map and timeouts list if it is present and take
+ * the opportunity to garbage collect any sessions whose bestBeforeDtae has now expired.
+ * @param session
+ */
+ private void purgeSession(Session session)
+ {
+ synchronized (sessionMap) {
+ if (sessionMap.remove(session.getId()) != null) {
+ // means there must also be an entry in timeouts
+ timeouts.remove(session);
+ }
+ }
+ }
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/server/Sc002Initialisation.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/server/Sc002Initialisation.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/sc002/server/Sc002Initialisation.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,39 @@
+package com.jboss.transaction.wstf.webservices.sc002.server;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.ServletContext;
+
+import com.jboss.transaction.wstf.webservices.sc002.Sc002Constants;
+import com.jboss.transaction.wstf.webservices.ServiceRegistry;
+
+/**
+ * Initialise the interop initiator service.
+ * @author kevin
+ */
+public class Sc002Initialisation implements ServletContextListener
+{
+ /**
+ * The context has been initialized.
+ * @param servletContextEvent The servlet context event.
+ */
+ public void contextInitialized(final ServletContextEvent servletContextEvent)
+ {
+ ServletContext context = servletContextEvent.getServletContext();
+ String baseURI = context.getInitParameter("BaseURI");
+ final String uri = baseURI + "/sc002/Sc002Service";
+
+ final ServiceRegistry serviceRegistry = ServiceRegistry.getRegistry() ;
+ serviceRegistry.registerServiceProvider(Sc002Constants.SERVICE_SC002, uri) ;
+ }
+
+ /**
+ * The context is about to be destroyed.
+ * @param servletContextEvent The servlet context event.
+ */
+ public void contextDestroyed(final ServletContextEvent servletContextEvent)
+ {
+ final ServiceRegistry serviceRegistry = ServiceRegistry.getRegistry() ;
+ serviceRegistry.removeServiceProvider(Sc002Constants.SERVICE_SC002) ;
+ }
+}
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/util/ClassLoaderHelper.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/util/ClassLoaderHelper.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/com/jboss/transaction/wstf/webservices/util/ClassLoaderHelper.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,161 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.jboss.transaction.wstf.webservices.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+
+/**
+ * Utility class for classloading.
+ * @author kevin
+ */
+public class ClassLoaderHelper
+{
+ /**
+ * Attempt to load the named class.
+ * @param caller The caller's class.
+ * @param className The name of the class.
+ * @return The class
+ * @throws ClassNotFoundException If the class cannot be found.
+ */
+ public static Class forName(final Class caller, final String className)
+ throws ClassNotFoundException
+ {
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader() ;
+ if (contextClassLoader != null)
+ {
+ try
+ {
+ return contextClassLoader.loadClass(className) ;
+ }
+ catch (final ClassNotFoundException cnfe) {} // Ignore
+ }
+ final ClassLoader callerClassLoader = caller.getClassLoader() ;
+ try
+ {
+ return callerClassLoader.loadClass(className) ;
+ }
+ catch (final ClassNotFoundException cnfe) {} // Ignore
+ return ClassLoader.getSystemClassLoader().loadClass(className) ;
+ }
+
+ /**
+ * Get the specified resource as a string.
+ * @param caller The caller's class.
+ * @param resource The resource name.
+ * @return The string or null if not found.
+ * @throws java.io.IOException for read errors.
+ */
+ public static String getResourceAsString(final Class caller, final String resource)
+ throws IOException
+ {
+ final InputStream is = getResourceAsStream(caller, resource) ;
+ if (is == null)
+ {
+ return null ;
+ }
+
+ final Reader reader = new InputStreamReader(is) ;
+ final StringBuffer stringBuffer = new StringBuffer() ;
+ final char[] buffer = new char[1024] ;
+ while(true)
+ {
+ final int count = reader.read(buffer) ;
+ if (count == -1)
+ {
+ break ;
+ }
+ stringBuffer.append(buffer, 0, count) ;
+ }
+ return stringBuffer.toString() ;
+ }
+
+ /**
+ * Get the specified resource as an input stream.
+ * @param caller The caller's class.
+ * @param resource The resource name.
+ * @return The input stream or null if not found.
+ */
+ public static InputStream getResourceAsStream(final Class caller, final String resource)
+ {
+ if ((resource == null) || (resource.length() == 0))
+ {
+ return null ;
+ }
+
+ final String absoluteResource ;
+ if (resource.charAt(0) == '/')
+ {
+ absoluteResource = resource ;
+ }
+ else
+ {
+ final String callerName = caller.getName() ;
+ final int lastSeparator = callerName.lastIndexOf('.') ;
+ if (lastSeparator == -1)
+ {
+ absoluteResource = '/' + resource ;
+ }
+ else
+ {
+ absoluteResource = '/' + callerName.substring(0, lastSeparator+1).replace('.', '/') + resource ;
+ }
+ }
+ final URL url = getResourceAsURL(caller, absoluteResource) ;
+ if (url != null)
+ {
+ try
+ {
+ return url.openStream() ;
+ }
+ catch (final IOException ioe) {}
+ }
+ return null ;
+ }
+
+ /**
+ * Get the specified resource as a URL.
+ * @param caller The caller's class.
+ * @param resource The resource name.
+ * @return The URL or null if not found.
+ */
+ public static URL getResourceAsURL(final Class caller, final String resource)
+ {
+ final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader() ;
+ if (contextClassLoader != null)
+ {
+ final URL contextURL = contextClassLoader.getResource(resource) ;
+ if (contextURL != null)
+ {
+ return contextURL ;
+ }
+ }
+ final URL callerURL = caller.getResource(resource) ;
+ if (callerURL != null)
+ {
+ return callerURL ;
+ }
+ return ClassLoader.getSystemResource(resource) ;
+ }
+}
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginResponseType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginResponseType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginResponseType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,71 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for BeginResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="BeginResponseType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "BeginResponseType", propOrder = {
+ "any"
+})
+public class BeginResponseType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/BeginType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,71 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for BeginType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="BeginType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "BeginType", propOrder = {
+ "any"
+})
+public class BeginType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoResponseType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoResponseType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoResponseType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,100 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for EchoResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="EchoResponseType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="text" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "EchoResponseType", propOrder = {
+ "text",
+ "any"
+})
+public class EchoResponseType {
+
+ @XmlElement(required = true)
+ protected String text;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EchoType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,100 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for EchoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="EchoType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="text" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "EchoType", propOrder = {
+ "text",
+ "any"
+})
+public class EchoType {
+
+ @XmlElement(required = true)
+ protected String text;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndResponseType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndResponseType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndResponseType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,71 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for EndResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="EndResponseType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "EndResponseType", propOrder = {
+ "any"
+})
+public class EndResponseType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/EndType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,71 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for EndType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="EndType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "EndType", propOrder = {
+ "any"
+})
+public class EndType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/MessageType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/MessageType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/MessageType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,162 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for MessageType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="MessageType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="service" type="{http://www.w3.org/2001/XMLSchema}QName"/>
+ * <element name="port" type="{http://www.w3.org/2001/XMLSchema}NCName"/>
+ * <element name="operation" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "MessageType", propOrder = {
+ "service",
+ "port",
+ "operation",
+ "any"
+})
+public class MessageType {
+
+ @XmlElement(required = true)
+ protected QName service;
+ @XmlElement(required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "NCName")
+ protected String port;
+ @XmlElement(required = true)
+ protected String operation;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the service property.
+ *
+ * @return
+ * possible object is
+ * {@link javax.xml.namespace.QName }
+ *
+ */
+ public QName getService() {
+ return service;
+ }
+
+ /**
+ * Sets the value of the service property.
+ *
+ * @param value
+ * allowed object is
+ * {@link javax.xml.namespace.QName }
+ *
+ */
+ public void setService(QName value) {
+ this.service = value;
+ }
+
+ /**
+ * Gets the value of the port property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPort() {
+ return port;
+ }
+
+ /**
+ * Sets the value of the port property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPort(String value) {
+ this.port = value;
+ }
+
+ /**
+ * Gets the value of the operation property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOperation() {
+ return operation;
+ }
+
+ /**
+ * Sets the value of the operation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOperation(String value) {
+ this.operation = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/NotifyType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/NotifyType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/NotifyType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,100 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for NotifyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="NotifyType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="text" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "NotifyType", propOrder = {
+ "text",
+ "any"
+})
+public class NotifyType {
+
+ @XmlElement(required = true)
+ protected String text;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * 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;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/ObjectFactory.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/ObjectFactory.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/ObjectFactory.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,231 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+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.wstf.docs.scenarios.sc002 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.
+ *
+ */
+ at XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _SessionData_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "SessionData");
+ private final static QName _EndResponse_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "EndResponse");
+ private final static QName _End_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "End");
+ private final static QName _Echo_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "Echo");
+ private final static QName _BeginResponse_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "BeginResponse");
+ private final static QName _EchoResponse_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "EchoResponse");
+ private final static QName _SendMessages_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "SendMessages");
+ private final static QName _Begin_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "Begin");
+ private final static QName _Notify_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "Notify");
+ private final static QName _SendMessagesResponse_QNAME = new QName("http://www.wstf.org/docs/scenarios/sc002", "SendMessagesResponse");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.wstf.docs.scenarios.sc002
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.EndType }
+ *
+ */
+ public EndType createEndType() {
+ return new EndType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.EchoType }
+ *
+ */
+ public EchoType createEchoType() {
+ return new EchoType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.SendMessagesType.Messages }
+ *
+ */
+ public SendMessagesType.Messages createSendMessagesTypeMessages() {
+ return new SendMessagesType.Messages();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.BeginType }
+ *
+ */
+ public BeginType createBeginType() {
+ return new BeginType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.BeginResponseType }
+ *
+ */
+ public BeginResponseType createBeginResponseType() {
+ return new BeginResponseType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.EchoResponseType }
+ *
+ */
+ public EchoResponseType createEchoResponseType() {
+ return new EchoResponseType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.MessageType }
+ *
+ */
+ public MessageType createMessageType() {
+ return new MessageType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.EndResponseType }
+ *
+ */
+ public EndResponseType createEndResponseType() {
+ return new EndResponseType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.SendMessagesResponseType }
+ *
+ */
+ public SendMessagesResponseType createSendMessagesResponseType() {
+ return new SendMessagesResponseType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.SendMessagesType }
+ *
+ */
+ public SendMessagesType createSendMessagesType() {
+ return new SendMessagesType();
+ }
+
+ /**
+ * Create an instance of {@link org.wstf.docs.scenarios.sc002.NotifyType }
+ *
+ */
+ public NotifyType createNotifyType() {
+ return new NotifyType();
+ }
+
+ /**
+ * Create an instance of {@link SessionDataType }
+ *
+ */
+ public SessionDataType createSessionDataType() {
+ return new SessionDataType();
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link SessionDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "SessionData")
+ public JAXBElement<SessionDataType> createSessionData(SessionDataType value) {
+ return new JAXBElement<SessionDataType>(_SessionData_QNAME, SessionDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.EndResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "EndResponse")
+ public JAXBElement<EndResponseType> createEndResponse(EndResponseType value) {
+ return new JAXBElement<EndResponseType>(_EndResponse_QNAME, EndResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.EndType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "End")
+ public JAXBElement<EndType> createEnd(EndType value) {
+ return new JAXBElement<EndType>(_End_QNAME, EndType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.EchoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "Echo")
+ public JAXBElement<EchoType> createEcho(EchoType value) {
+ return new JAXBElement<EchoType>(_Echo_QNAME, EchoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.BeginResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "BeginResponse")
+ public JAXBElement<BeginResponseType> createBeginResponse(BeginResponseType value) {
+ return new JAXBElement<BeginResponseType>(_BeginResponse_QNAME, BeginResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.EchoResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "EchoResponse")
+ public JAXBElement<EchoResponseType> createEchoResponse(EchoResponseType value) {
+ return new JAXBElement<EchoResponseType>(_EchoResponse_QNAME, EchoResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.SendMessagesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "SendMessages")
+ public JAXBElement<SendMessagesType> createSendMessages(SendMessagesType value) {
+ return new JAXBElement<SendMessagesType>(_SendMessages_QNAME, SendMessagesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.BeginType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "Begin")
+ public JAXBElement<BeginType> createBegin(BeginType value) {
+ return new JAXBElement<BeginType>(_Begin_QNAME, BeginType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.NotifyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "Notify")
+ public JAXBElement<NotifyType> createNotify(NotifyType value) {
+ return new JAXBElement<NotifyType>(_Notify_QNAME, NotifyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link javax.xml.bind.JAXBElement }{@code <}{@link org.wstf.docs.scenarios.sc002.SendMessagesResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.wstf.org/docs/scenarios/sc002", name = "SendMessagesResponse")
+ public JAXBElement<SendMessagesResponseType> createSendMessagesResponse(SendMessagesResponseType value) {
+ return new JAXBElement<SendMessagesResponseType>(_SendMessagesResponse_QNAME, SendMessagesResponseType.class, null, value);
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Port.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Port.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Port.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,93 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import javax.jws.Oneway;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.2-hudson-182-RC1
+ * Generated source version: 2.0
+ *
+ */
+ at WebService(name = "sc002Port", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002")
+ at SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface Sc002Port {
+
+
+ /**
+ *
+ * @param sessionData
+ * @param begin
+ * @return
+ * returns org.wstf.docs.scenarios.sc002.BeginResponseType
+ */
+ @WebMethod(operationName = "Begin", action = "http://www.wstf.org/docs/scenarios/sc002/Begin")
+ @WebResult(name = "BeginResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "BeginResponse")
+ public BeginResponseType begin(
+ @WebParam(name = "Begin", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Begin")
+ BeginType begin,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+ /**
+ *
+ * @param sessionData
+ * @param notify
+ */
+ @WebMethod(operationName = "Notify", action = "http://www.wstf.org/docs/scenarios/sc002/Notify")
+ @Oneway
+ public void notify(
+ @WebParam(name = "Notify", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Notify")
+ NotifyType notify,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+ /**
+ *
+ * @param sessionData
+ * @param echo
+ * @return
+ * returns org.wstf.docs.scenarios.sc002.EchoResponseType
+ */
+ @WebMethod(operationName = "Echo", action = "http://www.wstf.org/docs/scenarios/sc002/Echo")
+ @WebResult(name = "EchoResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "EchoResponse")
+ public EchoResponseType echo(
+ @WebParam(name = "Echo", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Echo")
+ EchoType echo,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+ /**
+ *
+ * @param sessionData
+ * @param end
+ * @return
+ * returns org.wstf.docs.scenarios.sc002.EndResponseType
+ */
+ @WebMethod(operationName = "End", action = "http://www.wstf.org/docs/scenarios/sc002/End")
+ @WebResult(name = "EndResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "EndResponse")
+ public EndResponseType end(
+ @WebParam(name = "End", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "End")
+ EndType end,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+ /**
+ *
+ * @param sendMessages
+ * @return
+ * returns org.wstf.docs.scenarios.sc002.SendMessagesResponseType
+ */
+ @WebMethod(operationName = "SendMessages", action = "http://www.wstf.org/docs/scenarios/sc002/SendMessages")
+ @WebResult(name = "SendMessagesResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "SendMessagesResponse")
+ public SendMessagesResponseType sendMessages(
+ @WebParam(name = "SendMessages", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "SendMessages")
+ SendMessagesType sendMessages);
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Service.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Service.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/Sc002Service.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,68 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Logger;
+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 JAX-WS RI.
+ * JAX-WS RI 2.1.2-hudson-182-RC1
+ * Generated source version: 2.0
+ *
+ */
+ at WebServiceClient(name = "sc002Service", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", wsdlLocation = "wsdl/sc002.wsdl")
+public class Sc002Service
+ extends Service
+{
+
+ private final static URL SC002SERVICE_WSDL_LOCATION;
+ private final static Logger logger = Logger.getLogger(Sc002Service.class.getName());
+
+ static {
+ URL url = null;
+ try {
+ URL baseUrl;
+ baseUrl = Sc002Service.class.getResource(".");
+ url = new URL(baseUrl, "wsdl/sc002.wsdl");
+ } catch (MalformedURLException e) {
+ logger.warning("Failed to create URL for the wsdl Location: 'wsdl/sc002.wsdl', retrying as a local file");
+ logger.warning(e.getMessage());
+ }
+ SC002SERVICE_WSDL_LOCATION = url;
+ }
+
+ public Sc002Service(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public Sc002Service() {
+ super(SC002SERVICE_WSDL_LOCATION, new QName("http://www.wstf.org/docs/scenarios/sc002", "sc002Service"));
+ }
+
+ /**
+ *
+ * @return
+ * returns Sc002Port
+ */
+ @WebEndpoint(name = "soap11port")
+ public Sc002Port getSoap11Port() {
+ return super.getPort(new QName("http://www.wstf.org/docs/scenarios/sc002", "soap11port"), Sc002Port.class);
+ }
+
+ /**
+ *
+ * @return
+ * returns Sc002Port
+ */
+ @WebEndpoint(name = "soap12port")
+ public Sc002Port getSoap12Port() {
+ return super.getPort(new QName("http://www.wstf.org/docs/scenarios/sc002", "soap12port"), Sc002Port.class);
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesResponseType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesResponseType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesResponseType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,71 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SendMessagesResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="SendMessagesResponseType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "SendMessagesResponseType", propOrder = {
+ "any"
+})
+public class SendMessagesResponseType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SendMessagesType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,199 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SendMessagesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="SendMessagesType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="epr" type="{http://www.w3.org/2005/08/addressing}EndpointReferenceType"/>
+ * <element name="messages">
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="message" type="{http://www.wstf.org/docs/scenarios/sc002}MessageType" maxOccurs="unbounded"/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </element>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "SendMessagesType", propOrder = {
+ "epr",
+ "messages",
+ "any"
+})
+public class SendMessagesType {
+
+ @XmlElement(required = true)
+ protected W3CEndpointReference epr;
+ @XmlElement(required = true)
+ protected Messages messages;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the epr property.
+ *
+ * @return
+ * possible object is
+ * {@link javax.xml.ws.wsaddressing.W3CEndpointReference }
+ *
+ */
+ public W3CEndpointReference getEpr() {
+ return epr;
+ }
+
+ /**
+ * Sets the value of the epr property.
+ *
+ * @param value
+ * allowed object is
+ * {@link javax.xml.ws.wsaddressing.W3CEndpointReference }
+ *
+ */
+ public void setEpr(W3CEndpointReference value) {
+ this.epr = value;
+ }
+
+ /**
+ * Gets the value of the messages property.
+ *
+ * @return
+ * possible object is
+ * {@link org.wstf.docs.scenarios.sc002.SendMessagesType.Messages }
+ *
+ */
+ public Messages getMessages() {
+ return messages;
+ }
+
+ /**
+ * Sets the value of the messages property.
+ *
+ * @param value
+ * allowed object is
+ * {@link org.wstf.docs.scenarios.sc002.SendMessagesType.Messages }
+ *
+ */
+ public void setMessages(Messages value) {
+ this.messages = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType>
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="message" type="{http://www.wstf.org/docs/scenarios/sc002}MessageType" maxOccurs="unbounded"/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "message"
+ })
+ public static class Messages {
+
+ @XmlElement(required = true)
+ protected List<MessageType> message;
+
+ /**
+ * Gets the value of the message property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the message property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getMessage().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link MessageType }
+ *
+ *
+ */
+ public List<MessageType> getMessage() {
+ if (message == null) {
+ message = new ArrayList<MessageType>();
+ }
+ return this.message;
+ }
+
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SessionDataType.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SessionDataType.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/SessionDataType.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,100 @@
+
+package org.wstf.docs.scenarios.sc002;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SessionDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="SessionDataType">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <sequence>
+ * <element name="ID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * <any/>
+ * </sequence>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "SessionDataType", propOrder = {
+ "id",
+ "any"
+})
+public class SessionDataType {
+
+ @XmlElement(name = "ID", required = true)
+ protected String id;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getID() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setID(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link org.w3c.dom.Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/package-info.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/package-info.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc002/package-info.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,2 @@
+ at javax.xml.bind.annotation.XmlSchema(namespace = "http://www.wstf.org/docs/scenarios/sc002", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.wstf.docs.scenarios.sc002;
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Port.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Port.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Port.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,59 @@
+
+package org.wstf.docs.scenarios.sc003;
+
+import javax.jws.Oneway;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import org.wstf.docs.scenarios.sc002.EchoResponseType;
+import org.wstf.docs.scenarios.sc002.EchoType;
+import org.wstf.docs.scenarios.sc002.NotifyType;
+import org.wstf.docs.scenarios.sc002.SessionDataType;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.2-hudson-182-RC1
+ * Generated source version: 2.0
+ *
+ */
+ at WebService(name = "sc003Port", targetNamespace = "http://www.wstf.org/docs/scenarios/sc003")
+ at SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface Sc003Port {
+
+
+ /**
+ *
+ * @param sessionData
+ * @param notify
+ */
+ @WebMethod(operationName = "Notify", action = "http://www.wstf.org/docs/scenarios/sc002/Notify")
+ @Oneway
+ public void notify(
+ @WebParam(name = "Notify", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Notify")
+ NotifyType notify,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+ /**
+ *
+ * Note the use of distinct action values for the input and
+ * output messages of this operation.
+ *
+ *
+ * @param sessionData
+ * @param echo
+ * @return
+ * returns org.wstf.docs.scenarios.sc002.EchoResponseType
+ */
+ @WebMethod(operationName = "Echo", action = "http://www.wstf.org/docs/scenarios/sc002/Echo")
+ @WebResult(name = "EchoResponse", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "EchoResponse")
+ public EchoResponseType echo(
+ @WebParam(name = "Echo", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", partName = "Echo")
+ EchoType echo,
+ @WebParam(name = "SessionData", targetNamespace = "http://www.wstf.org/docs/scenarios/sc002", header = true, partName = "SessionData")
+ SessionDataType sessionData);
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Service.java
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Service.java (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/src/org/wstf/docs/scenarios/sc003/Sc003Service.java 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,74 @@
+
+package org.wstf.docs.scenarios.sc003;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Logger;
+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 JAX-WS RI.
+ * JAX-WS RI 2.1.2-hudson-182-RC1
+ * Generated source version: 2.0
+ *
+ */
+ at WebServiceClient(name = "sc003Service", targetNamespace = "http://www.wstf.org/docs/scenarios/sc003", wsdlLocation = "wsdl/sc003.wsdl")
+public class Sc003Service
+ extends Service
+{
+
+ private final static URL SC003SERVICE_WSDL_LOCATION;
+ private final static Logger logger = Logger.getLogger(Sc003Service.class.getName());
+
+ static {
+ URL url = null;
+ try {
+ URL baseUrl;
+ baseUrl = Sc003Service.class.getResource(".");
+ url = new URL(baseUrl, "wsdl/sc003.wsdl");
+ } catch (MalformedURLException e) {
+ logger.warning("Failed to create URL for the wsdl Location: 'wsdl/sc003.wsdl', retrying as a local file");
+ logger.warning(e.getMessage());
+ }
+ SC003SERVICE_WSDL_LOCATION = url;
+ }
+
+ public Sc003Service(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public Sc003Service() {
+ super(SC003SERVICE_WSDL_LOCATION, new QName("http://www.wstf.org/docs/scenarios/sc003", "sc003Service"));
+ }
+
+ /**
+ *
+ * This port supports the optional use of WS-Addressing 1.0.
+ *
+ *
+ * @return
+ * returns Sc003Port
+ */
+ @WebEndpoint(name = "soap11port")
+ public Sc003Port getSoap11Port() {
+ return super.getPort(new QName("http://www.wstf.org/docs/scenarios/sc003", "soap11port"), Sc003Port.class);
+ }
+
+ /**
+ *
+ * This port supports the optional use of WS-Addressing 1.0.
+ *
+ *
+ * @return
+ * returns Sc003Port
+ */
+ @WebEndpoint(name = "soap12port")
+ public Sc003Port getSoap12Port() {
+ return super.getPort(new QName("http://www.wstf.org/docs/scenarios/sc003", "soap12port"), Sc003Port.class);
+ }
+
+}
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/web/index.jsp
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/web/index.jsp (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/web/index.jsp 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,23 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+<%@page import="java.util.Iterator"%>
+<%@page import="java.util.Map"%>
+<%@page import="com.jboss.transaction.wstf.test.TestConstants"%>
+<%@page import="com.jboss.transaction.wstf.webservices.sc002.Sc002Constants"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JBoss WSTF Scenario 2 and 3 Test Endpoints List</title>
+</head>
+<body>
+<h1>JBoss WSTF Scenario 2 and 3 Test Endpoints List</h1>
+<p>This web application implements several of the interoperability tests specified by the <a href="http://www.wstf.org/">Web Services Test Forum</a> Group.</p>
+<p>Please send any queries to the <a href="mailto:adinn at redhat.com?subject=WSTF%20interop%20query">Red Hat Test Forum contact</a></p>
+<ul>
+<li>Basic WS Service <a href="sc002/index.jsp">Sc002</a>
+<li>WS Addressing <a href="sc003/index.jsp">Sc003</a>
+</ul>
+</body>
+</html>
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/details.jsp
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/details.jsp (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/details.jsp 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,90 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+<%@page import="com.jboss.transaction.wstf.test.TestConstants"%>
+<%@page import="java.util.Enumeration"%>
+<%@page import="junit.framework.TestResult"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<%@page import="junit.framework.TestFailure"%>
+<%@page import="junit.framework.TestCase"%>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JBoss Transactions WS-TX Interop detail page</title>
+</head>
+<body>
+<h1>Results</h1>
+<%
+ final TestResult testResult = (TestResult)session.getAttribute(TestConstants.ATTRIBUTE_TEST_RESULT) ;
+ if (testResult == null)
+ {
+%>
+No JUnit test results generated.
+<%
+ }
+ else
+ {
+ final String type = request.getParameter("type") ;
+
+ Enumeration detailEnum = null ;
+ if (type != null)
+ {
+ if ("error".equals(type))
+ {
+ detailEnum = testResult.errors() ;
+ }
+ else if ("failure".equals(type))
+ {
+ detailEnum = testResult.failures() ;
+ }
+ }
+
+ Integer indexInt = null ;
+ if (detailEnum != null)
+ {
+ final String indexVal = request.getParameter("index") ;
+ try
+ {
+ indexInt = Integer.valueOf(indexVal) ;
+ }
+ catch (final NumberFormatException nfe) {}
+ }
+
+ TestFailure testFailure = null ;
+ if (indexInt != null)
+ {
+ int index = indexInt.intValue() ;
+ if (index > 0)
+ {
+ while(detailEnum.hasMoreElements())
+ {
+ final Object current = detailEnum.nextElement() ;
+ if (--index == 0)
+ {
+ testFailure = (TestFailure)current ;
+ break ;
+ }
+ }
+ }
+ }
+
+ if (testFailure == null)
+ {
+%>
+<p>Invalid request parameters</p>
+<%
+ }
+ else
+ {
+ final TestCase failure = (TestCase)testFailure.failedTest() ;
+%>
+<p>Test: <%= failure.getName() %></p>
+<pre>
+<%= testFailure.trace() %>
+</pre>
+<%
+ }
+ }
+%>
+<p>Return to <a href="sc002/results.jsp">results page</a></p>
+</body>
+</html>
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/index.jsp
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/index.jsp (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/index.jsp 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,51 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+<%@page import="java.util.Iterator"%>
+<%@page import="java.util.Map"%>
+<%@page import="com.jboss.transaction.wstf.test.TestConstants"%>
+<%@page import="com.jboss.transaction.wstf.webservices.sc002.Sc002Constants"%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JBoss Transactions WSTF Sc002 Interop</title>
+</head>
+<body>
+<h1>JBoss Transactions WSTF Sc002 Interop</h1>
+<h2>Introduction</h2>
+<p>This web application implements the <a href="http://www.wstf.org/docs/scenarios/sc002/sc002.xml">scenario sc002</a> interoperability tests specified by the <a href="http://www.wstf.org/">Web Services Test Forum</a> Group.</p>
+<p>Please send any queries to the <a href="mailto:adinn at redhat.com?subject=WSTF%20interop%20query">Red Hat Test Forum contact</a></p>
+<h2>Sc002 tests</h2>
+<p>Enter the URL of the sc002 participant service to be used to run these tests and a timeout for each individual test<br>
+ n.b. the JBoss participant has URL http://localhost:8080/wstf/sc002/Sc002Service</p>
+<form action="../test" method="post">
+<p>Sc002 Participant Service URI: <input name="<%= TestConstants.PARAM_SERVICE_URI %>" maxlength="2000" size="100" value="http://localhost:8080/wstf/sc002/Sc002Service"/></p>
+<p>Test timeout: <input name="<%= TestConstants.PARAM_TEST_TIMEOUT %>" maxlength="10" size="10" value="120000"/></p>
+<!-- the current JaxWS based interop11 tests only runs synchronous tests for now
+<p>Asynchronous Test application: <input name="<%= TestConstants.PARAM_ASYNC_TEST %>" type="checkbox" checked="checked"/></p>
+-->
+<select name="<%= TestConstants.PARAM_TEST %>">
+<option value="<%= TestConstants.NAME_ALL_TESTS_SC002 %>">All Sc002 tests</option>
+<%
+
+ final Map descriptions = TestConstants.DESCRIPTIONS_SC002 ;
+ final Iterator entryIter = descriptions.entrySet().iterator() ;
+ while(entryIter.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry)entryIter.next() ;
+ final String testName = (String)entry.getKey() ;
+ final String testDescription = (String)entry.getValue() ;
+%>
+<option value="<%= testName %>"><%=testName + " - " + testDescription%></option>
+<%
+
+}
+%>
+</select>
+<p>
+<input type="submit" value="Execute"/>
+</p>
+</form>
+</body>
+</html>
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/results.jsp
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/results.jsp (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/web/sc002/results.jsp 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,90 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+<%@page import="com.jboss.transaction.wstf.test.TestConstants"%>
+<%@page import="java.util.Enumeration"%>
+<%@page import="junit.framework.TestCase"%>
+<%@page import="junit.framework.TestFailure"%>
+<%@page import="junit.framework.TestResult"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>JBoss Transactions WS-TX Interop results page</title>
+</head>
+<body>
+<h1>Results</h1>
+<h2>Processed results</h2>
+<%
+ final String logName = (String)session.getAttribute(TestConstants.ATTRIBUTE_LOG_NAME) ;
+ if (logName != null)
+ {
+%>
+<p>View <a href="logs/<%= logName %>">log file</a></p>
+<%
+ }
+%>
+<h2>JUnit results</h2>
+<%
+ final TestResult testResult = (TestResult)session.getAttribute(TestConstants.ATTRIBUTE_TEST_RESULT) ;
+ if (testResult == null)
+ {
+%>
+No JUnit test results generated.
+<%
+ }
+ else
+ {
+ final int runCount = testResult.runCount() ;
+ final int errorCount = testResult.errorCount() ;
+ final int failureCount = testResult.failureCount() ;
+%>
+<p>Run count: <%= runCount %></p>
+<p>Error count: <%= errorCount %></p>
+<p>Failure count: <%= failureCount %></p>
+<%
+ if ((errorCount > 0) || (failureCount > 0))
+ {
+ if (errorCount > 0)
+ {
+ final Enumeration enumeration = testResult.errors() ;
+%>
+<H3>Errors</H3>
+<%
+ int count = 0 ;
+ while(enumeration.hasMoreElements())
+ {
+ final TestFailure testFailure = (TestFailure)enumeration.nextElement() ;
+ count++ ;
+ final TestCase failedTest = (TestCase)testFailure.failedTest() ;
+ final String name = failedTest.getName() ;
+ final String description = (String)TestConstants.DESCRIPTIONS_SC002.get(name) ;
+%>
+<p><a href="sc002/details.jsp?type=error&index=<%= count %>"><%= name %></a> <%= description %></p>
+<%
+ }
+ }
+ if (failureCount > 0)
+ {
+ final Enumeration enumeration = testResult.failures() ;
+%>
+<H3>Failures</H3>
+<%
+ int count = 0 ;
+ while(enumeration.hasMoreElements())
+ {
+ final TestFailure testFailure = (TestFailure)enumeration.nextElement() ;
+ count++ ;
+ final TestCase failedTest = (TestCase)testFailure.failedTest() ;
+ final String name = failedTest.getName() ;
+ final String description = (String)TestConstants.DESCRIPTIONS_SC002.get(name) ;
+%>
+<p><a href="sc002/details.jsp?type=failure&index=<%= count %>"><%= name %></a> <%= description %></p>
+<%
+ }
+ }
+ }
+ }
+%>
+<p>Return to <a href="sc002/index.jsp">main page</a></p>
+</body>
+</html>
\ No newline at end of file
Added: labs/jbosstm/workspace/interop/WSTFSC02-interop/web.xml
===================================================================
--- labs/jbosstm/workspace/interop/WSTFSC02-interop/web.xml (rev 0)
+++ labs/jbosstm/workspace/interop/WSTFSC02-interop/web.xml 2008-08-14 14:55:00 UTC (rev 21545)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+ <display-name>JBoss WSTF interop</display-name>
+
+ <description>JBoss WSTF interop</description>
+
+ <!-- base URL for location of Interop services -->
+ <context-param>
+ <param-name>BaseURI</param-name>
+ <param-value>http://@HOST@:@PORT@/wstf</param-value>
+ </context-param>
+
+ <!-- Define WSTF Server Endpoints -->
+ <servlet>
+ <servlet-name>WSTF Sc002 Service</servlet-name>
+ <servlet-class>com.jboss.transaction.wstf.webservices.sc002.sei.Sc002PortImpl</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <!-- define proxy, logging and junit test runner servlets -->
+ <servlet>
+ <servlet-name>JUnit test servlet</servlet-name>
+ <servlet-class>com.jboss.transaction.wstf.test.TestServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Log servlet</servlet-name>
+ <servlet-class>com.jboss.transaction.wstf.test.TestLogServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <!-- Define WSTF JaxWS Server Endpoint Mappings -->
+ <servlet-mapping>
+ <servlet-name>WSTF Sc002 Service</servlet-name>
+ <url-pattern>/sc002/Sc002Service</url-pattern>
+ </servlet-mapping>
+
+ <!-- define logging and junit test runner servlet mappings -->
+ <servlet-mapping>
+ <servlet-name>JUnit test servlet</servlet-name>
+ <url-pattern>/test</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Log servlet</servlet-name>
+ <url-pattern>/logs/*</url-pattern>
+ </servlet-mapping>
+
+ <!-- welcome file is for sc007 endpoint -->
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
More information about the jboss-svn-commits
mailing list