JBossWS SVN: r9112 - in framework/trunk/testsuite/test: java/org/jboss/test/ws/jaxws and 5 other directories.
by jbossws-commits@lists.jboss.org
Author: darran.lofthouse(a)jboss.com
Date: 2009-01-23 12:05:05 -0500 (Fri, 23 Jan 2009)
New Revision: 9112
Added:
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/JBWS2412TestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpointImpl.java
framework/trunk/testsuite/test/resources/jaxws/jbws2412/
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/web.xml
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/TestService.wsdl
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema1.xsd
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema2.xsd
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema3.xsd
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema4.xsd
framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema5.xsd
Modified:
framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml
Log:
[JBWS-2412] WSDL schema imports do not published successfully.
Modified: framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml
===================================================================
--- framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml 2009-01-23 15:58:59 UTC (rev 9111)
+++ framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml 2009-01-23 17:05:05 UTC (rev 9112)
@@ -594,6 +594,17 @@
</webinf>
</war>
+ <!-- jaxws-jbws2412 -->
+ <war warfile="${tests.output.dir}/test-libs/jaxws-jbws2412.war" webxml="${tests.output.dir}/test-resources/jaxws/jbws2412/WEB-INF/web.xml">
+ <classes dir="${tests.output.dir}/test-classes">
+ <include name="org/jboss/test/ws/jaxws/jbws2412/*.class"/>
+ <exclude name="org/jboss/test/ws/jaxws/jbws2412/*TestCase.class"/>
+ </classes>
+ <webinf dir="${tests.output.dir}/test-resources/jaxws/jbws2412/WEB-INF">
+ <include name="wsdl/*"/>
+ </webinf>
+ </war>
+
<!-- jaxws-jbws2449 -->
<jar jarfile="${tests.output.dir}/test-libs/jaxws-jbws2449.jar">
<fileset dir="${tests.output.dir}/test-classes">
Added: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/JBWS2412TestCase.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/JBWS2412TestCase.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/JBWS2412TestCase.java 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,66 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY 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 along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ws.jaxws.jbws2412;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import junit.framework.Test;
+
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * Test case to test JBWS-2412 for the correct publising of imported schemas.
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @since 23rd January 2009
+ */
+public class JBWS2412TestCase extends JBossWSTest
+{
+
+ public static Test suite() throws Exception
+ {
+ return new JBossWSTestSetup(JBWS2412TestCase.class, "jaxws-jbws2412.war");
+ }
+
+ private TestEndpoint getPort() throws Exception
+ {
+
+ URL wsdlURL = new URL("http://" + getServerHost() + ":8080/jaxws-jbws2412?wsdl");
+ QName serviceName = new QName("http://org.jboss.test.ws/jbws2412", "TestEndpointService");
+
+ Service service = Service.create(wsdlURL, serviceName);
+
+ return service.getPort(TestEndpoint.class);
+ }
+
+ public void testCall() throws Exception
+ {
+ String message = "Hi";
+ String response = getPort().echo(message);
+ assertEquals(message, response);
+ }
+
+}
Property changes on: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/JBWS2412TestCase.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpoint.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpoint.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpoint.java 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,37 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY 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 along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ws.jaxws.jbws2412;
+
+import javax.jws.WebService;
+
+/**
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @since 23rd January 2009
+ */
+@WebService(name = "TestEndpoint", targetNamespace = "http://org.jboss.test.ws/jbws2412")
+public interface TestEndpoint
+{
+
+ public String echo(final String message);
+
+}
Property changes on: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpoint.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpointImpl.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpointImpl.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpointImpl.java 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY 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 along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ws.jaxws.jbws2412;
+
+import javax.jws.WebService;
+
+/**
+ *
+ * @author darran.lofthouse(a)jboss.com
+ * @since 23rd January 2009
+ */
+@WebService(name = "TestEndpoint", serviceName="TestEndpointService", targetNamespace = "http://org.jboss.test.ws/jbws2412", wsdlLocation="WEB-INF/wsdl/TestService.wsdl")
+public class TestEndpointImpl implements TestEndpoint
+{
+
+ public String echo(String message)
+ {
+ return message;
+ }
+
+}
Property changes on: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2412/TestEndpointImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/web.xml
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/web.xml (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/web.xml 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4" 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">
+
+ <servlet>
+ <servlet-name>TestEndpoint</servlet-name>
+ <servlet-class>org.jboss.test.ws.jaxws.jbws2412.TestEndpointImpl</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>TestEndpoint</servlet-name>
+ <url-pattern>/*</url-pattern>
+ </servlet-mapping>
+
+</web-app>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/web.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/TestService.wsdl
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/TestService.wsdl (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/TestService.wsdl 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,51 @@
+<definitions name='TestEndpointService' targetNamespace='http://org.jboss.test.ws/jbws2412' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://org.jboss.test.ws/jbws2412' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
+ <types>
+ <xs:schema targetNamespace='http://org.jboss.test.ws/jbws2412' version='1.0' xmlns:tns='http://org.jboss.test.ws/jbws2412' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+
+ <xs:import namespace="http://org.jboss.test.ws/jbws2412/schema1" schemaLocation="./schema1.xsd"/>
+ <xs:import namespace="http://org.jboss.test.ws/jbws2412/schema4" schemaLocation="./schema4.xsd"/>
+
+ <xs:element name='echo' type='tns:echo'/>
+ <xs:element name='echoResponse' type='tns:echoResponse'/>
+ <xs:complexType name='echo'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='arg0' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='echoResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name='TestEndpoint_echoResponse'>
+ <part element='tns:echoResponse' name='echoResponse'></part>
+ </message>
+ <message name='TestEndpoint_echo'>
+ <part element='tns:echo' name='echo'></part>
+ </message>
+ <portType name='TestEndpoint'>
+ <operation name='echo' parameterOrder='echo'>
+ <input message='tns:TestEndpoint_echo'></input>
+ <output message='tns:TestEndpoint_echoResponse'></output>
+ </operation>
+ </portType>
+ <binding name='TestEndpointBinding' type='tns:TestEndpoint'>
+ <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
+ <operation name='echo'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='TestEndpointService'>
+ <port binding='tns:TestEndpointBinding' name='TestEndpointPort'>
+ <soap:address location='http://127.0.0.1:8080/jaxws-jbws2412'/>
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/TestService.wsdl
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema1.xsd
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema1.xsd (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema1.xsd 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,5 @@
+<schema targetNamespace='http://org.jboss.test.ws/jbws2412/schema1'
+ xmlns='http://www.w3.org/2001/XMLSchema'>
+ <import namespace="http://org.jboss.test.ws/jbws2412/schema2" schemaLocation="./schema2.xsd"/>
+ <import namespace="http://org.jboss.test.ws/jbws2412/schema5" schemaLocation="./schema5.xsd"/>
+</schema>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema1.xsd
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema2.xsd
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema2.xsd (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema2.xsd 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,4 @@
+<schema targetNamespace='http://org.jboss.test.ws/jbws2412/schema2'
+ xmlns='http://www.w3.org/2001/XMLSchema'>
+
+</schema>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema2.xsd
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema3.xsd
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema3.xsd (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema3.xsd 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,4 @@
+<schema targetNamespace='http://org.jboss.test.ws/jbws2412/schema3'
+ xmlns='http://www.w3.org/2001/XMLSchema'>
+
+</schema>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema3.xsd
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema4.xsd
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema4.xsd (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema4.xsd 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,5 @@
+<schema targetNamespace='http://org.jboss.test.ws/jbws2412/schema4'
+ xmlns='http://www.w3.org/2001/XMLSchema'>
+ <import namespace="http://org.jboss.test.ws/jbws2412/schema2" schemaLocation="./schema2.xsd"/>
+ <import namespace="http://org.jboss.test.ws/jbws2412/schema3" schemaLocation="./schema3.xsd"/>
+</schema>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema4.xsd
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema5.xsd
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema5.xsd (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema5.xsd 2009-01-23 17:05:05 UTC (rev 9112)
@@ -0,0 +1,4 @@
+<schema targetNamespace='http://org.jboss.test.ws/jbws2412/schema5'
+ xmlns='http://www.w3.org/2001/XMLSchema'>
+
+</schema>
\ No newline at end of file
Property changes on: framework/trunk/testsuite/test/resources/jaxws/jbws2412/WEB-INF/wsdl/schema5.xsd
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
15 years, 11 months
JBossWS SVN: r9111 - stack/metro/trunk/modules/client/src/main/java/org/jboss/wsf/stack/metro/tools.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:58:59 -0500 (Fri, 23 Jan 2009)
New Revision: 9111
Modified:
stack/metro/trunk/modules/client/src/main/java/org/jboss/wsf/stack/metro/tools/MetroConsumerImpl.java
Log:
[JBWS-2450] Enable target 2.1 option when using WSImport
Modified: stack/metro/trunk/modules/client/src/main/java/org/jboss/wsf/stack/metro/tools/MetroConsumerImpl.java
===================================================================
--- stack/metro/trunk/modules/client/src/main/java/org/jboss/wsf/stack/metro/tools/MetroConsumerImpl.java 2009-01-23 15:56:27 UTC (rev 9110)
+++ stack/metro/trunk/modules/client/src/main/java/org/jboss/wsf/stack/metro/tools/MetroConsumerImpl.java 2009-01-23 15:58:59 UTC (rev 9111)
@@ -177,8 +177,8 @@
args.add(outputDir.getAbsolutePath());
// Always set the target
- if(!target.equals("2.0"))
- throw new IllegalArgumentException("WSConsume (metro) only supports JAX-WS 2.0");
+ if(!target.equals("2.0") && !target.equals("2.1"))
+ throw new IllegalArgumentException("WSConsume (metro) only supports JAX-WS 2.0 and 2.1");
args.add("-target");
args.add(target);
15 years, 11 months
JBossWS SVN: r9110 - stack/cxf/trunk/src/main/scripts.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:56:27 -0500 (Fri, 23 Jan 2009)
New Revision: 9110
Modified:
stack/cxf/trunk/src/main/scripts/assembly-bin-dist.xml
Log:
[JBWS-2483] Adding smoke/tools to binary distro
Modified: stack/cxf/trunk/src/main/scripts/assembly-bin-dist.xml
===================================================================
--- stack/cxf/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:44:29 UTC (rev 9109)
+++ stack/cxf/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:56:27 UTC (rev 9110)
@@ -99,10 +99,12 @@
<include>ant-import/**</include>
<include>java/org/jboss/test/ws/console/**</include>
<include>java/org/jboss/test/ws/jaxws/samples/**</include>
+ <include>java/org/jboss/test/ws/jaxws/smoke/**</include>
<include>java/org/jboss/test/ws/management/**</include>
<include>java/org/jboss/test/ws/projectGenerator/**</include>
<include>resources/console/**</include>
<include>resources/jaxws/samples/**</include>
+ <include>resources/jaxws/smoke/**</include>
<include>resources/management/**</include>
<include>resources/projectGenerator/**</include>
</includes>
15 years, 11 months
JBossWS SVN: r9109 - stack/metro/trunk/src/main/scripts.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:44:29 -0500 (Fri, 23 Jan 2009)
New Revision: 9109
Modified:
stack/metro/trunk/src/main/scripts/assembly-bin-dist.xml
Log:
[JBWS-2483] Adding smoke/tools test to binary distro
Modified: stack/metro/trunk/src/main/scripts/assembly-bin-dist.xml
===================================================================
--- stack/metro/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:37:26 UTC (rev 9108)
+++ stack/metro/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:44:29 UTC (rev 9109)
@@ -99,10 +99,12 @@
<include>ant-import/**</include>
<include>java/org/jboss/test/ws/console/**</include>
<include>java/org/jboss/test/ws/jaxws/samples/**</include>
+ <include>java/org/jboss/test/ws/jaxws/smoke/**</include>
<include>java/org/jboss/test/ws/management/**</include>
<include>java/org/jboss/test/ws/projectGenerator/**</include>
<include>resources/console/**</include>
<include>resources/jaxws/samples/**</include>
+ <include>resources/jaxws/smoke/**</include>
<include>resources/management/**</include>
<include>resources/projectGenerator/**</include>
</includes>
15 years, 11 months
JBossWS SVN: r9108 - in framework/trunk/testsuite/test: java/org/jboss/test/ws/jaxws and 9 other directories.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:37:26 -0500 (Fri, 23 Jan 2009)
New Revision: 9108
Added:
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMCheckClientHandler.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMFeatureTestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBeanMetro.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomAdapter.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomBean.java
framework/trunk/testsuite/test/resources/jaxws/jbws2449/
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl
Removed:
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/
framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl
Modified:
framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml
framework/trunk/testsuite/test/ant-import/build-testsuite.xml
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpoint.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpointBean.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBean.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/ScriptTestCase.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java
framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSProviderPlugin.java
framework/trunk/testsuite/test/resources/jaxws/smoke/tools/wsdl/TestService.wsdl
Log:
[JBWS-2441] Merging jaxws21 branch to trunk (svn merge -r9039:HEAD https://svn.jboss.org/repos/jbossws/framework/branches/jaxws21)
Modified: framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml
===================================================================
--- framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/ant-import/build-jars-jaxws.xml 2009-01-23 15:37:26 UTC (rev 9108)
@@ -61,6 +61,14 @@
<exclude name="org/jboss/test/ws/jaxws/complex/*TestCase.class"/>
</classes>
</war>
+
+ <!-- jaxws-endpointReference -->
+ <jar destfile="${tests.output.dir}/test-libs/jaxws-endpointReference.jar">
+ <fileset dir="${tests.output.dir}/test-classes">
+ <include name="org/jboss/test/ws/jaxws/endpointReference/Endpoint.class"/>
+ <include name="org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.class"/>
+ </fileset>
+ </jar>
<!-- jaxws-handlerscope -->
<war warfile="${tests.output.dir}/test-libs/jaxws-handlerscope.war" webxml="${tests.output.dir}/test-resources/jaxws/handlerscope/WEB-INF/web.xml">
@@ -586,6 +594,17 @@
</webinf>
</war>
+ <!-- jaxws-jbws2449 -->
+ <jar jarfile="${tests.output.dir}/test-libs/jaxws-jbws2449.jar">
+ <fileset dir="${tests.output.dir}/test-classes">
+ <include name="org/jboss/test/ws/jaxws/jbws2449/*.class"/>
+ <exclude name="org/jboss/test/ws/jaxws/jbws2449/*TestCase.class"/>
+ </fileset>
+ <metainf dir="${tests.output.dir}/test-resources/jaxws/jbws2449/META-INF">
+ <include name="wsdl/*"/>
+ </metainf>
+ </jar>
+
<!-- jaxws namespace -->
<war warfile="${tests.output.dir}/test-libs/jaxws-namespace.war" webxml="${tests.output.dir}/test-resources/jaxws/namespace/WEB-INF/web.xml">
<classes dir="${tests.output.dir}/test-classes">
Modified: framework/trunk/testsuite/test/ant-import/build-testsuite.xml
===================================================================
--- framework/trunk/testsuite/test/ant-import/build-testsuite.xml 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/ant-import/build-testsuite.xml 2009-01-23 15:37:26 UTC (rev 9108)
@@ -584,6 +584,7 @@
<sysproperty key="org.jboss.ws.wsse.keyStoreType" value="jks"/>
<sysproperty key="org.jboss.ws.wsse.trustStoreType" value="jks"/>
<sysproperty key="test.archive.directory" value="${tests.output.dir}/test-libs"/>
+ <sysproperty key="test.classes.directory" value="${tests.output.dir}/test-classes"/>
<sysproperty key="test.resources.directory" value="${tests.output.dir}/test-resources"/>
<sysproperty key="binary.distribution" value="true"/>
<classpath>
@@ -645,6 +646,7 @@
<sysproperty key="org.jboss.ws.wsse.keyStoreType" value="jks"/>
<sysproperty key="org.jboss.ws.wsse.trustStoreType" value="jks"/>
<sysproperty key="test.archive.directory" value="${tests.output.dir}/test-libs"/>
+ <sysproperty key="test.classes.directory" value="${tests.output.dir}/test-classes"/>
<sysproperty key="test.resources.directory" value="${tests.output.dir}/test-resources"/>
<sysproperty key="binary.distribution" value="true"/>
<classpath>
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference)
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,127 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.endpointReference;
-
-import java.net.InetAddress;
-import java.net.URL;
-
-import javax.xml.namespace.QName;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Dispatch;
-import javax.xml.ws.EndpointReference;
-import javax.xml.ws.Service;
-import javax.xml.ws.WebServiceException;
-import javax.xml.ws.Service.Mode;
-import javax.xml.ws.wsaddressing.W3CEndpointReference;
-
-import junit.framework.Test;
-
-import org.jboss.util.NotImplementedException;
-import org.jboss.wsf.common.DOMUtils;
-import org.jboss.wsf.test.JBossWSTest;
-import org.jboss.wsf.test.JBossWSTestSetup;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * Test EPR related methods
- *
- * @author alessio.soldano(a)jboss.com
- * @since 13-Jan-2009
- */
-public class BindingProviderTestCase extends JBossWSTest
-{
- public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() + ":8080/jaxws-endpointReference";
-
- public static Test suite()
- {
- return new JBossWSTestSetup(BindingProviderTestCase.class, "jaxws-endpointReference.jar");
- }
-
- public void testClient() throws Exception
- {
- URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/endpointReference", "EndpointService");
- Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class);
-
- BindingProvider bp = (BindingProvider)port;
- assertEndpointReference(bp.getEndpointReference());
- assertEndpointReference(bp.getEndpointReference(W3CEndpointReference.class));
- try
- {
- bp.getEndpointReference(MyEndpointReference.class);
- fail("Exception expected");
- }
- catch (Exception e)
- {
- //NOP: the provided EndpointReference is not supported by the implementation
- }
-
- String retObj = port.echo("Hello");
- assertEquals("Hello", retObj);
- }
-
- public void testDispatch() throws Exception
- {
- URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/endpointReference", "EndpointService");
- Service service = Service.create(wsdlURL, serviceName);
- Dispatch<Source> dispatch = service.createDispatch(new QName("http://org.jboss.ws/endpointReference", "EndpointPort"), Source.class, Mode.PAYLOAD);
-
- BindingProvider bp = (BindingProvider)dispatch;
- assertEndpointReference(bp.getEndpointReference());
- assertEndpointReference(bp.getEndpointReference(W3CEndpointReference.class));
- try
- {
- bp.getEndpointReference(MyEndpointReference.class);
- fail("Exception expected");
- }
- catch (Exception e)
- {
- //NOP: the provided EndpointReference is not supported by the implementation
- }
- }
-
- private void assertEndpointReference(EndpointReference epr) throws Exception
- {
- assertEquals(W3CEndpointReference.class.getName(), epr.getClass().getName());
- Element endpointReference = DOMUtils.parse(epr.toString());
- assertEquals("EndpointReference", endpointReference.getNodeName());
- assertEquals("http://www.w3.org/2005/08/addressing", endpointReference.getAttribute("xmlns"));
- NodeList addresses = endpointReference.getElementsByTagName("Address");
- assertEquals(1, addresses.getLength());
- String targetEndpointAddress = "localhost".equals(getServerHost()) ? "http://127.0.0.1:8080/jaxws-endpointReference" : TARGET_ENDPOINT_ADDRESS;
- assertEquals(targetEndpointAddress, addresses.item(0).getFirstChild().getNodeValue());
- }
-
- private class MyEndpointReference extends EndpointReference
- {
- @Override
- public void writeTo(Result result)
- {
- throw new NotImplementedException();
- }
-
- }
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/BindingProviderTestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,127 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.endpointReference;
+
+import java.net.InetAddress;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.Service.Mode;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import junit.framework.Test;
+
+import org.jboss.util.NotImplementedException;
+import org.jboss.wsf.common.DOMUtils;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+/**
+ * Test EPR related methods
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 13-Jan-2009
+ */
+public class BindingProviderTestCase extends JBossWSTest
+{
+ public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() + ":8080/jaxws-endpointReference";
+
+ public static Test suite()
+ {
+ return new JBossWSTestSetup(BindingProviderTestCase.class, "jaxws-endpointReference.jar");
+ }
+
+ public void testClient() throws Exception
+ {
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/endpointReference", "EndpointService");
+ Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class);
+
+ BindingProvider bp = (BindingProvider)port;
+ assertEndpointReference(bp.getEndpointReference());
+ assertEndpointReference(bp.getEndpointReference(W3CEndpointReference.class));
+ try
+ {
+ bp.getEndpointReference(MyEndpointReference.class);
+ fail("Exception expected");
+ }
+ catch (Exception e)
+ {
+ //NOP: the provided EndpointReference is not supported by the implementation
+ }
+
+ String retObj = port.echo("Hello");
+ assertEquals("Hello", retObj);
+ }
+
+ public void testDispatch() throws Exception
+ {
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/endpointReference", "EndpointService");
+ Service service = Service.create(wsdlURL, serviceName);
+ Dispatch<Source> dispatch = service.createDispatch(new QName("http://org.jboss.ws/endpointReference", "EndpointPort"), Source.class, Mode.PAYLOAD);
+
+ BindingProvider bp = (BindingProvider)dispatch;
+ assertEndpointReference(bp.getEndpointReference());
+ assertEndpointReference(bp.getEndpointReference(W3CEndpointReference.class));
+ try
+ {
+ bp.getEndpointReference(MyEndpointReference.class);
+ fail("Exception expected");
+ }
+ catch (Exception e)
+ {
+ //NOP: the provided EndpointReference is not supported by the implementation
+ }
+ }
+
+ private void assertEndpointReference(EndpointReference epr) throws Exception
+ {
+ assertEquals(W3CEndpointReference.class.getName(), epr.getClass().getName());
+ Element endpointReference = DOMUtils.parse(epr.toString());
+ assertEquals("EndpointReference", endpointReference.getNodeName());
+ assertEquals("http://www.w3.org/2005/08/addressing", endpointReference.getAttribute("xmlns"));
+ NodeList addresses = endpointReference.getElementsByTagName("Address");
+ assertEquals(1, addresses.getLength());
+ String targetEndpointAddress = "localhost".equals(getServerHost()) ? "http://127.0.0.1:8080/jaxws-endpointReference" : TARGET_ENDPOINT_ADDRESS;
+ assertEquals(targetEndpointAddress, addresses.item(0).getFirstChild().getNodeValue());
+ }
+
+ private class MyEndpointReference extends EndpointReference
+ {
+ @Override
+ public void writeTo(Result result)
+ {
+ throw new NotImplementedException();
+ }
+
+ }
+}
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,32 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.endpointReference;
-
-import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
-
-@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
-@WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/endpointReference")
-public interface Endpoint
-{
- String echo(String input);
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/Endpoint.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,32 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.endpointReference;
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
+@WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/endpointReference")
+public interface Endpoint
+{
+ String echo(String input);
+}
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,47 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.endpointReference;
-
-import javax.ejb.Stateless;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
-
-import org.jboss.wsf.spi.annotation.WebContext;
-
-@Stateless
-@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
-@WebContext(contextRoot="jaxws-endpointReference", urlPattern="/*")
-@WebService
-(
- name = "Endpoint",
- serviceName = "EndpointService",
- targetNamespace = "http://org.jboss.ws/endpointReference"
-)
-public class EndpointImpl implements Endpoint
-{
- @WebMethod
- public String echo(String input)
- {
- return input;
- }
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/endpointReference/EndpointImpl.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,47 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.endpointReference;
+
+import javax.ejb.Stateless;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+import org.jboss.wsf.spi.annotation.WebContext;
+
+@Stateless
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
+@WebContext(contextRoot="jaxws-endpointReference", urlPattern="/*")
+@WebService
+(
+ name = "Endpoint",
+ serviceName = "EndpointService",
+ targetNamespace = "http://org.jboss.ws/endpointReference"
+)
+public class EndpointImpl implements Endpoint
+{
+ @WebMethod
+ public String echo(String input)
+ {
+ return input;
+ }
+}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449 (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449)
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,32 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.jbws2449;
-
-import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
-
-@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
-@WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/jbws2449")
-public interface Endpoint
-{
- String echo(String input);
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/Endpoint.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,32 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2449;
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
+@WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/jbws2449")
+public interface Endpoint
+{
+ String echo(String input);
+}
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,49 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.jbws2449;
-
-import javax.ejb.Stateless;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.jws.soap.SOAPBinding;
-
-import org.jboss.wsf.spi.annotation.WebContext;
-
-@Stateless
-@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
-@WebContext(contextRoot="jaxws-jbws2449", urlPattern="/*")
-@WebService
-(
- name = "Endpoint",
- portName = "EndpointPort",
- serviceName = "EndpointService",
- targetNamespace = "http://org.jboss.ws/jbws2449",
- wsdlLocation = "META-INF/wsdl/test.wsdl"
-)
-public class EndpointImpl implements Endpoint
-{
- @WebMethod
- public String echo(String input)
- {
- return input;
- }
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/EndpointImpl.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,49 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2449;
+
+import javax.ejb.Stateless;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+import org.jboss.wsf.spi.annotation.WebContext;
+
+@Stateless
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
+@WebContext(contextRoot="jaxws-jbws2449", urlPattern="/*")
+@WebService
+(
+ name = "Endpoint",
+ portName = "EndpointPort",
+ serviceName = "EndpointService",
+ targetNamespace = "http://org.jboss.ws/jbws2449",
+ wsdlLocation = "META-INF/wsdl/test.wsdl"
+)
+public class EndpointImpl implements Endpoint
+{
+ @WebMethod
+ public String echo(String input)
+ {
+ return input;
+ }
+}
Deleted: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,82 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.jbws2449;
-
-import java.net.URL;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.RespectBindingFeature;
-import javax.xml.ws.Service;
-
-import junit.framework.Test;
-
-import org.jboss.wsf.test.JBossWSTest;
-import org.jboss.wsf.test.JBossWSTestSetup;
-
-/**
- * [JBWS-2449] Test RespectBindingFeature
- *
- * @author alessio.soldano(a)jboss.com
- * @since 15-Jan-2009
- */
-public class JBWS2449TestCase extends JBossWSTest
-{
- public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() + ":8080/jaxws-jbws2449";
-
- public static Test suite()
- {
- return new JBossWSTestSetup(JBWS2449TestCase.class, "jaxws-jbws2449.jar");
- }
-
- public void test() throws Exception
- {
- URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
- Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class);
- String retObj = port.echo("Hello");
- assertEquals("Hello", retObj);
- }
-
- public void testWithRespectBinding() throws Exception
- {
- URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
- try
- {
- Service.create(wsdlURL, serviceName).getPort(Endpoint.class, new RespectBindingFeature(true));
- fail("Exception expected, the wsdl has an understood required extensibility element!");
- }
- catch (Exception e)
- {
- //NOOP
- }
- }
-
- public void testWithRespectBinding2() throws Exception
- {
- URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
- Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class, new RespectBindingFeature(false));
- String retObj = port.echo("Hello");
- assertEquals("Hello", retObj);
- }
-}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/jbws2449/JBWS2449TestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,82 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2449;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.Service;
+
+import junit.framework.Test;
+
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * [JBWS-2449] Test RespectBindingFeature
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 15-Jan-2009
+ */
+public class JBWS2449TestCase extends JBossWSTest
+{
+ public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() + ":8080/jaxws-jbws2449";
+
+ public static Test suite()
+ {
+ return new JBossWSTestSetup(JBWS2449TestCase.class, "jaxws-jbws2449.jar");
+ }
+
+ public void test() throws Exception
+ {
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
+ Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class);
+ String retObj = port.echo("Hello");
+ assertEquals("Hello", retObj);
+ }
+
+ public void testWithRespectBinding() throws Exception
+ {
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
+ try
+ {
+ Service.create(wsdlURL, serviceName).getPort(Endpoint.class, new RespectBindingFeature(true));
+ fail("Exception expected, the wsdl has an understood required extensibility element!");
+ }
+ catch (Exception e)
+ {
+ //NOOP
+ }
+ }
+
+ public void testWithRespectBinding2() throws Exception
+ {
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/jbws2449", "EndpointService");
+ Endpoint port = Service.create(wsdlURL, serviceName).getPort(Endpoint.class, new RespectBindingFeature(false));
+ String retObj = port.echo("Hello");
+ assertEquals("Hello", retObj);
+ }
+}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMCheckClientHandler.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMCheckClientHandler.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMCheckClientHandler.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMCheckClientHandler.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2006, JBoss Inc., and
+ * individual contributors as indicated by the @authors tag. See the
+ * copyright.txt in the distribution for a full listing of individual
+ * contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This software is distributed in the hope that it will be useful, but WITHOUT
+ * ANY 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
+ * along with this software; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+
+package org.jboss.test.ws.jaxws.samples.xop.doclit;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+/**
+ * A SOAPHandler that checks for Include elements in the
+ * outbound SOAPMessage in order to see if MTOM is enabled.
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 15-Jan-2009
+ */
+public class MTOMCheckClientHandler implements SOAPHandler<SOAPMessageContext>
+{
+
+ public boolean handleMessage(SOAPMessageContext smc)
+ {
+ try
+ {
+ return check(smc);
+ }
+ catch (Exception e)
+ {
+ throw new WebServiceException(e);
+ }
+ }
+
+ public boolean handleFault(SOAPMessageContext smc)
+ {
+ //NOOP
+ return true;
+ }
+
+ private static boolean check(SOAPMessageContext smc) throws SOAPException, IOException
+ {
+ Boolean outboundProperty = (Boolean)smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
+
+ if (outboundProperty.booleanValue())
+ {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ SOAPMessage message = smc.getMessage();
+ message.writeTo(outputStream);
+ String messageString = outputStream.toString();
+ if (!messageString.contains("Include"))
+ throw new IllegalStateException("XOP request inlined");
+ }
+ return true;
+ }
+
+ public void close(MessageContext messageContext)
+ {
+ //NOOP
+ }
+
+ public Set<QName> getHeaders()
+ {
+ return new HashSet<QName>(); //empty set
+ }
+
+}
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpoint.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpoint.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpoint.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -23,11 +23,9 @@
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
-import javax.xml.ws.BindingType;
@WebService(targetNamespace = "http://org.jboss.ws/xop/doclit")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, parameterStyle = SOAPBinding.ParameterStyle.BARE)
-@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true")
public interface MTOMEndpoint
{
public DHResponse echoDataHandler(DHRequest request);
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpointBean.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpointBean.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMEndpointBean.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -28,13 +28,13 @@
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.WebServiceException;
-import javax.xml.ws.BindingType;
+import javax.xml.ws.soap.MTOM;
import org.jboss.logging.Logger;
@WebService(name = "MTOMEndpoint", serviceName = "MTOMService", endpointInterface = "org.jboss.test.ws.jaxws.samples.xop.doclit.MTOMEndpoint")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
-@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true")
+@MTOM
public class MTOMEndpointBean implements MTOMEndpoint
{
private Logger log = Logger.getLogger(MTOMEndpointBean.class);
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMFeatureTestCase.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMFeatureTestCase.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMFeatureTestCase.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/samples/xop/doclit/MTOMFeatureTestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,134 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.samples.xop.doclit;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+
+import junit.framework.Test;
+
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * [JBWS-2448] This test verify the MTOMFeature correctly enable MTOM on client side.
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 14-Jan-2009
+ */
+public class MTOMFeatureTestCase extends JBossWSTest {
+
+ public final String TARGET_ENDPOINT_ADDRESS = "http://" + getServerHost() + ":8080/jaxws-samples-xop-doclit/bare";
+
+ protected MTOMEndpoint port;
+
+ public static Test suite() {
+ return new JBossWSTestSetup(MTOMFeatureTestCase.class, "jaxws-samples-xop-doclit.war");
+ }
+
+ private MTOMEndpoint getPort(boolean mtomEnabled) throws Exception {
+ QName serviceName = new QName("http://doclit.xop.samples.jaxws.ws.test.jboss.org/", "MTOMService");
+ URL wsdlURL = new URL(TARGET_ENDPOINT_ADDRESS + "?wsdl");
+
+ Service service = Service.create(wsdlURL, serviceName);
+ return service.getPort(MTOMEndpoint.class, new MTOMFeature(mtomEnabled));
+ }
+
+ @SuppressWarnings("unchecked")
+ private static void addMTOMCheckHandler(MTOMEndpoint port) {
+ SOAPBinding binding = (SOAPBinding) ((BindingProvider) port).getBinding();
+ List<Handler> handlerChain = new ArrayList<Handler>();
+ handlerChain.addAll(binding.getHandlerChain());
+ handlerChain.add(new MTOMCheckClientHandler());
+ binding.setHandlerChain(handlerChain);
+ }
+
+ public void testWithMTOMRequest() throws Exception {
+ DataHandler dh = new DataHandler("DataHandlerRoundtrip", "text/plain");
+ MTOMEndpoint port = getPort(true);
+ addMTOMCheckHandler(port);
+ DHResponse response = port.echoDataHandler(new DHRequest(dh));
+ assertNotNull(response);
+
+ Object content = getContent(response.getDataHandler());
+ String contentType = response.getDataHandler().getContentType();
+
+ assertEquals("Server data", content);
+ assertEquals("text/plain", contentType);
+ }
+
+ public void testWithoutMTOMRequest() throws Exception {
+ DataHandler dh = new DataHandler("DataHandlerResponseOptimzed", "text/plain");
+ DHResponse response = getPort(false).echoDataHandler(new DHRequest(dh));
+ assertNotNull(response);
+
+ Object content = getContent(response.getDataHandler());
+ String contentType = response.getDataHandler().getContentType();
+
+ assertEquals("Server data", content);
+ assertEquals("text/plain", contentType);
+ }
+
+ public void testErrorWithoutMTOMRequest() throws Exception {
+ DataHandler dh = new DataHandler("DataHandlerResponseOptimzed", "text/plain");
+ MTOMEndpoint port = getPort(false);
+ addMTOMCheckHandler(port);
+ try
+ {
+ port.echoDataHandler(new DHRequest(dh));
+ fail("Exception expected");
+ }
+ catch (Exception e)
+ {
+ //OK
+ }
+ }
+
+ protected Object getContent(DataHandler dh) throws IOException {
+ Object content = dh.getContent();
+
+ // Metro returns an ByteArrayInputStream
+ if (content instanceof InputStream) {
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(
+ (InputStream) content));
+ return br.readLine();
+ } finally {
+ ((InputStream) content).close();
+ }
+ }
+ return content;
+ }
+}
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBean.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBean.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBean.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -21,8 +21,15 @@
*/
package org.jboss.test.ws.jaxws.smoke.tools;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+import javax.jws.WebMethod;
import javax.jws.WebService;
-import javax.jws.WebMethod;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@WebService(targetNamespace = "http://foo.bar.com/calculator")
public class CalculatorBean
@@ -38,4 +45,27 @@
{
return a-b;
}
+
+ @WebMethod
+ public Set<Integer> getKeys(HashMap<Integer, String> map) throws RuntimeException, RemoteException
+ {
+ if (map != null)
+ return map.keySet();
+ else
+ return null;
+ }
+
+ @WebMethod
+ @XmlList
+ public List<String> processList(@XmlList List<String> list)
+ {
+ return list;
+ }
+
+ @WebMethod
+ @XmlJavaTypeAdapter(CustomAdapter.class)
+ public CustomBean processCustom((a)XmlJavaTypeAdapter(CustomAdapter.class) CustomBean bean)
+ {
+ return bean;
+ }
}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBeanMetro.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBeanMetro.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBeanMetro.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CalculatorBeanMetro.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,62 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.smoke.tools;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Set;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.bind.annotation.XmlList;
+
+@WebService(targetNamespace = "http://foo.bar.com/calculator", serviceName="CalculatorBeanService")
+public class CalculatorBeanMetro
+{
+ @WebMethod
+ public int add(int a, int b)
+ {
+ return a+b;
+ }
+
+ @WebMethod
+ public int subtract(int a, int b)
+ {
+ return a-b;
+ }
+
+ @WebMethod
+ public Set<Integer> getKeys(HashMap<Integer, String> map)
+ {
+ if (map != null)
+ return map.keySet();
+ else
+ return null;
+ }
+
+ @WebMethod
+ @XmlList
+ public List<String> processList(@XmlList List<String> list)
+ {
+ return list;
+ }
+}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomAdapter.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomAdapter.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomAdapter.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomAdapter.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,44 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.smoke.tools;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+public class CustomAdapter extends XmlAdapter<String, CustomBean>
+{
+
+ @Override
+ public String marshal(CustomBean v) throws Exception
+ {
+ return v.getFistAttribute() + "-" + v.getSecondAttribute();
+ }
+
+ @Override
+ public CustomBean unmarshal(String v) throws Exception
+ {
+ CustomBean b = new CustomBean();
+ b.setFistAttribute(v.substring(0, v.indexOf('-')));
+ b.setSecondAttribute(Long.valueOf(v.substring(v.indexOf('-') + 1)));
+ return b;
+ }
+
+}
Copied: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomBean.java (from rev 9105, framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomBean.java)
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomBean.java (rev 0)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/CustomBean.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,48 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.smoke.tools;
+
+public class CustomBean
+{
+ private String fistAttribute;
+ private Long secondAttribute;
+
+ public String getFistAttribute()
+ {
+ return fistAttribute;
+ }
+
+ public void setFistAttribute(String fistAttribute)
+ {
+ this.fistAttribute = fistAttribute;
+ }
+
+ public Long getSecondAttribute()
+ {
+ return secondAttribute;
+ }
+
+ public void setSecondAttribute(Long secondAttribute)
+ {
+ this.secondAttribute = secondAttribute;
+ }
+}
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -57,6 +57,8 @@
protected void setupClasspath() throws Exception
{
String classpath = System.getProperty("surefire.test.class.path");
+ if (classpath == null) //no maven surefire classpath hacks required
+ return;
List<URL> jarURLs = new LinkedList<URL>();
StringBuffer jarURLString = new StringBuffer();
List<URL> classDirUrls = new LinkedList<URL>();
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/ScriptTestCase.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/ScriptTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/ScriptTestCase.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -42,7 +42,7 @@
private static final String EXT = ":".equals( PS ) ? ".sh" : ".bat";
private String WSDL_LOCATION = "jaxws" + FS + "smoke" + FS + "tools" + FS + "wsdl" + FS + "TestServiceCatalog.wsdl";
- private String ENDPOINT_CLASS = "org.jboss.test.ws.jaxws.smoke.tools.CalculatorBean";
+ private String ENDPOINT_CLASS;
private String JBOSS_HOME;
private String CLASSES_DIR;
@@ -56,6 +56,8 @@
JBOSS_HOME = System.getProperty("jboss.home");
CLASSES_DIR = System.getProperty("test.classes.directory");
+ //JBWS-2479
+ ENDPOINT_CLASS = isIntegrationMetro() ? "org.jboss.test.ws.jaxws.smoke.tools.CalculatorBeanMetro" : "org.jboss.test.ws.jaxws.smoke.tools.CalculatorBean";
TEST_DIR = createResourceFile("..").getAbsolutePath();
origJavaHome = System.getProperty("java.home");
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -24,6 +24,7 @@
import org.jboss.wsf.spi.tools.WSContractConsumer;
import org.jboss.wsf.test.JBossWSTest;
+import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.WebServiceFeature;
import java.io.*;
import java.lang.reflect.Method;
@@ -263,41 +264,39 @@
consumer.setTargetPackage("org.jboss.test.ws.tools.testTarget");
consumer.setGenerateSource(true);
consumer.setTarget("2.1");
-
- try
+ consumer.setNoCompile(false);
+
+ //this test is run in binary distribution mode only because the way Maven builds classpath doesn't allow to run the
+ //wsimport tool in Native stack from a Surefire test (the jaxws classes are of course loaded from the included
+ //jaxws source module and that causes the Sun's ParallelWorldClassLoader to throw an exception as EndpointReference
+ //is not loaded from a jar resource)
+ if (Boolean.getBoolean("binary.distribution"))
{
consumeWSDL();
- fail("Target 2.1 should not be supported");
- }
- catch (Exception e)
- {
- File outputDir = new File(outputDirectory, "org/jboss/test/ws/tools/testTarget");
- outputDir.deleteOnExit();
- return;
- }
-
- URLClassLoader loader = new URLClassLoader(new URL[] { outputDirectory.toURL() });
- String seiClassName = "org.jboss.test.ws.tools.testTarget.TestService";
- Class sei = loader.loadClass(seiClassName);
-
- boolean featureSig = false;
- for (Method m : sei.getDeclaredMethods())
- {
- if (m.getName().equals("getEndpointInterfacePort"))
+ ClassLoader loader = getArtefactClassLoader();
+ Class<?> service = loader.loadClass("org.jboss.test.ws.tools.testTarget.TestService");
+
+ boolean featureSig = false;
+ for (Method m : service.getDeclaredMethods())
{
- for (Class c : m.getParameterTypes())
+ if (m.getName().equals("getEndpointInterfacePort"))
{
- if (c.isArray() && c.getComponentType().equals(WebServiceFeature.class))
+ for (Class<?> c : m.getParameterTypes())
{
- featureSig = true;
- break;
+ if (c.isArray() && c.getComponentType().equals(WebServiceFeature.class))
+ {
+ featureSig = true;
+ break;
+ }
}
}
}
+
+ assertTrue("JAX-WS 2.1 extensions not generated with 'target=2.1'", featureSig);
+
+ Class<?> sei = loader.loadClass("org.jboss.test.ws.tools.testTarget.EndpointInterface");
+ assertTrue("@XmlSeeAlso expected on SEI (types not referenced by the Port in the wsdl)", sei.isAnnotationPresent(XmlSeeAlso.class));
}
-
- assertTrue("JAX-WS 2.1 extensions not generated with 'target=2.1'", featureSig);
-
}
/**
@@ -332,4 +331,13 @@
if(!sei.exists()) throw new IllegalStateException(sei.getAbsolutePath() + " doesn't exist!");
return sei;
}
+
+ private ClassLoader getArtefactClassLoader() throws Exception {
+ URLClassLoader loader = new URLClassLoader(
+ new URL[] { outputDirectory.toURL() },
+ Thread.currentThread().getContextClassLoader()
+ );
+
+ return loader;
+ }
}
Modified: framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSProviderPlugin.java
===================================================================
--- framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSProviderPlugin.java 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSProviderPlugin.java 2009-01-23 15:37:26 UTC (rev 9108)
@@ -26,10 +26,15 @@
import org.jboss.wsf.test.JBossWSTest;
import org.w3c.dom.Element;
+import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileReader;
import java.io.PrintStream;
import java.net.URL;
import java.net.URLClassLoader;
@@ -93,7 +98,7 @@
}
- private void verifyJavaSource(File directory)
+ private void verifyJavaSource(File directory) throws Exception
{
File javaSource = new File(
directory.getAbsolutePath()+
@@ -101,7 +106,41 @@
);
assertTrue("Source not generated", javaSource.exists());
+
+ javaSource = new File(directory.getAbsolutePath() + FS + "org" + FS + "jboss" + FS + "test" + FS + "ws" + FS + "jaxws" + FS + "smoke" + FS + "tools" + FS
+ + "jaxws" + FS + "GetKeysResponse.java");
+ assertTrue("Source not generated", javaSource.exists());
+ String contents = readFile(javaSource);
+ //[JBWS-2477] check support for generics
+ assertTrue("Didn't found method \"public Set<Integer> getReturn()\"", contents.contains("public Set<Integer> getReturn()"));
+
+ javaSource = new File(directory.getAbsolutePath() + FS + "org" + FS + "jboss" + FS + "test" + FS + "ws" + FS + "jaxws" + FS + "smoke" + FS + "tools" + FS
+ + "jaxws" + FS + "ProcessListResponse.java");
+ assertTrue("Source not generated", javaSource.exists());
+ contents = readFile(javaSource);
+ assertTrue("@XmlList not found", contents.contains("@XmlList"));
+
}
+
+ private String readFile(File file) throws Exception
+ {
+ BufferedReader input = new BufferedReader(new FileReader(file));
+ StringBuilder sb = new StringBuilder();
+ try
+ {
+ String line = null;
+ while ((line = input.readLine()) != null)
+ {
+ sb.append(line);
+ sb.append(System.getProperty("line.separator"));
+ }
+ }
+ finally
+ {
+ input.close();
+ }
+ return sb.toString();
+ }
/**
* Sets the main output directory.
@@ -111,10 +150,24 @@
{
provide();
ClassLoader loader = getArtefactClassLoader();
- Class responseWrapper = loader.loadClass("org.jboss.test.ws.jaxws.smoke.tools.jaxws.AddResponse");
+ Class<?> responseWrapper = loader.loadClass("org.jboss.test.ws.jaxws.smoke.tools.jaxws.AddResponse");
XmlRootElement rootElement = (XmlRootElement) responseWrapper.getAnnotation(XmlRootElement.class);
- assertNotNull("@XmlRootElement missing form response wrapper", rootElement);
+ assertNotNull("@XmlRootElement missing from response wrapper", rootElement);
assertEquals("Wrong namespace", rootElement.namespace(), "http://foo.bar.com/calculator");
+ responseWrapper = loader.loadClass("org.jboss.test.ws.jaxws.smoke.tools.jaxws.ProcessListResponse");
+ XmlList xmlList = (XmlList) responseWrapper.getDeclaredField("_return").getAnnotation(XmlList.class);
+ assertNotNull("@XmlList missing from response wrapper's _return field", xmlList);
+ if (!isIntegrationMetro())
+ {
+ responseWrapper = loader.loadClass("org.jboss.test.ws.jaxws.smoke.tools.jaxws.ProcessCustomResponse");
+ XmlJavaTypeAdapter xmlJavaTypeAdapter = (XmlJavaTypeAdapter) responseWrapper.getDeclaredField("_return").getAnnotation(XmlJavaTypeAdapter.class);
+ assertNotNull("@XmlJavaTypeAdapter missing from response wrapper's _return field", xmlJavaTypeAdapter);
+ assertEquals("org.jboss.test.ws.jaxws.smoke.tools.CustomAdapter", xmlJavaTypeAdapter.value().getName());
+ }
+ else
+ {
+ System.out.println("FIXME [JBWS-2479] @XmlJavaTypeAdapter on SEI causes exception");
+ }
}
/**
@@ -230,6 +283,8 @@
{
//provider.setGenerateSource(true);
provider.setOutputDirectory(outputDirectory);
- provider.provide(CalculatorBean.class);
+ //JBWS-2479: using different beans because the whole smoke tools test is supposed to be run for every stack
+ //and we can't afford excluding it for Metro just because of JBWS-2479
+ provider.provide(isIntegrationMetro() ? CalculatorBeanMetro.class : CalculatorBean.class);
}
}
Copied: framework/trunk/testsuite/test/resources/jaxws/jbws2449 (from rev 9105, framework/branches/jaxws21/testsuite/test/resources/jaxws/jbws2449)
Copied: framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF (from rev 9105, framework/branches/jaxws21/testsuite/test/resources/jaxws/jbws2449/META-INF)
Copied: framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl (from rev 9105, framework/branches/jaxws21/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl)
Deleted: framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl
===================================================================
--- framework/branches/jaxws21/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl 2009-01-23 10:52:49 UTC (rev 9105)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl 2009-01-23 15:37:26 UTC (rev 9108)
@@ -1,54 +0,0 @@
-<definitions name='EndpointService' targetNamespace='http://org.jboss.ws/jbws2449'
- xmlns='http://schemas.xmlsoap.org/wsdl/'
- xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
- xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
- xmlns:tns='http://org.jboss.ws/jbws2449'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:foo='http://foo.org/foo'>
- <types>
- <xs:schema targetNamespace='http://org.jboss.ws/jbws2449' version='1.0' xmlns:tns='http://org.jboss.ws/jbws2449' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
- <xs:element name='echo' type='tns:echo'/>
- <xs:element name='echoResponse' type='tns:echoResponse'/>
- <xs:complexType name='echo'>
- <xs:sequence>
- <xs:element minOccurs='0' name='arg0' type='xs:string'/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name='echoResponse'>
- <xs:sequence>
- <xs:element minOccurs='0' name='return' type='xs:string'/>
- </xs:sequence>
- </xs:complexType>
- </xs:schema>
- </types>
- <message name='Endpoint_echo'>
- <part element='tns:echo' name='echo'></part>
- </message>
- <message name='Endpoint_echoResponse'>
- <part element='tns:echoResponse' name='echoResponse'></part>
- </message>
- <portType name='Endpoint'>
- <operation name='echo' parameterOrder='echo'>
- <input message='tns:Endpoint_echo'></input>
- <output message='tns:Endpoint_echoResponse'></output>
- </operation>
- </portType>
- <binding name='EndpointBinding' type='tns:Endpoint'>
- <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
- <foo:bar wsdl:required="true"/>
- <operation name='echo'>
- <soap:operation soapAction=''/>
- <input>
- <soap:body use='literal'/>
- </input>
- <output>
- <soap:body use='literal'/>
- </output>
- </operation>
- </binding>
- <service name='EndpointService'>
- <port binding='tns:EndpointBinding' name='EndpointPort'>
- <soap:address location='http://127.0.0.1:8080/jaxws-jbws2449'/>
- </port>
- </service>
-</definitions>
\ No newline at end of file
Copied: framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl (from rev 9105, framework/branches/jaxws21/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl)
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl (rev 0)
+++ framework/trunk/testsuite/test/resources/jaxws/jbws2449/META-INF/wsdl/test.wsdl 2009-01-23 15:37:26 UTC (rev 9108)
@@ -0,0 +1,54 @@
+<definitions name='EndpointService' targetNamespace='http://org.jboss.ws/jbws2449'
+ xmlns='http://schemas.xmlsoap.org/wsdl/'
+ xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
+ xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
+ xmlns:tns='http://org.jboss.ws/jbws2449'
+ xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+ xmlns:foo='http://foo.org/foo'>
+ <types>
+ <xs:schema targetNamespace='http://org.jboss.ws/jbws2449' version='1.0' xmlns:tns='http://org.jboss.ws/jbws2449' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:element name='echo' type='tns:echo'/>
+ <xs:element name='echoResponse' type='tns:echoResponse'/>
+ <xs:complexType name='echo'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='arg0' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name='echoResponse'>
+ <xs:sequence>
+ <xs:element minOccurs='0' name='return' type='xs:string'/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
+ <message name='Endpoint_echo'>
+ <part element='tns:echo' name='echo'></part>
+ </message>
+ <message name='Endpoint_echoResponse'>
+ <part element='tns:echoResponse' name='echoResponse'></part>
+ </message>
+ <portType name='Endpoint'>
+ <operation name='echo' parameterOrder='echo'>
+ <input message='tns:Endpoint_echo'></input>
+ <output message='tns:Endpoint_echoResponse'></output>
+ </operation>
+ </portType>
+ <binding name='EndpointBinding' type='tns:Endpoint'>
+ <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
+ <foo:bar wsdl:required="true"/>
+ <operation name='echo'>
+ <soap:operation soapAction=''/>
+ <input>
+ <soap:body use='literal'/>
+ </input>
+ <output>
+ <soap:body use='literal'/>
+ </output>
+ </operation>
+ </binding>
+ <service name='EndpointService'>
+ <port binding='tns:EndpointBinding' name='EndpointPort'>
+ <soap:address location='http://127.0.0.1:8080/jaxws-jbws2449'/>
+ </port>
+ </service>
+</definitions>
\ No newline at end of file
Modified: framework/trunk/testsuite/test/resources/jaxws/smoke/tools/wsdl/TestService.wsdl
===================================================================
--- framework/trunk/testsuite/test/resources/jaxws/smoke/tools/wsdl/TestService.wsdl 2009-01-23 15:32:14 UTC (rev 9107)
+++ framework/trunk/testsuite/test/resources/jaxws/smoke/tools/wsdl/TestService.wsdl 2009-01-23 15:37:26 UTC (rev 9108)
@@ -6,7 +6,16 @@
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
- <types/>
+ <types>
+ <xs:schema targetNamespace='http://foo.bar.com/test' version='1.0' xmlns:tns='http://foo.bar.com/test' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+ <xs:complexType name="foo">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:int"/>
+ <xs:element name="arg1" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ </types>
<message name="EndpointInterface_echo">
<part name="String_1" type="xsd:string"/>
</message>
15 years, 11 months
JBossWS SVN: r9107 - in stack/native/trunk: modules/core/src/main/java/org/jboss/ws/core and 28 other directories.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:32:14 -0500 (Fri, 23 Jan 2009)
New Revision: 9107
Added:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl
Removed:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/handler/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/soap/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/spi/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/wsaddressing/
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java
stack/native/trunk/src/main/scripts/assembly-bin-dist.xml
Log:
[JBWS-2441] Merging jaxws21 branch to trunk (svn merge -r 9008:HEAD https://svn.jboss.org/repos/jbossws/stack/native/branches/jaxws21)
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.feature.FastInfosetFeature;
/**
@@ -37,6 +39,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature( id = FastInfosetFeature.ID)
+@WebServiceFeatureAnnotation(id = FastInfosetFeature.ID, bean = FastInfosetFeature.class)
public @interface FastInfoset {
/**
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.feature.JsonEncodingFeature;
/**
@@ -37,6 +39,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature(id = JsonEncodingFeature.ID)
+@WebServiceFeatureAnnotation(id = JsonEncodingFeature.ID, bean = JsonEncodingFeature.class)
public @interface JsonEncoding {
/**
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.extensions.validation.StrictlyValidErrorHandler;
import org.jboss.ws.feature.SchemaValidationFeature;
@@ -39,6 +41,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature( id = SchemaValidationFeature.ID)
+@WebServiceFeatureAnnotation(id = SchemaValidationFeature.ID, bean = SchemaValidationFeature.class)
public @interface SchemaValidation
{
/**
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -23,12 +23,16 @@
import java.util.Observable;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
import org.jboss.logging.Logger;
import org.jboss.ws.core.jaxrpc.SOAP11BindingJAXRPC;
import org.jboss.ws.core.jaxrpc.SOAP12BindingJAXRPC;
+import org.jboss.ws.core.jaxws.binding.EndpointReferenceUtil;
import org.jboss.ws.core.jaxws.binding.HTTPBindingJAXWS;
import org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS;
import org.jboss.ws.core.jaxws.binding.SOAP12BindingJAXWS;
@@ -103,6 +107,42 @@
return binding;
}
+ public EndpointReference getEndpointReference()
+ {
+ if (binding instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get EPR for BindingProvider instances using the XML/HTTP binding");
+ }
+ return getEndpointReference(W3CEndpointReference.class);
+ }
+
+ public <T extends EndpointReference> T getEndpointReference(Class<T> clazz)
+ {
+ // Conformance 4.5 (javax.xml.ws.BindingProvider.getEndpointReference): An implementation
+ // MUST be able to return an javax.xml.ws.EndpointReference for the target endpoint if a SOAP binding
+ // is being used. If the BindingProvider instance has a binding that is either SOAP 1.1/HTTP or
+ // SOAP 1.2/HTTP, then a W3CEndpointReference MUST be returned. If the binding is XML/HTTP an
+ // java.lang.UnsupportedOperationExceptionMUST be thrown.
+
+ if (binding instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get epr for BindingProvider instances using the XML/HTTP binding");
+ }
+ W3CEndpointReferenceBuilder builder = new W3CEndpointReferenceBuilder();
+ if (epMetaData != null)
+ {
+ builder.address(epMetaData.getEndpointAddress());
+ builder.serviceName(epMetaData.getServiceMetaData().getServiceName());
+ builder.endpointName(epMetaData.getPortName());
+ builder.wsdlDocumentLocation(epMetaData.getEndpointAddress() + "?wsdl");
+ }
+ else
+ {
+ log.warn("Cannot get endpoint reference info from endpoint metadata!");
+ }
+ return EndpointReferenceUtil.transform(clazz, builder.build());
+ }
+
public void update(Observable observable, Object object)
{
if(log.isDebugEnabled()) log.debug("Update config: " + object);
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -41,10 +41,12 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttachmentRef;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
import org.jboss.logging.Logger;
@@ -122,7 +124,7 @@
parameter.getName(), parameter.getVariable(),
parameter.getTypeArguments(),
new boolean[] {parameter.isSwaRef(), parameter.isXop()},
- false
+ false, parameter.isXmlList(), parameter.getAdapter()
);
}
clazz.stopPruning(!prune);
@@ -159,7 +161,7 @@
addProperty(
clazz, prop.getReturnType().getName(),
new QName(prop.getName()), prop.getName(), null,
- new boolean[] {false, false}, prop.isTransientAnnotated()
+ new boolean[] {false, false}, prop.isTransientAnnotated(), false, null
);
clazz.stopPruning(!prune);
@@ -216,7 +218,7 @@
private void addProperty(CtClass clazz, String typeName,
QName name, String variable, String[] typeArguments,
- boolean[] attachments, boolean xmlTransient)
+ boolean[] attachments, boolean xmlTransient, boolean xmlList, String adapter)
throws CannotCompileException, NotFoundException
{
ConstPool constPool = clazz.getClassFile().getConstPool();
@@ -232,6 +234,12 @@
JavassistUtils.addSignature(field, typeSignature);
}
+
+ // Conformance 3.14 (use of JAXB annotations): An implementation MUST honor any JAXB annotation that
+ // exists on an SEI method or parameter to assure that the proper XML infoset is used when marshalling/
+ // unmarshalling the the return value or parameters of the method. The set of JAXB annotations that MUST be
+ // supported are: javax.xml.bind.annotation.XmlAttachementRef,javax.xml.bind.annotation.XmlList,
+ // javax.xml.bind.XmlMimeType and javax.xml.bind.annotation.adapters.Xml.JavaTypeAdapter
JavassistUtils.Annotation annotation;
// Add @XmlElement
if (!xmlTransient)
@@ -261,6 +269,19 @@
annotation = JavassistUtils.createAnnotation(XmlTransient.class, constPool);
annotation.markField(field);
}
+ //@XmlList
+ if(xmlList)
+ {
+ annotation = JavassistUtils.createAnnotation(XmlList.class, constPool);
+ annotation.markField(field);
+ }
+ //@XmlJavaTypeAdapter
+ if (adapter != null)
+ {
+ annotation = JavassistUtils.createAnnotation(XmlJavaTypeAdapter.class, constPool);
+ annotation.addClassParameter("value", adapter);
+ annotation.markField(field);
+ }
clazz.addField(field);
// Add accessor methods
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -23,7 +23,7 @@
import java.util.List;
-import javax.xml.ws.Binding21;
+import javax.xml.ws.Binding;
import javax.xml.ws.handler.Handler;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
@@ -34,7 +34,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public interface BindingExt extends Binding21
+public interface BindingExt extends Binding
{
/** Get the handler chain for a given type */
List<Handler> getHandlerChain(HandlerType handlerType);
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -25,13 +25,11 @@
import java.util.Map;
import javax.xml.ws.Binding;
-import javax.xml.ws.EndpointReference;
+import javax.xml.ws.BindingProvider;
import javax.xml.ws.WebServiceException;
-import javax.xml.ws.wsaddressing.BindingProvider21;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.http.HTTPBinding;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.core.CommonBindingProvider;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.EndpointMetaData.Type;
@@ -43,7 +41,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public class BindingProviderImpl extends CommonBindingProvider implements BindingProvider21
+public class BindingProviderImpl extends CommonBindingProvider implements BindingProvider
{
private Map<String, Object> requestContext = new HashMap<String, Object>();
private Map<String, Object> responseContext = new HashMap<String, Object>();
@@ -94,14 +92,4 @@
{
return (Binding)binding;
}
-
- public EndpointReference getEndpointReference()
- {
- throw new NotImplementedException();
- }
-
- public <T extends EndpointReference> T getEndpointReference(Class<T> clazz)
- {
- throw new NotImplementedException();
- }
}
Copied: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java (from rev 9105, stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java)
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java (rev 0)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,52 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.core.jaxws.binding;
+
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+/**
+ * Transforms an EPR to an instance of a given EndpointReference class
+ *
+ * @since 12-Jan-2009
+ * @author alessio.soldano(a)jboss.com
+ *
+ */
+public class EndpointReferenceUtil {
+
+ public static <T extends EndpointReference> T transform(Class<T> clazz, EndpointReference epr) {
+ assert epr != null;
+ if (clazz.isAssignableFrom(W3CEndpointReference.class)) {
+ if (epr instanceof W3CEndpointReference) {
+ return (T) epr;
+ }
+ else
+ {
+ throw new WebServiceException("Unsupported EndpointReference: " + epr);
+ }
+ }
+ //transformations from different types of EndpointReference could be supported in future...
+
+ throw new WebServiceException("EndpointReference of type " + clazz + " not supported.");
+ }
+}
Copied: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java (from rev 9105, stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java)
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java (rev 0)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,182 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.core.jaxws.client;
+
+import java.util.List;
+
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.core.jaxws.binding.BindingExt;
+import org.jboss.ws.extensions.addressing.jaxws.WSAddressingClientHandler;
+import org.jboss.ws.feature.FastInfosetFeature;
+import org.jboss.ws.feature.JsonEncodingFeature;
+import org.jboss.ws.feature.SchemaValidationFeature;
+import org.jboss.ws.metadata.umdm.EndpointMetaData;
+import org.jboss.ws.metadata.umdm.FeatureSet;
+import org.jboss.ws.metadata.umdm.ServiceMetaData;
+import org.jboss.ws.metadata.wsdl.Extendable;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.wsf.common.DOMWriter;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
+
+/**
+ * Process WebServiceFeature provided on client side
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 14-Jan-2009
+ *
+ */
+public class ClientFeatureProcessor
+{
+ private static Logger log = Logger.getLogger(ClientFeatureProcessor.class);
+
+ private static FeatureSet supportedFeatures = new FeatureSet();
+ static
+ {
+ supportedFeatures.addFeature(new FastInfosetFeature());
+ supportedFeatures.addFeature(new JsonEncodingFeature());
+ supportedFeatures.addFeature(new SchemaValidationFeature());
+ supportedFeatures.addFeature(new AddressingFeature());
+ supportedFeatures.addFeature(new MTOMFeature());
+ supportedFeatures.addFeature(new RespectBindingFeature());
+ }
+
+ public static <T> void processFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ {
+ if (!supportedFeatures.hasFeature(feature.getClass()))
+ {
+ throw new IllegalArgumentException("Unsupported feature: " + feature);
+ }
+ processAddressingFeature(feature, epMetaData, stub);
+ processMTOMFeature(feature, epMetaData, stub);
+ processRespectBindingFeature(feature, epMetaData, stub);
+ epMetaData.addFeature(feature);
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an AddressingFeature or not.
+ * In the former case, addressing is setup.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private static <T> void processAddressingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof AddressingFeature && feature.isEnabled())
+ {
+ BindingExt bindingExt = (BindingExt)((BindingProvider)stub).getBinding();
+ List<Handler> handlers = bindingExt.getHandlerChain(HandlerType.POST);
+ handlers.add(new WSAddressingClientHandler());
+ bindingExt.setHandlerChain(handlers, HandlerType.POST);
+ }
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an MTOMFeature or not.
+ * In the former case, mtom is setup.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ private static <T> void processMTOMFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof MTOMFeature)
+ {
+ SOAPBinding binding = (SOAPBinding)((BindingProvider)stub).getBinding();
+ binding.setMTOMEnabled(feature.isEnabled());
+ }
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an RespectBindingFeature or not.
+ * In the former case, the respect binding checks are performed.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ private static <T> void processRespectBindingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof RespectBindingFeature && feature.isEnabled())
+ {
+ ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+ WSDLDefinitions wsdlDefinitions = serviceMetaData.getWsdlDefinitions();
+
+ WSDLService wsdlService = wsdlDefinitions.getService(serviceMetaData.getServiceName());
+ if (wsdlService != null)
+ {
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoint(epMetaData.getPortName());
+ if (wsdlEndpoint != null)
+ {
+ // Conformance 6.11 (javax.xml.ws.RespectBindingFeature): When the javax.xml.ws.RespectBindingFeature
+ // is enabled, a JAX-WS implementation MUST inspect the wsdl:binding at runtime to determine
+ // result and parameter bindings as well as any wsdl:extensions that have the required=true attribute.
+ // All required wsdl:extensions MUST be supported and honored by a JAX-WS implementation unless a
+ // specific wsdl:extension has be explicitly disabled via a WebServiceFeature.
+ checkNotUnderstoodExtElements(wsdlEndpoint, epMetaData);
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ checkNotUnderstoodExtElements(wsdlBinding, epMetaData);
+ }
+ else
+ {
+ log.warn("Cannot find port " + epMetaData.getPortName());
+ }
+ }
+ }
+ }
+
+ private static void checkNotUnderstoodExtElements(Extendable extendable, EndpointMetaData epMetaData)
+ {
+ List<WSDLExtensibilityElement> notUnderstoodList = extendable.getNotUnderstoodExtElements();
+ for (WSDLExtensibilityElement el : notUnderstoodList)
+ {
+ boolean disabledByFeature = false; //TODO [JBWS-2459]
+ if (el.isRequired() && !disabledByFeature)
+ {
+ String s = DOMWriter.printNode(el.getElement(), true);
+ throw new WebServiceException("RespectBindingFeature enabled and a required not understood element was found: " + s);
+ }
+ }
+ }
+
+}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -48,7 +48,6 @@
import javax.xml.ws.http.HTTPException;
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.soap.SOAPFaultException;
-import javax.xml.ws.wsaddressing.BindingProvider21;
import org.jboss.remoting.transport.http.HTTPMetadataConstants;
import org.jboss.util.NotImplementedException;
@@ -87,7 +86,7 @@
* @author Thomas.Diesler(a)jboss.org
* @since 04-Jul-2006
*/
-public class ClientImpl extends CommonClient implements org.jboss.ws.extensions.wsrm.api.RMProvider, BindingProvider21
+public class ClientImpl extends CommonClient implements org.jboss.ws.extensions.wsrm.api.RMProvider, BindingProvider
{
// the associated endpoint meta data
@@ -454,12 +453,12 @@
public EndpointReference getEndpointReference()
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference();
}
public <T extends EndpointReference> T getEndpointReference(Class<T> clazz)
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference(clazz);
}
public EndpointConfigMetaData getEndpointConfigMetaData()
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -38,7 +38,6 @@
import javax.xml.transform.Source;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Binding;
-import javax.xml.ws.Binding21;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.EndpointReference;
@@ -306,7 +305,7 @@
private RemoteConnection getRemotingConnection()
{
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -433,7 +432,7 @@
}
}
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -455,7 +454,7 @@
private Object getReturnObject(MessageAbstraction resMsg)
{
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -535,12 +534,12 @@
public EndpointReference getEndpointReference()
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference();
}
public <T extends EndpointReference> T getEndpointReference(Class<T> clazz)
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference(clazz);
}
public String getConfigFile()
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -21,37 +21,43 @@
*/
package org.jboss.ws.core.jaxws.spi;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.concurrent.Executor;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Binding;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServicePermission;
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
+
import org.jboss.logging.Logger;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.core.jaxws.binding.BindingProviderImpl;
+import org.jboss.ws.core.jaxws.binding.EndpointReferenceUtil;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.http.HttpContext;
import org.jboss.wsf.spi.http.HttpServer;
import org.jboss.wsf.spi.http.HttpServerFactory;
+import org.jboss.wsf.spi.management.ServerConfig;
+import org.jboss.wsf.spi.management.ServerConfigFactory;
import org.w3c.dom.Element;
-import javax.xml.transform.Source;
-import javax.xml.ws.Binding;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Endpoint21;
-import javax.xml.ws.EndpointReference;
-import javax.xml.ws.WebServicePermission;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.concurrent.Executor;
-
/**
* A Web service endpoint implementation.
*
* @author Thomas.Diesler(a)jboss.com
* @since 07-Jul-2006
*/
-public class EndpointImpl extends Endpoint21
+public class EndpointImpl extends Endpoint
{
// provide logging
private final Logger log = Logger.getLogger(EndpointImpl.class);
@@ -62,11 +68,12 @@
private Object implementor;
private Executor executor;
private List<Source> metadata;
- private BindingProvider bindingProvider;
+ private BindingProviderImpl bindingProvider;
private Map<String, Object> properties = new HashMap<String, Object>();
private HttpContext serverContext;
private boolean isPublished;
private boolean isDestroyed;
+ private URI address;
public EndpointImpl(String bindingId, Object implementor)
{
@@ -99,18 +106,17 @@
* @param address specifying the address to use. The address must be compatible with the binding specified at the time the endpoint was created.
*/
@Override
- public void publish(String address)
+ public void publish(String addr)
{
- log.debug("publish: " + address);
+ log.debug("publish: " + addr);
- URI addrURI;
try
{
- addrURI = new URI(address);
+ this.address = new URI(addr);
}
catch (URISyntaxException e)
{
- throw new IllegalArgumentException("Invalid address: " + address);
+ throw new IllegalArgumentException("Invalid address: " + addr);
}
// Check with the security manger
@@ -122,7 +128,7 @@
httpServer.setProperties(properties);
httpServer.start();
- String path = addrURI.getPath();
+ String path = address.getPath();
String contextRoot = "/" + new StringTokenizer(path, "/").nextToken();
HttpContext context = httpServer.createContext(contextRoot);
@@ -168,11 +174,30 @@
if (context instanceof HttpContext)
{
serverContext = (HttpContext)context;
+ address = getAddressFromConfigAndContext(serverContext);
HttpServer httpServer = serverContext.getHttpServer();
httpServer.publish(serverContext, this);
isPublished = true;
}
}
+
+ private static URI getAddressFromConfigAndContext(HttpContext context)
+ {
+ try
+ {
+ SPIProvider provider = SPIProviderResolver.getInstance().getProvider();
+ ServerConfigFactory spi = provider.getSPI(ServerConfigFactory.class);
+ ServerConfig serverConfig = spi.getServerConfig();
+ String host = serverConfig.getWebServiceHost();
+ int port = serverConfig.getWebServicePort();
+ String hostAndPort = host + (port > 0 ? ":" + port : "");
+ return new URI("http://" + hostAndPort + context.getContextRoot());
+ }
+ catch (URISyntaxException e)
+ {
+ throw new WebServiceException("Error while getting endpoint address from context!", e);
+ }
+ }
@Override
public void stop()
@@ -261,12 +286,27 @@
@Override
public EndpointReference getEndpointReference(Element... referenceParameters)
{
- throw new NotImplementedException();
+ return getEndpointReference(W3CEndpointReference.class, referenceParameters);
}
@Override
public <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters)
{
- throw new NotImplementedException();
+ if (isDestroyed || !isPublished)
+ throw new WebServiceException("Cannot get EPR for an unpubblished or already destroyed endpoint!");
+ if (getBinding() instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get epr when using the XML/HTTP binding");
+ }
+ W3CEndpointReferenceBuilder builder = new W3CEndpointReferenceBuilder();
+ builder.address(address.toString());
+ builder.wsdlDocumentLocation(address.toString() + "?wsdl");
+ //TODO set other parameters in the builder
+ if (referenceParameters != null && W3CEndpointReference.class.getName().equals(clazz.getName()))
+ {
+ for (Element el : referenceParameters)
+ builder.referenceParameter(el);
+ }
+ return EndpointReferenceUtil.transform(clazz, builder.build());
}
}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -30,15 +30,14 @@
import javax.xml.ws.Endpoint;
import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.soap.SOAPBinding;
-import javax.xml.ws.spi.Provider21;
+import javax.xml.ws.spi.Provider;
import javax.xml.ws.spi.ServiceDelegate;
-import javax.xml.ws.spi.ServiceDelegate21;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
-import org.jboss.util.NotImplementedException;
import org.jboss.wsf.common.DOMUtils;
import org.w3c.dom.Element;
@@ -48,7 +47,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 03-May-2006
*/
-public class ProviderImpl extends Provider21
+public class ProviderImpl extends Provider
{
// 6.2 Conformance (Concrete javax.xml.ws.spi.Provider required): An implementation MUST provide
// a concrete class that extends javax.xml.ws.spi.Provider. Such a class MUST have a public constructor
@@ -110,13 +109,6 @@
}
@Override
- public <T extends EndpointReference> T createEndpointReference(Class<T> clazz, QName serviceName, QName portName, Source wsdlDocumentLocation,
- Element... referenceParameters)
- {
- throw new NotImplementedException();
- }
-
- @Override
public W3CEndpointReference createW3CEndpointReference(String address, QName serviceName, QName portName, List<Element> metadata, String wsdlDocumentLocation,
List<Element> referenceParameters)
{
@@ -140,13 +132,23 @@
wsdlLocation = w3c.getWsdlLocation();
serviceName = w3c.getServiceName();
}
- ServiceDelegate21 delegate = (ServiceDelegate21)createServiceDelegate(wsdlLocation, serviceName, Service.class);
+ ServiceDelegate delegate = createServiceDelegate(wsdlLocation, serviceName, Service.class);
return delegate.getPort(epr, sei, features);
}
@Override
public EndpointReference readEndpointReference(Source eprInfoset)
{
- throw new NotImplementedException();
+ if (eprInfoset == null)
+ throw new NullPointerException("Provided eprInfoset cannot be null");
+ try
+ {
+ //we currently support W3CEndpointReference only
+ return new W3CEndpointReference(eprInfoset);
+ }
+ catch (Exception e)
+ {
+ throw new WebServiceException(e);
+ }
}
}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -49,11 +49,12 @@
import javax.xml.ws.addressing.JAXWSAConstants;
import javax.xml.ws.addressing.ReferenceParameters;
import javax.xml.ws.handler.HandlerResolver;
-import javax.xml.ws.spi.ServiceDelegate21;
+import javax.xml.ws.spi.ServiceDelegate;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import org.jboss.logging.Logger;
import org.jboss.ws.core.StubExt;
+import org.jboss.ws.core.jaxws.client.ClientFeatureProcessor;
import org.jboss.ws.core.jaxws.client.ClientImpl;
import org.jboss.ws.core.jaxws.client.ClientProxy;
import org.jboss.ws.core.jaxws.client.DispatchImpl;
@@ -89,7 +90,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 03-May-2006
*/
-public class ServiceDelegateImpl extends ServiceDelegate21
+public class ServiceDelegateImpl extends ServiceDelegate
{
// provide logging
private final Logger log = Logger.getLogger(ServiceDelegateImpl.class);
@@ -461,9 +462,6 @@
@Override
public <T> Dispatch<T> createDispatch(QName portName, Class<T> type, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
Dispatch<T> dispatch = createDispatch(portName, type, mode);
initWebserviceFeatures(dispatch, features);
return dispatch;
@@ -472,9 +470,6 @@
@Override
public <T> Dispatch<T> createDispatch(EndpointReference epr, Class<T> type, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
QName portName = null;
if (epr instanceof W3CEndpointReference)
{
@@ -491,9 +486,6 @@
@Override
public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
Dispatch<Object> dispatch = createDispatch(portName, context, mode);
initWebserviceFeatures(dispatch, features);
return dispatch;
@@ -502,9 +494,6 @@
@Override
public Dispatch<Object> createDispatch(EndpointReference epr, JAXBContext context, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
QName portName = null;
if (epr instanceof W3CEndpointReference)
{
@@ -521,9 +510,6 @@
@Override
public <T> T getPort(QName portName, Class<T> sei, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(portName, sei);
initWebserviceFeatures(port, features);
return port;
@@ -532,9 +518,6 @@
@Override
public <T> T getPort(EndpointReference epr, Class<T> sei, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(sei);
initAddressingProperties((BindingProvider)port, epr);
initWebserviceFeatures(port, features);
@@ -544,9 +527,6 @@
@Override
public <T> T getPort(Class<T> sei, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(sei);
initWebserviceFeatures(port, features);
return port;
@@ -559,7 +539,7 @@
EndpointMetaData epMetaData = ((StubExt)stub).getEndpointMetaData();
for (WebServiceFeature feature : features)
{
- epMetaData.addFeature(feature);
+ ClientFeatureProcessor.processFeature(feature, epMetaData, stub);
}
}
}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -31,6 +31,7 @@
import javassist.bytecode.MethodInfo;
import javassist.bytecode.SignatureAttribute;
import javassist.bytecode.annotation.ArrayMemberValue;
+import javassist.bytecode.annotation.ClassMemberValue;
import javassist.bytecode.annotation.EnumMemberValue;
import javassist.bytecode.annotation.StringMemberValue;
@@ -105,6 +106,12 @@
enumValue.setValue(value.name());
annotation.addMemberValue(name, enumValue);
}
+
+ public void addClassParameter(String name, String value)
+ {
+ ClassMemberValue classValue = new ClassMemberValue(value, constPool);
+ annotation.addMemberValue(name, classValue);
+ }
public void addParameter(String name, String[] values)
{
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -27,6 +27,7 @@
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.wsf.common.handler.GenericSOAPHandler;
+import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
@@ -43,6 +44,8 @@
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
/**
@@ -131,6 +134,8 @@
msgContext.setScope(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES, Scope.APPLICATION);
msgContext.put(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND, addrProps);
msgContext.setScope(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND, Scope.APPLICATION);
+ msgContext.put(MessageContext.REFERENCE_PARAMETERS, convertToElementList(addrProps.getReferenceParameters().getElements()));
+ msgContext.setScope(MessageContext.REFERENCE_PARAMETERS, Scope.APPLICATION);
}
}
catch (SOAPException ex)
@@ -140,4 +145,18 @@
return true;
}
+
+ private static List<Element> convertToElementList(List<Object> objects)
+ {
+ if (objects == null) return null;
+ List<Element> elements = new LinkedList<Element>();
+ for (Object o : objects)
+ {
+ if (o instanceof Element)
+ {
+ elements.add((Element)o);
+ }
+ }
+ return elements;
+ }
}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -27,6 +27,7 @@
import org.jboss.ws.extensions.addressing.metadata.AddressingOpMetaExt;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.wsf.common.handler.GenericSOAPHandler;
+import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
@@ -40,6 +41,8 @@
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
/**
@@ -82,9 +85,24 @@
addrProps.readHeaders(soapMessage);
msgContext.put(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND, addrProps);
msgContext.setScope(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND, Scope.APPLICATION);
-
+ msgContext.put(MessageContext.REFERENCE_PARAMETERS, convertToElementList(addrProps.getReferenceParameters().getElements()));
+ msgContext.setScope(MessageContext.REFERENCE_PARAMETERS, Scope.APPLICATION);
return true;
}
+
+ private static List<Element> convertToElementList(List<Object> objects)
+ {
+ if (objects == null) return null;
+ List<Element> elements = new LinkedList<Element>();
+ for (Object o : objects)
+ {
+ if (o instanceof Element)
+ {
+ elements.add((Element)o);
+ }
+ }
+ return elements;
+ }
protected boolean handleOutbound(MessageContext msgContext)
{
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -27,7 +27,7 @@
import javax.xml.namespace.QName;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
/**
@@ -37,8 +37,7 @@
*
*/
@WebServiceClient(name = "EventingService", targetNamespace = "http://schemas.xmlsoap.org/ws/2004/08/eventing", wsdlLocation = "wind.wsdl")
-public class EventingService
- extends Service21
+public class EventingService extends Service
{
private final static URL WSDL_LOCATION;
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -24,17 +24,41 @@
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.net.URL;
+import java.util.List;
+import javax.xml.ws.RespectBinding;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+import org.jboss.logging.Logger;
import org.jboss.ws.WSException;
import org.jboss.ws.annotation.FastInfoset;
import org.jboss.ws.annotation.JsonEncoding;
import org.jboss.ws.annotation.SchemaValidation;
+import org.jboss.ws.extensions.addressing.jaxws.WSAddressingServerHandler;
import org.jboss.ws.feature.FastInfosetFeature;
import org.jboss.ws.feature.JsonEncodingFeature;
import org.jboss.ws.feature.SchemaValidationFeature;
+import org.jboss.ws.metadata.umdm.HandlerMetaDataJAXWS;
import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
+import org.jboss.ws.metadata.umdm.ServiceMetaData;
+import org.jboss.ws.metadata.wsdl.Extendable;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.wsf.common.DOMUtils;
+import org.jboss.wsf.common.DOMWriter;
import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
import org.xml.sax.ErrorHandler;
/**
@@ -45,28 +69,143 @@
*/
public class EndpointFeatureProcessor
{
+ private static final Logger log = Logger.getLogger(EndpointFeatureProcessor.class);
+
protected void processEndpointFeatures(Deployment dep, ServerEndpointMetaData sepMetaData, Class<?> sepClass)
{
for (Annotation an : sepClass.getAnnotations())
{
- if (an.annotationType() == SchemaValidation.class)
+ WebServiceFeatureAnnotation wsfa = an.annotationType().getAnnotation(WebServiceFeatureAnnotation.class);
+ if (wsfa != null)
{
- processSchemaValidation(dep, sepMetaData, sepClass);
+ if (an.annotationType() == Addressing.class)
+ {
+ Addressing anFeature = sepClass.getAnnotation(Addressing.class);
+ AddressingFeature feature = new AddressingFeature(anFeature.enabled(), anFeature.required());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == MTOM.class)
+ {
+ MTOM anFeature = sepClass.getAnnotation(MTOM.class);
+ MTOMFeature feature = new MTOMFeature(anFeature.enabled(), anFeature.threshold());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == SchemaValidation.class)
+ {
+ processSchemaValidation(dep, sepMetaData, sepClass);
+ }
+ else if (an.annotationType() == FastInfoset.class)
+ {
+ FastInfoset anFeature = sepClass.getAnnotation(FastInfoset.class);
+ FastInfosetFeature feature = new FastInfosetFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == JsonEncoding.class)
+ {
+ JsonEncoding anFeature = sepClass.getAnnotation(JsonEncoding.class);
+ JsonEncodingFeature feature = new JsonEncodingFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == RespectBinding.class)
+ {
+ RespectBinding anFeature = sepClass.getAnnotation(RespectBinding.class);
+ RespectBindingFeature feature = new RespectBindingFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else
+ {
+ throw new WebServiceException("Unsupported feature: " + wsfa.bean());
+ }
}
- else if (an.annotationType() == FastInfoset.class)
+ }
+ }
+
+ protected void setupEndpointFeatures(ServerEndpointMetaData sepMetaData)
+ {
+ setupAddressingFeature(sepMetaData);
+ setupMTOMFeature(sepMetaData);
+ setupRespectBindingFeature(sepMetaData); //this need to be processed last
+ }
+
+ private static void setupAddressingFeature(ServerEndpointMetaData sepMetaData)
+ {
+ AddressingFeature addressingFeature = sepMetaData.getFeature(AddressingFeature.class);
+ if (addressingFeature != null && addressingFeature.isEnabled())
+ {
+ log.debug("AddressingFeature found, installing WS-Addressing post-handler");
+ HandlerMetaDataJAXWS hmd = new HandlerMetaDataJAXWS(HandlerType.POST);
+ hmd.setEndpointMetaData(sepMetaData);
+ hmd.setHandlerClassName(WSAddressingServerHandler.class.getName());
+ hmd.setHandlerName("WSAddressing Handler");
+ hmd.setProtocolBindings("##SOAP11_HTTP ##SOAP12_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP_MTOM");
+ sepMetaData.addHandler(hmd);
+ }
+ }
+
+ private static void setupMTOMFeature(ServerEndpointMetaData sepMetaData)
+ {
+ MTOMFeature mtomFeature = sepMetaData.getFeature(MTOMFeature.class);
+ if (mtomFeature != null && mtomFeature.isEnabled())
+ {
+ String bindingId = sepMetaData.getBindingId();
+ if (SOAPBinding.SOAP11HTTP_BINDING.equals(bindingId))
{
- FastInfoset anFeature = sepClass.getAnnotation(FastInfoset.class);
- FastInfosetFeature feature = new FastInfosetFeature(anFeature.enabled());
- sepMetaData.addFeature(feature);
+ log.debug("MTOMFeature found, setting binding to " + SOAPBinding.SOAP11HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP11HTTP_MTOM_BINDING);
}
- else if (an.annotationType() == JsonEncoding.class)
+ else if (SOAPBinding.SOAP12HTTP_BINDING.equals(bindingId))
{
- JsonEncoding anFeature = sepClass.getAnnotation(JsonEncoding.class);
- JsonEncodingFeature feature = new JsonEncodingFeature(anFeature.enabled());
- sepMetaData.addFeature(feature);
+ log.debug("MTOMFeature found, setting binding to " + SOAPBinding.SOAP12HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP12HTTP_MTOM_BINDING);
}
}
}
+
+ private static void setupRespectBindingFeature(ServerEndpointMetaData sepMetaData)
+ {
+ RespectBindingFeature respectBindingFeature = sepMetaData.getFeature(RespectBindingFeature.class);
+ if (respectBindingFeature != null && respectBindingFeature.isEnabled())
+ {
+ log.debug("RespectBindingFeature found, looking for required not understood extensibility elements...");
+ ServiceMetaData serviceMetaData = sepMetaData.getServiceMetaData();
+ WSDLDefinitions wsdlDefinitions = serviceMetaData.getWsdlDefinitions();
+
+ WSDLService wsdlService = wsdlDefinitions.getService(serviceMetaData.getServiceName());
+ if (wsdlService != null)
+ {
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoint(sepMetaData.getPortName());
+ if (wsdlEndpoint != null)
+ {
+ // Conformance 6.11 (javax.xml.ws.RespectBindingFeature): When the javax.xml.ws.RespectBindingFeature
+ // is enabled, a JAX-WS implementation MUST inspect the wsdl:binding at runtime to determine
+ // result and parameter bindings as well as any wsdl:extensions that have the required=true attribute.
+ // All required wsdl:extensions MUST be supported and honored by a JAX-WS implementation unless a
+ // specific wsdl:extension has be explicitly disabled via a WebServiceFeature.
+ checkNotUnderstoodExtElements(wsdlEndpoint, sepMetaData);
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ checkNotUnderstoodExtElements(wsdlBinding, sepMetaData);
+ }
+ else
+ {
+ log.warn("Cannot find port " + sepMetaData.getPortName());
+ }
+ }
+ }
+ }
+
+ private static void checkNotUnderstoodExtElements(Extendable extendable, ServerEndpointMetaData sepMetaData)
+ {
+ List<WSDLExtensibilityElement> notUnderstoodList = extendable.getNotUnderstoodExtElements();
+ for (WSDLExtensibilityElement el : notUnderstoodList)
+ {
+ boolean disabledByFeature = false; //TODO [JBWS-2459]
+ if (el.isRequired() && !disabledByFeature)
+ {
+ String s = DOMWriter.printNode(el.getElement(), true);
+ throw new WebServiceException("RespectBindingFeature enabled and a required not understood element was found: " + s);
+ }
+ }
+ }
private void processSchemaValidation(Deployment dep, ServerEndpointMetaData sepMetaData, Class<?> sepClass)
{
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -43,7 +43,9 @@
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPMessageHandlers;
import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.ws.BindingType;
@@ -447,12 +449,16 @@
return HolderUtils.isHolderType(javaType) ? ParameterMode.INOUT : ParameterMode.IN;
}
- private WebParam getWebParamAnnotation(Method method, int pos)
+ @SuppressWarnings("unchecked")
+ private <T extends Annotation> T getAnnotation(Class<T> annotation, Method method, int pos)
{
- for (Annotation annotation : method.getParameterAnnotations()[pos])
- if (annotation instanceof WebParam)
- return (WebParam)annotation;
-
+ for (Annotation an : method.getParameterAnnotations()[pos])
+ {
+ if (annotation.isAssignableFrom(an.annotationType()))
+ {
+ return (T)an;
+ }
+ }
return null;
}
@@ -637,7 +643,7 @@
Class<?> javaType = parameterTypes[i];
Type genericType = genericTypes[i];
String javaTypeName = javaType.getName();
- WebParam anWebParam = getWebParamAnnotation(method, i);
+ WebParam anWebParam = getAnnotation(WebParam.class, method, i);
boolean isHeader = anWebParam != null && anWebParam.header();
boolean isWrapped = opMetaData.isDocumentWrapped() && !isHeader;
ParameterMode mode = getParameterMode(anWebParam, javaType);
@@ -660,6 +666,13 @@
WrappedParameter wrappedParameter = new WrappedParameter(wrappedElementName, javaTypeName, variable, i);
wrappedParameter.setTypeArguments(convertTypeArguments(javaType, genericType));
+ wrappedParameter.setXmlList(getAnnotation(XmlList.class, method, i) != null);
+ XmlJavaTypeAdapter xmlJavaTypeAdapter = getAnnotation(XmlJavaTypeAdapter.class, method, i);
+ if (xmlJavaTypeAdapter != null)
+ {
+ //XmlJavaTypeAdapter.type() is for package only
+ wrappedParameter.setAdapter(xmlJavaTypeAdapter.value().getName());
+ }
if (mode != ParameterMode.OUT)
wrappedParameters.add(wrappedParameter);
@@ -727,6 +740,13 @@
{
WrappedParameter wrapped = new WrappedParameter(xmlName, returnTypeName, convertToVariable(xmlName.getLocalPart()), -1);
wrapped.setTypeArguments(convertTypeArguments(returnType, genericReturnType));
+ wrapped.setXmlList(method.getAnnotation(XmlList.class) != null);
+ XmlJavaTypeAdapter xmlJavaTypeAdapter = method.getAnnotation(XmlJavaTypeAdapter.class);
+ if (xmlJavaTypeAdapter != null)
+ {
+ //XmlJavaTypeAdapter.type() is for package only
+ wrapped.setAdapter(xmlJavaTypeAdapter.value().getName());
+ }
// insert at the beginning just for prettiness
wrappedOutputParameters.add(0, wrapped);
@@ -795,8 +815,15 @@
// Add faults
for (Class<?> exClass : method.getExceptionTypes())
- if (!RemoteException.class.isAssignableFrom(exClass))
+ {
+ // Conformance 3.25 (java.lang.RuntimeExceptions and java.rmi.RemoteExceptions):
+ // java.lang.RuntimeException and java.rmi.RemoteException and their subclasses
+ // MUST NOT be treated as service specific exceptions and MUST NOT be mapped to WSDL.
+ if (!RemoteException.class.isAssignableFrom(exClass) && !RuntimeException.class.isAssignableFrom(exClass))
+ {
addFault(opMetaData, exClass);
+ }
+ }
// process operation meta data extension
processMetaExtensions(method, epMetaData, opMetaData);
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -186,6 +186,9 @@
processHandlerChain(sepMetaData, sepClass);
else if (seiClass.isAnnotationPresent(HandlerChain.class))
processHandlerChain(sepMetaData, seiClass);
+
+ //setup web service feature contributions
+ epFeatureProcessor.setupEndpointFeatures(sepMetaData);
// process webservices.xml contributions
processWSDDContribution(sepMetaData);
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -41,7 +41,7 @@
import org.jboss.ws.extensions.wsrm.config.RMPortConfig;
/**
- * ObjectModelFactory for JAXRPC configurations.
+ * ObjectModelFactory for JAXWS configurations.
*
* @author Thomas.Diesler(a)jboss.org
* @author Heiko.Braun(a)jboss.org
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -43,6 +43,8 @@
private Accessor accessor;
private boolean swaRef;
private boolean xop;
+ private boolean xmlList;
+ private String adapter = null;
public WrappedParameter(WrappedParameter wrapped)
{
@@ -153,6 +155,26 @@
this.xop = xop;
}
+ public boolean isXmlList()
+ {
+ return xmlList;
+ }
+
+ public void setXmlList(boolean xmlList)
+ {
+ this.xmlList = xmlList;
+ }
+
+ public String getAdapter()
+ {
+ return adapter;
+ }
+
+ public void setAdapter(String adapter)
+ {
+ this.adapter = adapter;
+ }
+
public String toString()
{
return "[name = " + getName() + ", type = " + getType() + ", typeArgs = " + JavaUtils.printArray(getTypeArguments()) + ", variable = " + getVariable()
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -44,6 +44,7 @@
private Map features = new LinkedHashMap();
private Map properties = new LinkedHashMap();
private Map<String,List<WSDLExtensibilityElement>> extElements = new LinkedHashMap<String,List<WSDLExtensibilityElement>>();
+ private List<WSDLExtensibilityElement> notUnderstoodExtElements = new LinkedList<WSDLExtensibilityElement>();
public WSDLFeature[] getFeatures()
{
@@ -113,4 +114,19 @@
}
return list;
}
+
+ public List<WSDLExtensibilityElement> getNotUnderstoodExtElements()
+ {
+ return notUnderstoodExtElements;
+ }
+
+ public void setNotUnderstoodExtElements(List<WSDLExtensibilityElement> notUnderstoodExtElement)
+ {
+ this.notUnderstoodExtElements = notUnderstoodExtElement;
+ }
+
+ public void addNotUnderstoodExtElement(WSDLExtensibilityElement element)
+ {
+ notUnderstoodExtElements.add(element);
+ }
}
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -21,14 +21,23 @@
*/
package org.jboss.ws.tools.jaxws.impl;
-import com.sun.codemodel.JAnnotationUse;
-import com.sun.codemodel.JAnnotationArrayMember;
-import com.sun.codemodel.JCodeModel;
-import com.sun.codemodel.JDefinedClass;
-import com.sun.codemodel.JExpr;
-import com.sun.codemodel.JFieldVar;
-import com.sun.codemodel.JMethod;
-import com.sun.codemodel.JMod;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.SortedMap;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
import org.jboss.logging.Logger;
import org.jboss.ws.WSException;
import org.jboss.ws.core.jaxws.AbstractWrapperGenerator;
@@ -37,19 +46,17 @@
import org.jboss.ws.metadata.umdm.ParameterMetaData;
import org.jboss.ws.metadata.umdm.WrappedParameter;
import org.jboss.wsf.common.JavaUtils;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.namespace.QName;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.List;
-import java.util.SortedMap;
+import com.sun.codemodel.JAnnotationArrayMember;
+import com.sun.codemodel.JAnnotationUse;
+import com.sun.codemodel.JClass;
+import com.sun.codemodel.JCodeModel;
+import com.sun.codemodel.JDefinedClass;
+import com.sun.codemodel.JExpr;
+import com.sun.codemodel.JFieldVar;
+import com.sun.codemodel.JMethod;
+import com.sun.codemodel.JMod;
+
/**
* Generates source for wrapper beans
*
@@ -105,7 +112,7 @@
addClassAnnotations(clazz, parameterMD.getXmlName(), parameterMD.getXmlType(), null);
for (WrappedParameter wrapped : wrappedParameters)
{
- addProperty(clazz, wrapped.getType(), wrapped.getName(), wrapped.getVariable(), false, loader);
+ addProperty(clazz, wrapped.getType(), wrapped.getName(), wrapped.getVariable(), wrapped.getTypeArguments(), false, wrapped.isXmlList(), wrapped.getAdapter(), loader);
}
}
catch (Exception e)
@@ -130,7 +137,7 @@
for (String property : propertyOrder)
{
ExceptionProperty p = properties.get(property);
- addProperty(clazz, p.getReturnType().getName(), new QName(property), property, p.isTransientAnnotated(), loader);
+ addProperty(clazz, p.getReturnType().getName(), new QName(property), property, null, p.isTransientAnnotated(), false, null, loader);
}
}
catch (Exception e)
@@ -143,15 +150,39 @@
{
return (Boolean.TYPE == type || Boolean.class == type) ? "is" : "get";
}
+
+ private void addProperty(JDefinedClass clazz, String typeName, QName name, String variable, String[] typeArguments, boolean xmlTransient, boolean xmlList, String adapter, ClassLoader loader)
+ throws Exception
+ {
+ // define variable
+ Class<?> javaType = JavaUtils.loadJavaType(typeName, loader);
+ if (JavaUtils.isPrimitive(javaType))
+ {
+ addPrimitiveProperty(clazz, javaType, name, variable, xmlTransient);
+ }
+ else
+ {
+ addProperty(clazz, javaType, name, variable, typeArguments, xmlTransient, xmlList, adapter, codeModel);
+ }
+ }
- private static void addProperty(JDefinedClass clazz, String typeName, QName name, String variable, boolean xmlTransient, ClassLoader loader)
- throws ClassNotFoundException
+ private static void addProperty(JDefinedClass clazz, Class<?> javaType, QName name, String variable, String[] typeArguments, boolean xmlTransient, boolean xmlList,
+ String adapter, JCodeModel codeModel) throws Exception
{
// be careful about reserved keywords when generating variable names
String realVariableName = JavaUtils.isReservedKeyword(variable) ? "_" + variable : variable;
- // define variable
- Class<?> type = JavaUtils.loadJavaType(typeName, loader);
+ //use narrow() for generics: http://forums.java.net/jive/thread.jspa?messageID=209333𳆵
+ JClass type = codeModel.ref(javaType);
+ if (typeArguments != null)
+ {
+ LinkedList<JClass> jclasses = new LinkedList<JClass>();
+ for (String tp : typeArguments)
+ {
+ jclasses.add(codeModel.ref(tp));
+ }
+ type = type.narrow(jclasses);
+ }
JFieldVar field = clazz.field(JMod.PRIVATE, type, realVariableName);
if (xmlTransient == false)
@@ -169,16 +200,59 @@
//XmlTransient
field.annotate(XmlTransient.class);
}
+
+ if (xmlList)
+ {
+ field.annotate(XmlList.class);
+ }
+
+ if (adapter != null)
+ {
+ JAnnotationUse xmlJavaTypeAdapter = field.annotate(XmlJavaTypeAdapter.class);
+ xmlJavaTypeAdapter.param("value", codeModel.ref(adapter));
+ }
// generate acessor get method for variable
- JMethod method = clazz.method(JMod.PUBLIC, type, getterPrefix(type) + JavaUtils.capitalize(variable));
+ JMethod method = clazz.method(JMod.PUBLIC, type, getterPrefix(javaType) + JavaUtils.capitalize(variable));
method.body()._return(JExpr._this().ref(realVariableName));
// generate acessor set method for variable
method = clazz.method(JMod.PUBLIC, void.class, "set" + JavaUtils.capitalize(variable));
method.body().assign(JExpr._this().ref(realVariableName), method.param(type, realVariableName));
}
+
+ private static void addPrimitiveProperty(JDefinedClass clazz, Class<?> javaType, QName name, String variable, boolean xmlTransient)
+ {
+ // be careful about reserved keywords when generating variable names
+ String realVariableName = JavaUtils.isReservedKeyword(variable) ? "_" + variable : variable;
+
+ JFieldVar field = clazz.field(JMod.PRIVATE, javaType, realVariableName);
+
+ if (xmlTransient == false)
+ {
+ // define XmlElement annotation for variable
+ JAnnotationUse annotation = field.annotate(XmlElement.class);
+ annotation.param("name", name.getLocalPart());
+ if (name.getNamespaceURI() != null)
+ {
+ annotation.param("namespace", name.getNamespaceURI());
+ }
+ }
+ else
+ {
+ //XmlTransient
+ field.annotate(XmlTransient.class);
+ }
+ // generate acessor get method for variable
+ JMethod method = clazz.method(JMod.PUBLIC, javaType, getterPrefix(javaType) + JavaUtils.capitalize(variable));
+ method.body()._return(JExpr._this().ref(realVariableName));
+
+ // generate acessor set method for variable
+ method = clazz.method(JMod.PUBLIC, void.class, "set" + JavaUtils.capitalize(variable));
+ method.body().assign(JExpr._this().ref(realVariableName), method.param(javaType, realVariableName));
+ }
+
private static void addClassAnnotations(JDefinedClass clazz, QName xmlName, QName xmlType, String[] propertyOrder)
{
// define XmlRootElement class annotation
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -198,8 +198,8 @@
args.add(outputDir.getAbsolutePath());
// Always set the target
- if(!target.equals("2.0"))
- throw new IllegalArgumentException("WSConsume (native) only supports JAX-WS 2.0");
+ if(!target.equals("2.0") && !target.equals("2.1"))
+ throw new IllegalArgumentException("WSConsume (native) only supports JAX-WS 2.0 and 2.1");
args.add("-target");
args.add(target);
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -313,33 +313,78 @@
for (int i = 0; i < extElements.size(); i++)
{
ExtensibilityElement extElement = (ExtensibilityElement)extElements.get(i);
- processPolicyElements(extElement, dest);
- //add processing of further extensibility element types below
+ if (extElement instanceof UnknownExtensibilityElement)
+ {
+ UnknownExtensibilityElement uee = (UnknownExtensibilityElement)extElement;
+ boolean understood = false;
+ understood = understood || processPolicyElements(uee, dest);
+ understood = understood || processUseAddressing(uee, dest);
+ //add processing of further extensibility element types below
+
+ if (!understood)
+ {
+ processNotUnderstoodExtesibilityElement(uee, dest);
+ }
+ }
}
}
- private void processPolicyElements(ExtensibilityElement extElement, Extendable dest)
+ /**
+ * Process the provided extensibility element looking for policies or policy references.
+ * Returns true if the provided element is policy related, false otherwise.
+ *
+ * @param extElement
+ * @param dest
+ * @return
+ */
+ private boolean processPolicyElements(UnknownExtensibilityElement extElement, Extendable dest)
{
- if (extElement instanceof UnknownExtensibilityElement)
+ boolean result = false;
+ Element srcElement = extElement.getElement();
+ if (Constants.URI_WS_POLICY.equals(srcElement.getNamespaceURI()))
{
- Element srcElement = ((UnknownExtensibilityElement)extElement).getElement();
- if (Constants.URI_WS_POLICY.equals(srcElement.getNamespaceURI()))
+ //copy missing namespaces from the source element to our element
+ Element element = (Element)srcElement.cloneNode(true);
+ copyMissingNamespaceDeclarations(element, srcElement);
+ if (element.getLocalName().equals("Policy"))
{
- //copy missing namespaces from the source element to our element
- Element element = (Element)srcElement.cloneNode(true);
- copyMissingNamespaceDeclarations(element, srcElement);
- if (element.getLocalName().equals("Policy"))
- {
- dest.addExtensibilityElement(new WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICY, element));
- }
- else if (element.getLocalName().equals("PolicyReference"))
- {
- dest.addExtensibilityElement(new WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICYREFERENCE, element));
- }
-
+ WSDLExtensibilityElement el = new WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICY, element);
+ el.setRequired("true".equalsIgnoreCase(element.getAttribute("required")));
+ dest.addExtensibilityElement(el);
+ result = true;
}
+ else if (element.getLocalName().equals("PolicyReference"))
+ {
+ WSDLExtensibilityElement el = new WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICYREFERENCE, element);
+ el.setRequired("true".equalsIgnoreCase(element.getAttribute("required")));
+ dest.addExtensibilityElement(el);
+ result = true;
+ }
}
+ return result;
}
+
+ /**
+ * Process the provided extensibility element looking for UsingAddressing.
+ * Returns true if the provided element is UsingAddressing, false otherwise.
+ *
+ * @param extElement
+ * @param dest
+ * @return
+ */
+ private boolean processUseAddressing(UnknownExtensibilityElement extElement, Extendable dest)
+ {
+ log.warn("UsingAddressing extensibility element not supported yet.");
+ return false;
+ }
+
+ private void processNotUnderstoodExtesibilityElement(UnknownExtensibilityElement extElement, Extendable dest)
+ {
+ Element element = (Element)extElement.getElement().cloneNode(true);
+ WSDLExtensibilityElement notUnderstoodElement = new WSDLExtensibilityElement("notUnderstoodExtensibilityElement", element);
+ notUnderstoodElement.setRequired("true".equalsIgnoreCase(element.getAttributeNS(Constants.NS_WSDL11, "required")));
+ dest.addNotUnderstoodExtElement(notUnderstoodElement);
+ }
private void processTypes(Definition srcWsdl, URL wsdlLoc) throws IOException, WSDLException
{
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/Action.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,142 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The <code>Action</code> annotation allows explicit association of <code>Action</code>
+ * message addressing property with <code>input</code>, <code>output</code>, and
+ * <code>fault</code> messages of the mapped WSDL operation.
+ * <p>
+ * This annotation can be specified on each method of a service endpoint interface.
+ * For such a method, the mapped operation in the generated WSDL
+ * contains explicit <code>wsaw:Action</code> attribute on the WSDL <code>input</code>,
+ * <code>output</code> and <code>fault</code> messages of the WSDL <code>operation</code>
+ * based upon which attributes of the <code>Action</code> annotation have been specified.
+ * <p>
+ * <b>Example 1</b>: Specify explicit values for <code>Action</code> message addressing property
+ * for <code>input</code> and <code>output</code> messages.
+ *
+ * <pre>
+ * @javax.jws.WebService
+ * public class AddNumbersImpl {
+ * @javax.xml.ws.Action(
+ * input="http://example.com/inputAction",
+ * output="http://example.com/outputAction")
+ * public int addNumbers(int number1, int number2) {
+ * return number1 + number2;
+ * }
+ * }
+ * </pre>
+ *
+ * The generated WSDL looks like:
+ * <pre>
+ * <definitions targetNamespace="http://example.com/numbers" ...>
+ * ...
+ * <portType name="AddNumbersPortType">
+ * <operation name="AddNumbers">
+ * <input message="tns:AddNumbersInput" name="Parameters"
+ * wsaw:Action="http://example.com/inputAction"/>
+ * <output message="tns:AddNumbersOutput" name="Result"
+ * wsaw:Action="http://example.com/outputAction"/>
+ * </operation>
+ * <portType>
+ * ...
+ * <definitions>
+ * </pre>
+ *
+ * <p>
+ * <b>Example 2</b>: Specify explicit value for <code>Action</code> message addressing property
+ * for only the <code>input</code> message. The default values are used for the
+ * <code>output</code> message.
+ *
+ * <pre>
+ * @javax.jws.WebService
+ * public class AddNumbersImpl {
+ * @javax.xml.ws.Action(input="http://example.com/inputAction")
+ * public int addNumbers(int number1, int number2) {
+ * return number1 + number2;
+ * }
+ * }
+ * </pre>
+ *
+ * The generated WSDL looks like:
+ *
+ * <pre>
+ * <definitions targetNamespace="http://example.com/numbers" ...>
+ * ...
+ * <portType name="AddNumbersPortType">
+ * <operation name="AddNumbers">
+ * <input message="tns:AddNumbersInput" name="Parameters"
+ * wsaw:Action="http://example.com/inputAction"/>
+ * <output message="tns:AddNumbersOutput" name="Result"/>
+ * </operation>
+ * <portType>
+ * ...
+ * <definitions>
+ * </pre>
+ *
+ * It is legitimate to specify an explicit value for <code>Action</code> message addressing property for
+ * <code>output</code> message only. In this case, a default value of <code>wsaw:Action</code> is used
+ * for the <code>input</code> message.
+ *
+ * <p>
+ * <b>Example 3</b>: See <a href="FaultAction.html">FaultAction</a> annotation for an example of
+ * how to specify an explicit value for <code>Action</code> message addressing property for the
+ * <code>fault</code> message.
+ *
+ * @see FaultAction
+ *
+ * @since JAX-WS 2.1
+ */
+
+@Documented
+(a)Retention(RetentionPolicy.RUNTIME)
+(a)Target(ElementType.METHOD)
+public @interface Action {
+ /**
+ * Explicit value of <code>Action</code> message addressing property for the <code>input</code>
+ * message of the operation. If the value is "", then no <code>wsaw:Action</code>
+ * is generated.
+ */
+ String input() default "";
+
+ /**
+ * Explicit value of <code>Action</code> message addressing property for the <code>output</code>
+ * message of the operation. If the value is "", then no <code>wsaw:Action</code>
+ * is generated.
+ */
+ String output() default "";
+
+ /**
+ * Explicit value of <code>Action</code> message addressing property for the <code>fault</code>
+ * message(s) of the operation. Each exception that is mapped to a fault and requires explicit
+ * <code>Action</code> message addressing property, need to be specified as a value in this property
+ * using <a href="FaultAction.html">FaultAction</a> annotation.
+ */
+ FaultAction[] fault() default {};
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -28,7 +28,6 @@
**/
public interface Binding
{
-
/**
* Gets a copy of the handler chain for a protocol binding instance.
* If the returned chain is modified a call to <code>setHandlerChain</code>
@@ -50,4 +49,14 @@
* chain.
*/
public void setHandlerChain(java.util.List<javax.xml.ws.handler.Handler> chain);
+
+ /**
+ * Get the URI for this binding instance.
+ *
+ * @return String The binding identifier for the port.
+ * Never returns <code>null</code>
+ *
+ * @since JAX-WS 2.1
+ */
+ String getBindingID();
}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -23,6 +23,8 @@
import java.util.Map;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
/** The <code>BindingProvider</code> interface provides access to the
* protocol binding and associated context objects for request and
* response message processing.
@@ -104,4 +106,69 @@
* @return The Binding for this binding provider.
**/
Binding getBinding();
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>BindingProvider</code> instance.
+ * <p>
+ * If the Binding for this <code>bindingProvider</code> is
+ * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
+ * <code>W3CEndpointReference</code> MUST be returned.
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @return EndpointReference of the target endpoint associated with this
+ * <code>BindingProvider</code> instance.
+ *
+ * @throws java.lang.UnsupportedOperationException If this
+ * <code>BindingProvider</code> uses the XML/HTTP binding.
+ *
+ * @see W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ */
+ public EndpointReference getEndpointReference();
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>BindingProvider</code> instance. The instance
+ * returned will be of type <code>clazz</code>.
+ * <p>
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param clazz Specifies the type of <code>EndpointReference</code>
+ * that MUST be returned.
+
+ * @return EndpointReference of the target endpoint associated with this
+ * <code>BindingProvider</code> instance. MUST be of type
+ * <code>clazz</code>.
+
+ * @throws javax.xml.ws.WebServiceException If the Class <code>clazz</code>
+ * is not supported by this implementation.
+ * @throws java.lang.UnsupportedOperationException If this
+ * <code>BindingProvider</code> uses the XML/HTTP binding.
+ *
+ * @since JAX-WS 2.1
+ */
+ public <T extends EndpointReference> T getEndpointReference(Class<T> clazz);
+
}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -23,6 +23,9 @@
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.spi.Provider;
+
+import org.w3c.dom.Element;
+
import java.util.List;
import java.util.Map;
@@ -291,5 +294,79 @@
* this instance.
**/
public abstract void setProperties(Map<String, Object> properties);
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>Endpoint</code> instance.
+ * <p>
+ * If the Binding for this <code>bindingProvider</code> is
+ * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
+ * <code>W3CEndpointReference</code> MUST be returned.
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of this <code>Endpoint</code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>EndpointReference</code> or if the <code>Endpoint</code> is
+ * not in the published state.
+ * @throws UnsupportedOperationException If this <code>BindingProvider</code>
+ * uses the XML/HTTP binding.
+ *
+ * @see javax.xml.ws.wsaddressing.W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract EndpointReference getEndpointReference(Element... referenceParameters);
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>Endpoint</code> instance.
+ * <p>
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of type <code>clazz</code> of this
+ * <code>Endpoint<code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+
+ * @throws WebServiceException If any error in the creation of
+ * the <code>EndpointReference</code> or if the <code>Endpoint</code> is
+ * not in the published state or if the <code>clazz</code> is not a supported
+ * <code>EndpointReference</code> type.
+ * @throws UnsupportedOperationException If this <code>BindingProvider</code>
+ * uses the XML/HTTP binding.
+ *
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters);
+
}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,186 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.io.StringWriter;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.ws.spi.Provider;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+/**
+ * This class represents an WS-Addressing EndpointReference
+ * which is a remote reference to a web service endpoint.
+ * See <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
+ * WS-Addressing</a>
+ * for more information on WS-Addressing EndpointReferences.
+ * <p>
+ * This class is immutable as the typical web service developer
+ * need not be concerned with its contents. The web service
+ * developer should use this class strictly as a mechanism to
+ * reference a remote web service endpoint. See the {@link Service} APIs
+ * that clients can use to that utilize an <code>EndpointReference</code>.
+ * See the {@link javax.xml.ws.Endpoint}, and
+ * {@link javax.xml.ws.BindingProvider} APIs on how
+ * <code>EndpointReferences</code> can be created for published
+ * endpoints.
+ * <p>
+ * Concrete implementations of this class will represent
+ * an <code>EndpointReference</code> for a particular version of Addressing.
+ * For example the {@link W3CEndpointReference} is for use
+ * with W3C WS-Addressing 1.0 - Core Recommendation.
+ * If JAX-WS implementors need to support different versions
+ * of addressing, they should write their own
+ * <code>EndpointReference</code> subclass for that version.
+ * This will allow a JAX-WS implementation to createEndpointReference
+ * vendor specific <code>EndpointReferences</code> that that
+ * vendor can use to flag a different version of
+ * addressing.
+ * <p>
+ * Web service developers that wish to pass or return
+ * <code>EndpointReferences</code> in Java methods in an
+ * SEI should use
+ * concrete instances of an <code>EndpointReference</code> such
+ * as the <code>W3CEndpointReferendce</code>. This way the
+ * schema mapped from the SEI will be more descriptive of the
+ * type of endpoint reference being passed.
+ * <p>
+ * JAX-WS implementors are expected to extract the XML infoset
+ * from an <CODE>EndpointReferece</CODE> using the
+ * <code>{@link EndpointReference#writeTo}</code>
+ * method.
+ * <p>
+ * JAXB will bind this class to xs:anyType. If a better binding
+ * is desired, web services developers should use a concrete
+ * subclass such as {@link W3CEndpointReference}.
+ *
+ * @see W3CEndpointReference
+ * @see Service
+ * @since JAX-WS 2.1
+ */
+//@XmlTransient // to treat this class like Object as far as databinding is concerned (proposed JAXB 2.1 feature)
+public abstract class EndpointReference
+{
+ //
+ //Default constructor to be only called by derived types.
+ //
+ protected EndpointReference()
+ {
+ };
+
+ /**
+ * Factory method to read an EndpointReference from the infoset contained in
+ * <code>eprInfoset</code>. This method delegates to the vendor specific
+ * implementation of the {@link javax.xml.ws.spi.Provider#readEndpointReference} method.
+ *
+ * @param eprInfoset The <code>EndpointReference<code> infoset to be unmarshalled
+ *
+ * @return the EndpointReference unmarshalled from <code>eprInfoset</code>
+ * never <code>null</code>
+ * @throws WebServiceException
+ * if an error occurs while creating the
+ * <code>EndpointReference</code> from the <CODE>eprInfoset</CODE>
+ * @throws java.lang.IllegalArgumentException
+ * if the null <code>eprInfoset</tt> value is given.
+ */
+ public static EndpointReference readFrom(Source eprInfoset)
+ {
+ return Provider.provider().readEndpointReference(eprInfoset);
+ }
+
+ /**
+ * write this EndpointReference to the specified infoset format
+ * @throws WebServiceException
+ * if there is an error writing the
+ * EndpointReference to the specified <code>result</code>.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the null <code>result</tt> value is given.
+ */
+ public abstract void writeTo(Result result);
+
+ /**
+ * The getPort method returns a proxy. If there
+ * are any reference parameters in the
+ * <code>EndpointReference</code> instance, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * The <code>EndpointReference</code> instance specifies the
+ * endpoint that will be invoked by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL Metadata from this <code>EndpointReference</code> or from
+ * annotations on the <code>serviceEndpointInterface</code>.
+ * <p>
+ * Because this port is not created from a Service object, handlers
+ * will not automatically be configured, and the HandlerResolver
+ * and Executor cannot be get or set for this port. The
+ * <code>BindingProvider().getBinding().setHandlerChain()</code>
+ * method can be used to manually configure handlers for this port.
+ *
+ *
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If this
+ * <code>endpointReference</code>
+ * is invalid
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If feature is enabled that is not compatible with
+ * this port or is unsupported.
+ * </UL>
+ *
+ * @see java.lang.reflect.Proxy
+ * @see WebServiceFeature
+ **/
+ public <T> T getPort(Class<T> serviceEndpointInterface, WebServiceFeature... features)
+ {
+ return Provider.provider().getPort(this, serviceEndpointInterface, features);
+ }
+
+ /**
+ * Displays EPR infoset for debugging convenience.
+ */
+ public String toString()
+ {
+ StringWriter w = new StringWriter();
+ writeTo(new StreamResult(w));
+ return w.toString();
+ }
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,57 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The <code>FaultAction</code> annotation is used inside an <a href="Action.html">
+ * Action</a> annotation to allow an explicit association of <code>Action</code> message
+ * addressing property with the <code>fault</code> messages of the WSDL operation mapped from
+ * the exception class.
+ * <p>
+ * In this version of JAX-WS there is no standard way to specify Action values in a WSDL and
+ * there is no standard default value. It is intended that, after the W3C WG on WS-Addressing
+ * has defined these items in a recommendation, a future version of JAX-WS will require the
+ * new standards.
+ *
+ * @since JAX-WS 2.1
+ */
+
+@Documented
+(a)Retention(RetentionPolicy.RUNTIME)
+(a)Target(ElementType.METHOD)
+public @interface FaultAction {
+ /**
+ * Name of the exception class
+ */
+ Class className();
+
+ /**
+ * Value of <code>Action</code> message addressing property for the exception
+ */
+ String value() default "";
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,105 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature clarifies the use of the <code>wsdl:binding</code>
+ * in a JAX-WS runtime.
+ * <p>
+ * This feature is only useful with web services that have an
+ * associated WSDL. Enabling this feature requires that a JAX-WS
+ * implementation inspect the <code>wsdl:binding</code> for an
+ * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
+ * that have the <code>required</code> attribute set to <code>true</code>
+ * are understood and are being used.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
+ * required <code>wsdl:binding</code> extensions are either understood
+ * and used by the runtime, or explicitly disabled by the web service
+ * application. A web service application can disable a particular
+ * extension that has a know <code>WebServiceFeature</code> using
+ * either the {@link BindingType#features} element on the server
+ * or one of the following methods on the client:
+ * <ul>
+ * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,Class,
+ * Service.Mode mode,WebServiceFeature...)}
+ * <li>{@link Service21#createDispatch(EndpointReference,
+ * Class,Service.Mode,
+ * WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(EndpointReference,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
+ * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code> methods on a
+ * generated <code>Service</code>.
+ * </ul>
+ * The runtime MUST also make sure that binding of
+ * SEI parameters/return values respect the <code>wsdl:binding</code>.
+ * With this feature enabled, if a required
+ * <code>wsdl:binding</code> extension is in the WSDL and it is not
+ * supported by a JAX-WS runtime and it has not
+ * been explicitly turned off by the web service developer, then
+ * that JAX-WS runtime MUST behave appropriately based on whether it is
+ * on the client or server:
+ * <UL>
+ * <li>Client: runtime MUST throw a
+ * <code>WebServiceException</code> no sooner than when one of the methods
+ * above is invoked but no later than the first invocation of an endpoint
+ * operation.
+ * <li>throw a WebServiceException and the endpoint MUST fail to start
+ * </ul>
+ * <li> DISABLED: In this Mode, an implementation may choose whether
+ * to inspect the <code>wsdl:binding<code> or not and to what degree
+ * the <code>wsdl:binding</code> will be inspected. For example,
+ * one implementation may choose to behave as if this feature is enabled,
+ * another implementation may only choose to verify the SEI's
+ * parameter/return type bindings.
+ * </ul>
+ *
+ * @see javax.xml.ws.RespectBindingFeature
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+@WebServiceFeatureAnnotation(id = RespectBindingFeature.ID, bean = RespectBindingFeature.class)
+public @interface RespectBinding {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,126 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature clarifies the use of the <code>wsdl:binding</code>
+ * in a JAX-WS runtime.
+ * <p>
+ * This feature is only useful with web services that have an
+ * associated WSDL. Enabling this feature requires that a JAX-WS
+ * implementation inspect the <code>wsdl:binding</code> for an
+ * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
+ * that have the <code>required</code> attribute set to <code>true</code>
+ * are understood and are being used.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
+ * required <code>wsdl:binding</code> extensions are either understood
+ and used by the runtime, or explicitly disabled by the web service
+ * application. A web service application can disable a particular
+ * extension that has a know <code>WebServiceFeature</code> using
+ * either the {@link BindingType#features} element on the server
+ * or one of the following methods on the client:
+ * <ul>
+ * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,Class,
+ * Service.Mode mode,WebServiceFeature...)}
+ * <li>{@link Service21#createDispatch(EndpointReference,
+ * Class,Service.Mode,
+ * WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(EndpointReference,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
+ * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code> methods on a
+ * generated <code>Service</code>.
+ * </ul>
+ * The runtime MUST also make sure that binding of
+ * SEI parameters/return values respect the <code>wsdl:binding</code>.
+ * With this feature enabled, if a required
+ * <code>wsdl:binding</code> extension is in the WSDL and it is not
+ * supported by a JAX-WS runtime and it has not
+ * been explicitly turned off by the web service developer, then
+ * that JAX-WS runtime MUST behave appropriately based on whether it is
+ * on the client or server:
+ * <UL>
+ * <li>Client: runtime MUST throw a
+ * <code>WebServiceException</code> no sooner than when one of the methods
+ * above is invoked but no later than the first invocation of an endpoint
+ * operation.
+ * <li>throw a WebServiceException and the endpoint MUST fail to start
+ * </ul>
+ * <li> DISABLED: In this Mode, an implementation may choose whether
+ * to inspect the <code>wsdl:binding<code> or not and to what degree
+ * the <code>wsdl:binding</code> will be inspected. For example,
+ * one implementation may choose to behave as if this feature is enabled,
+ * another implementation may only choose to verify the SEI's
+ * parameter/return type bindings.
+ * </ul>
+ *
+ * @see javax.xml.ws.soap.AddressingFeature
+ *
+ * @since JAX-WS 2.1
+ */
+public final class RespectBindingFeature extends WebServiceFeature
+{
+ /**
+ *
+ * Constant value identifying the RespectBindingFeature
+ */
+ public static final String ID = "javax.xml.ws.InspectBindingFeature";
+
+ /**
+ * Create an <code>RespectBindingFeature</code>.
+ * The instance created will be enabled.
+ */
+ public RespectBindingFeature()
+ {
+ this.enabled = true;
+ }
+
+ /**
+ * Create an RespectBindingFeature
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ */
+ public RespectBindingFeature(boolean enabled)
+ {
+ this.enabled = enabled;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID()
+ {
+ return ID;
+ }
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -342,4 +342,395 @@
{
delegate.setExecutor(executor);
}
+
+
+
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, type, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param type The class of object used to messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code> element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does not
+ * match the <code>serviceName</code> of this instance.
+ * <li>If the <code>wsaw:EndpointName</code> does not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature;
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> Dispatch<T> createDispatch(EndpointReference endpointReference, Class<T> type, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(endpointReference, type, mode, features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, context, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException
+ * @throws WebServiceException
+ * <UL>
+ * <li>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code> element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does not
+ * match the <code>serviceName</code> of this instance.
+ * <li>If the <code>wsaw:EndpointName</code> does not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public Dispatch<Object> createDispatch(EndpointReference endpointReference, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(endpointReference, context, mode, features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param type The class of object used for messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> Dispatch<T> createDispatch(QName portName, Class<T> type, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(portName, type, mode, features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(portName, context, mode, features);
+ }
+
+ /**
+ * The getPort method returns a proxy. The parameter
+ * <code>serviceEndpointInterface</code> specifies the service
+ * endpoint interface that is supported by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly.
+ * The returned proxy should not be reconfigured by the client.
+ *
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object instance that supports the
+ * specified service endpoint interface.
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(Class<T> serviceEndpointInterface, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(serviceEndpointInterface, features);
+ }
+
+ /**
+ * The getPort method returns a proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * The returned proxy should not be reconfigured by the client.
+ * If this <code>Service</code> instance has a known proxy
+ * port that matches the information contained in
+ * the WSDL,
+ * then that proxy is returned, otherwise a WebServiceException
+ * is thrown.
+ * <p>
+ * Calling this method has the same behavior as the following
+ * <pre>
+ * port = service.getPort(portName, serviceEndpointInterface);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpontName</code> attribute of the
+ * <code>wsaw:ServiceName</code> element in the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface.
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If the <code>wsaw:EndpointName</code> is
+ * missing from the <code>endpointReference</code>
+ * or does not match a wsdl:Port
+ * in the WSDL metadata.
+ * <LI>If the <code>wsaw:ServiceName</code> in the
+ * <code>endpointReference</code> metadata does not
+ * match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If an invalid
+ * <code>endpointReference</code>
+ * is specified.
+ * <LI>If an invalid
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(EndpointReference endpointReference, Class<T> serviceEndpointInterface, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(endpointReference, serviceEndpointInterface, features);
+ }
+
+ /**
+ * The getPort method returns a proxy. A service client
+ * uses this proxy to invoke operations on the target
+ * service endpoint. The <code>serviceEndpointInterface</code>
+ * specifies the service endpoint interface that is supported by
+ * the created dynamic proxy instance.
+ *
+ * @param portName Qualified name of the service endpoint in
+ * the WSDL service description.
+ * @param serviceEndpointInterface Service endpoint interface
+ * supported by the dynamic proxy instance.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that
+ * supports the specified service endpoint
+ * interface.
+ * @throws WebServiceException This exception is thrown in the
+ * following cases:
+ * <UL>
+ * <LI>If there is an error in creation of
+ * the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * or <code>portName</code> is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(QName portName, Class<T> serviceEndpointInterface, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(portName, serviceEndpointInterface, features);
+ }
+
}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -22,6 +22,9 @@
package javax.xml.ws;
import javax.xml.ws.handler.MessageContext;
+
+import org.w3c.dom.Element;
+
import java.security.Principal;
/**
@@ -91,5 +94,52 @@
* being serviced.
**/
public boolean isUserInRole(String role);
+
+ /**
+ * Returns the <code>WEndpointReference</code> for this
+ * endpoint.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of the endpoint associated with this
+ * <code>WebServiceContext</code>.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ *
+ * @see javax.xml.ws.wsaddressing.W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ */
+ public EndpointReference getEndpointReference(Element... referenceParameters);
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this endpoint.
+ * <p>
+ *
+ * @param clazz The type of <code>EndpointReference</code> that
+ * MUST be returned.
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of type <code>clazz</code> of the endpoint
+ * associated with this <code>WebServiceContext</code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ * @throws WebServiceException If the <code>clazz</code> type of
+ * <code>EndpointReference</code> is not supported.
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters);
+
}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,77 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+/**
+ * A WebServiceFeature is used to represent a feature that can be
+ * enabled or disabled for a web service.
+ * <p>
+ * The JAX-WS specification will define some standard features and
+ * JAX-WS implementors are free to define additional features if
+ * necessary. Vendor specific features may not be portable so
+ * caution should be used when using them. Each Feature definition
+ * MUST define a <code>public static final String ID</code>
+ * that can be used in the Feature annotation to refer
+ * to the feature. This ID MUST be unique across all features
+ * of all vendors. When defining a vendor specific feature ID,
+ * use a vendor specific namespace in the ID string.
+ *
+ * @see javax.xml.ws.RespectBindingFeature
+ * @see javax.xml.ws.soap.AddressingFeature
+ * @see javax.xml.ws.soap.MTOMFeature
+ *
+ * @since 2.1
+ */
+public abstract class WebServiceFeature
+{
+ /**
+ * Each Feature definition MUST define a public static final
+ * String ID that can be used in the Feature annotation to refer
+ * to the feature.
+ */
+ // public static final String ID = "some unique feature Identifier";
+ /**
+ * Get the unique identifier for this WebServiceFeature.
+ *
+ * @return the unique identifier for this feature.
+ */
+ public abstract String getID();
+
+ /**
+ * Specifies if the feature is enabled or disabled
+ */
+ protected boolean enabled = false;
+
+ protected WebServiceFeature()
+ {
+ }
+
+ /**
+ * Returns <code>true</code> if this feature is enabled.
+ *
+ * @return <code>true</code> if and only if the feature is enabled .
+ */
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -144,6 +144,16 @@
public static final String PATH_INFO = "javax.xml.ws.http.request.pathinfo";
/**
+ * Standard property: WS Addressing Reference Parameters.
+ * The list MUST include all SOAP headers marked with the
+ * wsa:IsReferenceParameter="true" attribute.
+ * <p>Type: List<Element>
+ *
+ * @since JAX-WS 2.1
+ */
+ public static final String REFERENCE_PARAMETERS = "javax.xml.ws.reference.parameters";
+
+ /**
* Property scope. Properties scoped as <code>APPLICATION</code> are
* visible to handlers,
* client applications and service endpoints; properties scoped as
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,88 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature represents the use of WS-Addressing with either
+ * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this feature
+ * with any other binding is NOT required.
+ * <p>
+ * Enabling this feature will result in the
+ * <code>wsaw:UsingAddressing</code> element being added to the
+ * <code>wsdl:Binding</code> for
+ * the endpoint and in the runtime being capable of responding to
+ * WS-Addressing headers.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, Addressing will be enabled.
+ * If there is not a WSDL associated with the Endpoint and
+ * a WSDL is to be generated, it MUST be generated with the
+ * wsaw:UsingAddressing element. At runtime, Addressing headers
+ * MUST be consumed by the receiver and generated by the
+ * sender even if the WSDL declares otherwise. The
+ * mustUnderstand="0" attribute MUST be used on the Addressing
+ * headers.
+ * <li> DISABLED: In this Mode, Addressing will be disabled
+ * even if an associated WSDL specifies otherwise. At runtime,
+ * Addressing headers MUST NOT be used.
+ * </ul>
+ * <p>
+ * The {@link #required} property can be used to
+ * specify if the <code>required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element should
+ * be <code>true</code> or <code>false</code>. By default the
+ * <code>wsdl:required</code> parameter is <code>false</code>.
+ *
+ * See <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">WS-Addressing</a>
+ * for more information on WS-Addressing.
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a> for more information on <code>wsaw:UsingAddressing</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+(a)WebServiceFeatureAnnotation(id=AddressingFeature.ID,bean=AddressingFeature.class)
+public @interface Addressing {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+
+ /**
+ * Property to determine the value of the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element in the WSDL.
+ */
+ boolean required() default false;
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,141 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature represents the use of WS-Addressing with either
+ * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this feature
+ * with any other binding is NOT required.
+ * <p>
+ * Enabling this feature on the server will result in the
+ * <code>wsaw:UsingAddressing</code> element being added to the
+ * <code>wsdl:Binding</code> for
+ * the endpoint and in the runtime being capable of responding to
+ * WS-Addressing headers.
+ * <p>
+ * Enabling this feature on the client will cause the JAX-WS runtime
+ * to include WS-Addressing headers in SOAP messages.
+ * <p>
+ * If the web service developer has not explicitly enabled this feature,
+ * it may be automatically enabled if the associated WSDL enables
+ * WS-Addressing via the <code>wsaw:UsingAddressing</code> element with
+ * the <code>wsdl:required</code> attribute set to <code>true</code>.
+ * <br>
+ * See {@link javax.xml.ws.RespectBindingFeature} for more information
+ * on required WSDL extensions.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, Addressing will be enabled.
+ * If there is not a WSDL associated with the Endpoint and
+ * a WSDL is to be generated, it MUST be generated with the
+ * wsaw:UsingAddressing element. At runtime, Addressing headers
+ * MUST be consumed by the receiver and generated by the
+ * sender even if the WSDL declares otherwise. The
+ * mustUnderstand="0" attribute MUST be used on the Addressing
+ * headers.
+ * <li> DISABLED: In this Mode, Addressing will be disabled
+ * even if an associated WSDL specifies otherwise. At runtime,
+ * Addressing headers MUST NOT be used.
+ * </ul>
+ * <p>
+ * The {@link #required} property can be used to
+ * specify if the <code>required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element should
+ * be <code>true</code> or <code>false</code>. By default the
+ * <code>wsdl:required</code> parameter is <code>false</code>.
+ *
+ * See <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">WS-Addressing</a>
+ * for more information on WS-Addressing.
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a> for more information on <code>wsaw:UsingAddressing</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class AddressingFeature extends WebServiceFeature {
+ /**
+ * Constant value identifying the AddressingFeature
+ */
+ public static final String ID = "http://www.w3.org/2005/08/addressing/module";
+
+ /**
+ * Property for <code>required</code> feature parameter. When Addressing
+ * is enabled, the value of this property will be set to the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element in the WSDL.
+ */
+ protected boolean required = false;
+
+ /**
+ * Create an <code>AddressingFeature</code>.
+ * The instance created will be enabled.
+ */
+ public AddressingFeature() {
+ this.enabled = true;
+ }
+
+ /**
+ * Create an <code>AddressingFeature</code>
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ */
+ public AddressingFeature(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * Create an <code>AddressingFeature</code>
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ * @param required specifies the value that will be used
+ * for the <code>wsdl:required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element.
+ */
+ public AddressingFeature(boolean enabled, boolean required) {
+ this.enabled = enabled;
+ this.required = required;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID() {
+ return ID;
+ }
+
+ /**
+ * Gets the boolean value used to set the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element
+ * in the WSDL.
+ *
+ * @return the current required value
+ */
+ public boolean isRequired() {
+ return required;
+ }
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,65 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ *
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to being enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, MTOM will be enabled.
+ * <li> DISABLED: In this Mode, MTOM will be disabled
+ * </ul>
+ * <p>
+ * The {@link #threshold} property can be used to set the threshold
+ * value used to determine when binary data should be XOP encoded.
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+(a)WebServiceFeatureAnnotation(id=MTOMFeature.ID,bean=MTOMFeature.class)
+public @interface MTOM {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+
+ /**
+ * Property for MTOM threshold value. When MTOM is enabled, binary data above this
+ * size in bytes will be XOP encoded or sent as attachment. The value of this property
+ * MUST always be >= 0. Default value is 0.
+ */
+ int threshold() default 0;
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,126 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ *
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to being enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, MTOM will be enabled.
+ * <li> DISABLED: In this Mode, MTOM will be disabled
+ * </ul>
+ * <p>
+ * The {@link #threshold} property can be used to set the threshold
+ * value used to determine when binary data should be XOP encoded.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class MTOMFeature extends WebServiceFeature {
+ /**
+ * Constant value identifying the MTOMFeature
+ */
+ public static final String ID = "http://www.w3.org/2004/08/soap/features/http-optimization";
+
+
+ /**
+ * Property for MTOM threshold value. This property serves as a hint when
+ * MTOM is enabled, binary data above this size in bytes SHOULD be sent
+ * as attachment.
+ * The value of this property MUST always be >= 0. Default value is 0.
+ */
+ protected int threshold = 0;
+
+
+ /**
+ * Create an <code>MTOMFeature</code>.
+ * The instance created will be enabled.
+ */
+ public MTOMFeature() {
+ this.enabled = true;
+ }
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ *
+ * @param enabled specifies if this feature should be enabled or not
+ */
+ public MTOMFeature(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ * The instance created will be enabled.
+ *
+ * @param threshold the size in bytes that binary data SHOULD be before
+ * being sent as an attachment.
+ *
+ * @throws WebServiceException if threshold is < 0
+ */
+ public MTOMFeature(int threshold) {
+ if (threshold < 0)
+ throw new WebServiceException("MTOMFeature.threshold must be >= 0, actual value: "+threshold);
+ this.enabled = true;
+ this.threshold = threshold;
+ }
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ *
+ * @param enabled specifies if this feature should be enabled or not
+ * @param threshold the size in bytes that binary data SHOULD be before
+ * being sent as an attachment.
+ *
+ * @throws WebServiceException if threshold is < 0
+ */
+ public MTOMFeature(boolean enabled, int threshold) {
+ if (threshold < 0)
+ throw new WebServiceException("MTOMFeature.threshold must be >= 0, actual value: "+threshold);
+ this.enabled = enabled;
+ this.threshold = threshold;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID() {
+ return ID;
+ }
+
+ /**
+ * Gets the threshold value used to determine when binary data
+ * should be sent as an attachment.
+ *
+ * @return the current threshold size in bytes
+ */
+ public int getThreshold() {
+ return threshold;
+ }
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -21,10 +21,17 @@
*/
package javax.xml.ws.spi;
+import java.util.List;
+
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.w3c.dom.Element;
+
/**
* Service provider for ServiceDelegate and Endpoint objects.
*
@@ -132,4 +139,128 @@
*/
public abstract Endpoint createAndPublishEndpoint(String address, Object implementor);
+ /**
+ * The getPort method returns a proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL Metadata from the <code>EndpointReference</code>.
+ *
+ *
+ * @param endpointReference the EndpointReference that will
+ * be invoked by the returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If this
+ * <code>endpointReference</code>
+ * is illegal
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If feature is enabled that is not compatible with
+ * this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.ws.WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(EndpointReference endpointReference, Class<T> serviceEndpointInterface, WebServiceFeature... features);
+
+ /**
+ * Factory method to create a <code>W3CEndpointReference</code>.
+ *
+ * <p>
+ * This method can be used to create a <code>W3CEndpointReference</code>
+ * for any endpoint by specifying the <code>address</code> property along
+ * with any other desired properties. This method
+ * can also be used to create a <code>W3CEndpointReference</code> for
+ * an endpoint that is published by the same Java EE application.
+ * To do so the <code>address</code> property can be provided or this
+ * method can automatically determine the <code>address</code> of
+ * an endpoint that is published by the same Java EE application and is
+ * identified by the <code>serviceName</code> and
+ * <code>portName</code> propeties. If the <code>address</code> is
+ * <code>null</code> and the <code>serviceName</code> and
+ * <code>portName</code> do not identify an endpoint published by the
+ * same Java EE application, a
+ * <code>javax.lang.IllegalArgumentException</code> MUST be thrown.
+ *
+ * @param address Specifies the address of the target endpoint
+ * @param serviceName Qualified name of the service in the WSDL.
+ * @param portName Qualified name of the endpoint in the WSDL.
+ * @param metadata A list of elements that should be added to the
+ * <code>W3CEndpointReference</code> instances <code>wsa:metadata</code>
+ * element.
+ * @param wsdlDocumentLocation URL for the WSDL document location for
+ * the service.
+ * @param referenceParameters Reference parameters to be associated
+ * with the returned <code>EndpointReference</code> instance.
+ *
+ * @return the <code>W3CEndpointReference<code> created from
+ * <code>serviceName</code>, <code>portName</code>,
+ * <code>metadata</code>, <code>wsdlDocumentLocation</code>
+ * and <code>referenceParameters</code>. This method
+ * never returns <code>null</code>.
+ *
+ * @throws javax.lang.IllegalArgumentException
+ * <ul>
+ * <li>If the <code>address</code>, <code>serviceName</code> and
+ * <code>portName</code> are all <code>null</code>.
+ * <li>If the <code>serviceName</code> service is <code>null</code> and the
+ * <code>portName> is NOT <code>null</code>.
+ * <li>If the <code>address</code> property is <code>null</code> and
+ * the <code>serviceName</code> and <code>portName</code> do not
+ * specify a valid endpoint published by the same Java EE
+ * application.
+ * <li>If the <code>serviceName</code>is NOT <code>null</code>
+ * and is not present in the specified WSDL.
+ * <li>If the <code>portName</code> port is not <code>null<code> and it
+ * is not present in <code>serviceName</code> service in the WSDL.
+ * <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code>
+ * and does not represent a valid WSDL.
+ * </ul>
+ * @throws javax.xml.ws.WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+ public abstract W3CEndpointReference createW3CEndpointReference(String address, QName serviceName, QName portName, List<Element> metadata,
+ String wsdlDocumentLocation, List<Element> referenceParameters);
+
+ /**
+ * read an EndpointReference from the infoset contained in
+ * <code>eprInfoset</code>.
+ *
+ * @returns the <code>EndpointReference</code> unmarshalled from
+ * <code>eprInfoset</code>. This method never returns <code>null</code>.
+ *
+ * @throws javax.xml.ws.WebServiceException If there is an error creating the
+ * <code>EndpointReference</code> from the specified <code>eprInfoset</code>.
+ *
+ * @throws NullPointerException If the <code>null</code>
+ * <code>eprInfoset</code> value is given.
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract EndpointReference readEndpointReference(javax.xml.transform.Source eprInfoset);
}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -26,8 +26,10 @@
import javax.xml.bind.JAXBContext;
import javax.xml.namespace.QName;
import javax.xml.ws.Dispatch;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.handler.HandlerResolver;
/**
@@ -105,6 +107,163 @@
public abstract <T> T getPort(Class<T> serviceEndpointInterface);
/**
+ * The getPort method returns a proxy. A service client
+ * uses this proxy to invoke operations on the target
+ * service endpoint. The <code>serviceEndpointInterface</code>
+ * specifies the service endpoint interface that is supported by
+ * the created dynamic proxy instance.
+ *
+ * @param portName Qualified name of the service endpoint in
+ * the WSDL service description
+ * @param serviceEndpointInterface Service endpoint interface
+ * supported by the dynamic proxy or instance
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that
+ * supports the specified service endpoint
+ * interface
+ * @throws javax.xml.ws.WebServiceException This exception is thrown in the
+ * following cases:
+ * <UL>
+ * <LI>If there is an error in creation of
+ * the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * or <code>portName</code> is specified
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ * @see javax.xml.ws.WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(QName portName,
+ Class<T> serviceEndpointInterface, WebServiceFeature... features);
+
+ /**
+ * The getPort method returns a proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * The returned proxy should not be reconfigured by the client.
+ * If this <code>Service</code> instance has a known proxy
+ * port that matches the information contained in
+ * the WSDL,
+ * then that proxy is returned, otherwise a WebServiceException
+ * is thrown.
+ * <p>
+ * Calling this method has the same behavior as the following
+ * <pre>
+ * port = service.getPort(portName, serviceEndpointInterface);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpontName</code> attribute of the
+ * <code>wsaw:ServiceName</code> element in the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface.
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If the <code>wsaw:EndpointName</code> is
+ * missing from the <code>endpointReference</code>
+ * or does not match a wsdl:Port
+ * in the WSDL metadata.
+ * <LI>If the <code>wsaw:ServiceName</code> in the
+ * <code>endpointReference</code> metadata does not
+ * match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If an invalid
+ * <code>endpointReference</code>
+ * is specified.
+ * <LI>If an invalid
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(EndpointReference endpointReference,
+ Class<T> serviceEndpointInterface, WebServiceFeature... features);
+
+ /**
+ * The getPort method returns a proxy. The parameter
+ * <code>serviceEndpointInterface</code> specifies the service
+ * endpoint interface that is supported by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly.
+ * The returned proxy should not be reconfigured by the client.
+ *
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object instance that supports the
+ * specified service endpoint interface
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(Class<T> serviceEndpointInterface,
+ WebServiceFeature... features);
+
+ /**
* Creates a new port for the service. Ports created in this way contain
* no WSDL port type information and can only be used for creating
* <code>Dispatch</code>instances.
@@ -166,6 +325,223 @@
public abstract Dispatch<Object> createDispatch(QName portName, JAXBContext context, Service.Mode mode);
/**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param type The class of object used for messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
+ Service.Mode mode, WebServiceFeature... features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, type, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param type The class of object used to messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code> element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does not
+ * match the <code>serviceName</code> of this instance.
+ * <li>If the <code>wsaw:EndpointName</code> does not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature;
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> Dispatch<T> createDispatch(EndpointReference endpointReference,
+ Class<T> type, Service.Mode mode,
+ WebServiceFeature... features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract Dispatch<Object> createDispatch(QName portName,
+ JAXBContext context, Service.Mode mode, WebServiceFeature... features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, context, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <li>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code> element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does not
+ * match the <code>serviceName</code> of this instance.
+ * <li>If the <code>wsaw:EndpointName</code> does not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract Dispatch<Object> createDispatch(EndpointReference endpointReference,
+ JAXBContext context, Service.Mode mode,
+ WebServiceFeature... features);
+
+ /**
* Gets the name of this service.
* @return Qualified name of this service
**/
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,69 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * Annotation used to identify other annotations
+ * as a <code>WebServiceFeature</code>.
+ *
+ * Each <code>WebServiceFeature</code> annotation annotated with
+ * this annotation MUST contain an
+ * <code>enabled</code> property of type
+ * <code>boolean</code> with a default value of <code>true</code>.
+ * JAX-WS defines the following
+ * <code>WebServiceFeature</code> annotations, however, an implementation
+ * may define vendors specific annotations for other features.
+ * If a JAX-WS implementation encounters an annotation annotated
+ * with the <code>WebServiceFeatureAnnotation</code> that is does not
+ * recognize/support an error MUST be given.
+ *
+ * @see javax.xml.ws.soap.WSAddressing
+ * @see javax.xml.ws.soap.MTOM
+ * @see javax.xml.ws.RespectBinding
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.ANNOTATION_TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface WebServiceFeatureAnnotation {
+ /**
+ * Unique identifier for the WebServiceFeature. This
+ * identifier MUST be unique across all implementations
+ * of JAX-WS.
+ */
+ String id();
+
+ /**
+ * The <code>WebServiceFeature</code> bean that is associated
+ * with the <code>WebServiceFeature</code> annotation
+ */
+ Class<? extends WebServiceFeature> bean();
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing)
Deleted: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
===================================================================
--- stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,306 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws.wsaddressing;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.annotation.XmlAnyAttribute;
-import javax.xml.bind.annotation.XmlAnyElement;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.namespace.QName;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.ws.EndpointReference;
-import javax.xml.ws.WebServiceException;
-
-import org.w3c.dom.Element;
-
-/**
- * This class represents a W3C Addressing EndpointReferece which is
- * a remote reference to a web service endpoint that supports the
- * W3C WS-Addressing 1.0 - Core Recommendation.
- * <p>
- * Developers should use this class in their SEIs if they want to
- * pass/return endpoint references that represent the W3C WS-Addressing
- * recommendation.
- * <p>
- * JAXB will use the JAXB annotations and bind this class to XML infoset
- * that is consistent with that defined by WS-Addressing. See
- * <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
- * WS-Addressing</a>
- * for more information on WS-Addressing EndpointReferences.
- *
- * @since JAX-WS 2.1
- */
-
-// XmlRootElement allows this class to be marshalled on its own
-@XmlRootElement(name = "EndpointReference", namespace = W3CEndpointReference.NS)
-@XmlType(name = "EndpointReferenceType", namespace = W3CEndpointReference.NS)
-public final class W3CEndpointReference extends EndpointReference
-{
- protected static final String NS = "http://www.w3.org/2005/08/addressing";
-
- private final static JAXBContext w3cjc = getW3CJaxbContext();
-
- // private but necessary properties for databinding
- @XmlElement(name = "Address", namespace = NS)
- private Address address;
- @XmlElement(name = "ReferenceParameters", namespace = NS)
- private Elements referenceParameters;
- @XmlElement(name = "Metadata", namespace = NS)
- private Elements metadata;
- @XmlAnyAttribute
- Map<QName, String> attributes;
- @XmlAnyElement
- List<Element> elements;
-
- // not marshalled
- private QName serviceName;
- private QName endpointName;
- private URL wsdlLocation;
-
- protected W3CEndpointReference()
- {
- }
-
- /**
- * Creates an EPR from infoset representation
- *
- * @param source A source object containing valid XmlInfoset
- * instance consistent with the W3C WS-Addressing Core
- * recommendation.
- *
- * @throws WebServiceException
- * If the source does NOT contain a valid W3C WS-Addressing
- * EndpointReference.
- * @throws NullPointerException
- * If the <code>null</code> <code>source</code> value is given
- */
- public W3CEndpointReference(Source source)
- {
- try
- {
- W3CEndpointReference epr = w3cjc.createUnmarshaller().unmarshal(source, W3CEndpointReference.class).getValue();
- this.address = epr.address;
- this.metadata = epr.metadata;
- this.referenceParameters = epr.referenceParameters;
- }
- catch (JAXBException e)
- {
- throw new WebServiceException("Error unmarshalling W3CEndpointReference ", e);
- }
- catch (ClassCastException e)
- {
- throw new WebServiceException("Source did not contain W3CEndpointReference", e);
- }
- }
-
- @XmlTransient
- public String getAddress()
- {
- return address != null ? address.getUri() : null;
- }
-
- void setAddress(String address)
- {
- this.address = new Address(address);
- }
-
- @XmlTransient
- public QName getServiceName()
- {
- return serviceName;
- }
-
- public void setServiceName(QName serviceName)
- {
- this.serviceName = serviceName;
- }
-
- @XmlTransient
- public QName getEndpointName()
- {
- return endpointName;
- }
-
- public void setEndpointName(QName endpointName)
- {
- this.endpointName = endpointName;
- }
-
- @XmlTransient
- public List<Element> getMetadata()
- {
- return metadata != null ? metadata.getElements() : null;
- }
-
- public void setMetadata(List<Element> metadata)
- {
- this.metadata = new Elements(metadata);
- }
-
- @XmlTransient
- public URL getWsdlLocation()
- {
- return wsdlLocation;
- }
-
- public void setWsdlLocation(String wsdlLocation)
- {
- try
- {
- this.wsdlLocation = wsdlLocation != null ? new URL(wsdlLocation) : null;
- }
- catch (MalformedURLException e)
- {
- throw new IllegalArgumentException("Invalid URL: " + wsdlLocation);
- }
- }
-
- @XmlTransient
- public List<Element> getReferenceParameters()
- {
- return referenceParameters != null ? referenceParameters.getElements() : null;
- }
-
- public void setReferenceParameters(List<Element> metadata)
- {
- this.referenceParameters = new Elements(metadata);
- }
-
- /**
- * {@inheritDoc}
- */
- public void writeTo(Result result)
- {
- try
- {
- Marshaller marshaller = w3cjc.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
- marshaller.marshal(this, result);
- }
- catch (JAXBException e)
- {
- throw new WebServiceException("Error marshalling W3CEndpointReference. ", e);
- }
- }
-
- private static JAXBContext getW3CJaxbContext()
- {
- try
- {
- return JAXBContext.newInstance(new Class[] { W3CEndpointReference.class });
- }
- catch (JAXBException ex)
- {
- throw new WebServiceException("Cannot obtain JAXB context", ex);
- }
- }
-
- private static class Address
- {
- @XmlValue
- String uri;
- @XmlAnyAttribute
- Map<QName, String> attributes;
-
- protected Address()
- {
- }
-
- public Address(String uri)
- {
- this.uri = uri;
- }
-
- @XmlTransient
- public String getUri()
- {
- return uri;
- }
-
- public void setUri(String uri)
- {
- this.uri = uri;
- }
-
- @XmlTransient
- public Map<QName, String> getAttributes()
- {
- return attributes;
- }
-
- public void setAttributes(Map<QName, String> attributes)
- {
- this.attributes = attributes;
- }
- }
-
- private static class Elements
- {
- @XmlAnyElement
- List<Element> elements;
- @XmlAnyAttribute
- Map<QName, String> attributes;
-
- protected Elements()
- {
- }
-
- public Elements(List<Element> elements)
- {
- this.elements = elements;
- }
-
- @XmlTransient
- public List<Element> getElements()
- {
- return elements;
- }
-
- public void setElements(List<Element> elements)
- {
- this.elements = elements;
- }
-
- @XmlTransient
- public Map<QName, String> getAttributes()
- {
- return attributes;
- }
-
- public void setAttributes(Map<QName, String> attributes)
- {
- this.attributes = attributes;
- }
- }
-}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,306 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.wsaddressing;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Element;
+
+/**
+ * This class represents a W3C Addressing EndpointReferece which is
+ * a remote reference to a web service endpoint that supports the
+ * W3C WS-Addressing 1.0 - Core Recommendation.
+ * <p>
+ * Developers should use this class in their SEIs if they want to
+ * pass/return endpoint references that represent the W3C WS-Addressing
+ * recommendation.
+ * <p>
+ * JAXB will use the JAXB annotations and bind this class to XML infoset
+ * that is consistent with that defined by WS-Addressing. See
+ * <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
+ * WS-Addressing</a>
+ * for more information on WS-Addressing EndpointReferences.
+ *
+ * @since JAX-WS 2.1
+ */
+
+// XmlRootElement allows this class to be marshalled on its own
+@XmlRootElement(name = "EndpointReference", namespace = W3CEndpointReference.NS)
+@XmlType(name = "EndpointReferenceType", namespace = W3CEndpointReference.NS)
+public final class W3CEndpointReference extends EndpointReference
+{
+ protected static final String NS = "http://www.w3.org/2005/08/addressing";
+
+ private final static JAXBContext w3cjc = getW3CJaxbContext();
+
+ // private but necessary properties for databinding
+ @XmlElement(name = "Address", namespace = NS)
+ private Address address;
+ @XmlElement(name = "ReferenceParameters", namespace = NS)
+ private Elements referenceParameters;
+ @XmlElement(name = "Metadata", namespace = NS)
+ private Elements metadata;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+ @XmlAnyElement
+ List<Element> elements;
+
+ // not marshalled
+ private QName serviceName;
+ private QName endpointName;
+ private URL wsdlLocation;
+
+ protected W3CEndpointReference()
+ {
+ }
+
+ /**
+ * Creates an EPR from infoset representation
+ *
+ * @param source A source object containing valid XmlInfoset
+ * instance consistent with the W3C WS-Addressing Core
+ * recommendation.
+ *
+ * @throws WebServiceException
+ * If the source does NOT contain a valid W3C WS-Addressing
+ * EndpointReference.
+ * @throws NullPointerException
+ * If the <code>null</code> <code>source</code> value is given
+ */
+ public W3CEndpointReference(Source source)
+ {
+ try
+ {
+ W3CEndpointReference epr = w3cjc.createUnmarshaller().unmarshal(source, W3CEndpointReference.class).getValue();
+ this.address = epr.address;
+ this.metadata = epr.metadata;
+ this.referenceParameters = epr.referenceParameters;
+ }
+ catch (JAXBException e)
+ {
+ throw new WebServiceException("Error unmarshalling W3CEndpointReference ", e);
+ }
+ catch (ClassCastException e)
+ {
+ throw new WebServiceException("Source did not contain W3CEndpointReference", e);
+ }
+ }
+
+ @XmlTransient
+ public String getAddress()
+ {
+ return address != null ? address.getUri() : null;
+ }
+
+ void setAddress(String address)
+ {
+ this.address = new Address(address);
+ }
+
+ @XmlTransient
+ public QName getServiceName()
+ {
+ return serviceName;
+ }
+
+ public void setServiceName(QName serviceName)
+ {
+ this.serviceName = serviceName;
+ }
+
+ @XmlTransient
+ public QName getEndpointName()
+ {
+ return endpointName;
+ }
+
+ public void setEndpointName(QName endpointName)
+ {
+ this.endpointName = endpointName;
+ }
+
+ @XmlTransient
+ public List<Element> getMetadata()
+ {
+ return metadata != null ? metadata.getElements() : null;
+ }
+
+ public void setMetadata(List<Element> metadata)
+ {
+ this.metadata = new Elements(metadata);
+ }
+
+ @XmlTransient
+ public URL getWsdlLocation()
+ {
+ return wsdlLocation;
+ }
+
+ public void setWsdlLocation(String wsdlLocation)
+ {
+ try
+ {
+ this.wsdlLocation = wsdlLocation != null ? new URL(wsdlLocation) : null;
+ }
+ catch (MalformedURLException e)
+ {
+ throw new IllegalArgumentException("Invalid URL: " + wsdlLocation);
+ }
+ }
+
+ @XmlTransient
+ public List<Element> getReferenceParameters()
+ {
+ return referenceParameters != null ? referenceParameters.getElements() : null;
+ }
+
+ public void setReferenceParameters(List<Element> metadata)
+ {
+ this.referenceParameters = new Elements(metadata);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeTo(Result result)
+ {
+ try
+ {
+ Marshaller marshaller = w3cjc.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
+ marshaller.marshal(this, result);
+ }
+ catch (JAXBException e)
+ {
+ throw new WebServiceException("Error marshalling W3CEndpointReference. ", e);
+ }
+ }
+
+ private static JAXBContext getW3CJaxbContext()
+ {
+ try
+ {
+ return JAXBContext.newInstance(new Class[] { W3CEndpointReference.class });
+ }
+ catch (JAXBException ex)
+ {
+ throw new WebServiceException("Cannot obtain JAXB context", ex);
+ }
+ }
+
+ private static class Address
+ {
+ @XmlValue
+ String uri;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+
+ protected Address()
+ {
+ }
+
+ public Address(String uri)
+ {
+ this.uri = uri;
+ }
+
+ @XmlTransient
+ public String getUri()
+ {
+ return uri;
+ }
+
+ public void setUri(String uri)
+ {
+ this.uri = uri;
+ }
+
+ @XmlTransient
+ public Map<QName, String> getAttributes()
+ {
+ return attributes;
+ }
+
+ public void setAttributes(Map<QName, String> attributes)
+ {
+ this.attributes = attributes;
+ }
+ }
+
+ private static class Elements
+ {
+ @XmlAnyElement
+ List<Element> elements;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+
+ protected Elements()
+ {
+ }
+
+ public Elements(List<Element> elements)
+ {
+ this.elements = elements;
+ }
+
+ @XmlTransient
+ public List<Element> getElements()
+ {
+ return elements;
+ }
+
+ public void setElements(List<Element> elements)
+ {
+ this.elements = elements;
+ }
+
+ @XmlTransient
+ public Map<QName, String> getAttributes()
+ {
+ return attributes;
+ }
+
+ public void setAttributes(Map<QName, String> attributes)
+ {
+ this.attributes = attributes;
+ }
+ }
+}
Deleted: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
===================================================================
--- stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,272 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws.wsaddressing;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.WebServiceException;
-
-import org.w3c.dom.Element;
-
-/**
- * This class is used to build <code>W3CEndpointReference</code>
- * instances. The intended use of this clsss is for
- * an application component, for example a factory component,
- * to create an <code>W3CEndpointReference</code> for a
- * web service endpoint published by the same
- * Java EE application. It can also be used to create
- * <code>W3CEndpointReferences</code> for an Java SE based
- * endpoint by providing the <code>address</code> property.
- * <p>
- * When creating a <code>W3CEndpointReference</code> for an
- * endpoint that is not published by the same Java EE application,
- * the <code>address</code> property MUST be specified.
- * <p>
- * When creating a <code>W3CEndpointReference</code> for an endpoint
- * published by the same Java EE application, the <code>address</code>
- * property MAY be <code>null</code> but then the <code>serviceName</code>
- * and <code>endpointName</code> MUST specify an endpoint published by
- * the same Java EE application.
- * <p>
- * When the <code>wsdlDocumentLocation</code> is specified it MUST refer
- * to a valid WSDL document and the <code>serviceName</code> and
- * <code>endpointName</code> (if specified) MUST match a service and port
- * in the WSDL document.
- *
- * @since JAX-WS 2.1
- */
-public final class W3CEndpointReferenceBuilder
-{
-
- private String address;
- private List<Element> parameters;
- private List<Element> metadata;
- private QName serviceName;
- private QName endpointName;
- private String wsdlLocation;
-
- public W3CEndpointReferenceBuilder()
- {
- parameters = new ArrayList<Element>();
- metadata = new ArrayList<Element>();
- }
-
- /**
- * Sets the <code>address</code> to the
- * <code>W3CEndpointReference</code> instance's
- * <code>wsa:Address</code>.
- * <p>
- * The <code>address</code> MUST be set to a non-<code>null</code>
- * value when building a <code>W3CEndpointReference</code> for a
- * web service endpoint that is not published by the same
- * Java EE application or when running on Java SE.
- *
- * @param address The address of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>address</code> set to the <code>wsa:Address</code>.
- */
- public W3CEndpointReferenceBuilder address(String address)
- {
- this.address = address;
- return this;
- }
-
- /**
- * Sets the <code>serviceName</code> as the
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element.
- *
- * @param serviceName The service name of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>. This property
- * may also be used with the <code>endpointName</code> (portName)
- * property to lookup the <code>address</code> of a web service
- * endpoint that is published by the same Java EE application.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>serviceName</code> element added to the
- * <code>wsa:Metadata</code> element.
- *
- */
- public W3CEndpointReferenceBuilder serviceName(QName serviceName)
- {
- this.serviceName = serviceName;
- return this;
- }
-
- /**
- * Sets the <code>endpointName</code> as and attribute on
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element. This method can only
- * be called after the {@link #serviceName} method has been called.
- *
- * @param endpointName The name of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>. The
- * <code>endpointName</code> (portName) property may also be
- * used with the <code>serviceName</code> property to lookup
- * the <code>address</code> of a web service
- * endpoint published by the same Java EE application.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>endpointName</code> atrribute added to the
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element.
- *
- * @throws javax.lang.IllegalStateException If the <code>serviceName</code> has not
- * been set.
- */
- public W3CEndpointReferenceBuilder endpointName(QName endpointName)
- {
- if (serviceName == null)
- {
- throw new IllegalStateException("The W3CEndpointReferenceBuilder's serviceName must be set before setting the endpointName: " + endpointName);
- }
-
- this.endpointName = endpointName;
- return this;
- }
-
- /**
- * Sets the <code>wsdlDocumentLocation</code> that will be inlined
- * in the <code>W3CEndpointReferenc</code> instance's
- * <code>wsa:Metadata</code>.
- *
- * @param wsdlDocumentLocation The location of the WSDL document to
- * be inlined in the <code>wsa:Metadata</code> of the
- * <code>W3CEndpointReference<code>.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>wsdlDocumentLocation</code> that is to be inlined.
- *
- */
- public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation)
- {
- this.wsdlLocation = wsdlDocumentLocation;
- return this;
- }
-
- /**
- * Adds the <code>referenceParameter</code> to the
- * <code>W3CEndpointReference</code> instance
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @param referenceParameter The element to be added to the
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>referenceParameter</code> added to the
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @throws java.lang.IllegalArgumentException if <code>referenceParameter</code>
- * is <code>null</code>.
- */
- public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter)
- {
- if (referenceParameter == null)
- throw new java.lang.IllegalArgumentException("The referenceParameter cannot be null.");
- parameters.add(referenceParameter);
- return this;
- }
-
- /**
- * Adds the <code>metadataElement</code> to the
- * <code>W3CEndpointReference</code> instance's
- * <code>wsa:Metadata</code> element.
- *
- * @param metadataElement The element to be added to the
- * <code>wsa:Metadata</code> element.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>metadataElement</code> added to the
- * <code>wsa:Metadata</code> element.
- *
- * @throws java.lang.IllegalArgumentException if <code>metadataElement</code>
- * is <code>null</code>.
- */
- public W3CEndpointReferenceBuilder metadata(Element metadataElement)
- {
- if (metadataElement == null)
- throw new java.lang.IllegalArgumentException("The metadataElement cannot be null.");
- metadata.add(metadataElement);
- return this;
- }
-
- /**
- * Builds a <code>W3CEndpointReference</code> from the accumulated
- * properties set on this <code>W3CEndpointReferenceBuilder</code>
- * instance.
- * <p>
- * This method can be used to create a <code>W3CEndpointReference</code>
- * for any endpoint by specifying the <code>address</code> property along
- * with any other desired properties. This method
- * can also be used to create a <code>W3CEndpointReference</code> for
- * an endpoint that is published by the same Java EE application.
- * This method can automatically determine the <code>address</code> of
- * an endpoint published by the same Java EE application that is identified by the
- * <code>serviceName</code> and
- * <code>endpointName</code> properties. If the <code>address</code> is
- * <code>null</code> and the <code>serviceName</code> and
- * <code>endpointName</code>
- * do not identify an endpoint published by the same Java EE application, a
- * <code>javax.lang.IllegalStateException</code> MUST be thrown.
- *
- *
- * @return <code>W3CEndpointReference</code> from the accumulated
- * properties set on this <code>W3CEndpointReferenceBuilder</code>
- * instance. This method never returns <code>null</code>.
- *
- * @throws javax.lang.IllegalStateException
- * <ul>
- * <li>If the <code>address</code>, <code>serviceName</code> and
- * <code>endpointName</code> are all <code>null</code>.
- * <li>If the <code>serviceName</code> service is <code>null</code> and the
- * <code>endpointName</code> is NOT <code>null</code>.
- * <li>If the <code>address</code> property is <code>null</code> and
- * the <code>serviceName</code> and <code>endpointName</code> do not
- * specify a valid endpoint published by the same Java EE
- * application.
- * <li>If the <code>serviceName</code>is NOT <code>null</code>
- * and is not present in the specified WSDL.
- * <li>If the <code>endpointName</code> port is not <code>null<code> and it
- * is not present in <code>serviceName</code> service in the WSDL.
- * <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code> Pr
- * and does not represent a valid WSDL.
- * </ul>
- * @throws WebServiceException If an error occurs while creating the
- * <code>W3CEndpointReference</code>.
- *
- */
- public W3CEndpointReference build()
- {
- W3CEndpointReference epr = new W3CEndpointReference();
- epr.setAddress(address);
- epr.setServiceName(serviceName);
- epr.setEndpointName(endpointName);
- epr.setMetadata(metadata);
- epr.setWsdlLocation(wsdlLocation);
- epr.setReferenceParameters(parameters);
- return epr;
- }
-}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java (from rev 9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java (rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,272 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package javax.xml.ws.wsaddressing;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Element;
+
+/**
+ * This class is used to build <code>W3CEndpointReference</code>
+ * instances. The intended use of this clsss is for
+ * an application component, for example a factory component,
+ * to create an <code>W3CEndpointReference</code> for a
+ * web service endpoint published by the same
+ * Java EE application. It can also be used to create
+ * <code>W3CEndpointReferences</code> for an Java SE based
+ * endpoint by providing the <code>address</code> property.
+ * <p>
+ * When creating a <code>W3CEndpointReference</code> for an
+ * endpoint that is not published by the same Java EE application,
+ * the <code>address</code> property MUST be specified.
+ * <p>
+ * When creating a <code>W3CEndpointReference</code> for an endpoint
+ * published by the same Java EE application, the <code>address</code>
+ * property MAY be <code>null</code> but then the <code>serviceName</code>
+ * and <code>endpointName</code> MUST specify an endpoint published by
+ * the same Java EE application.
+ * <p>
+ * When the <code>wsdlDocumentLocation</code> is specified it MUST refer
+ * to a valid WSDL document and the <code>serviceName</code> and
+ * <code>endpointName</code> (if specified) MUST match a service and port
+ * in the WSDL document.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class W3CEndpointReferenceBuilder
+{
+
+ private String address;
+ private List<Element> parameters;
+ private List<Element> metadata;
+ private QName serviceName;
+ private QName endpointName;
+ private String wsdlLocation;
+
+ public W3CEndpointReferenceBuilder()
+ {
+ parameters = new ArrayList<Element>();
+ metadata = new ArrayList<Element>();
+ }
+
+ /**
+ * Sets the <code>address</code> to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:Address</code>.
+ * <p>
+ * The <code>address</code> MUST be set to a non-<code>null</code>
+ * value when building a <code>W3CEndpointReference</code> for a
+ * web service endpoint that is not published by the same
+ * Java EE application or when running on Java SE.
+ *
+ * @param address The address of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>address</code> set to the <code>wsa:Address</code>.
+ */
+ public W3CEndpointReferenceBuilder address(String address)
+ {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Sets the <code>serviceName</code> as the
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @param serviceName The service name of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>. This property
+ * may also be used with the <code>endpointName</code> (portName)
+ * property to lookup the <code>address</code> of a web service
+ * endpoint that is published by the same Java EE application.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>serviceName</code> element added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ */
+ public W3CEndpointReferenceBuilder serviceName(QName serviceName)
+ {
+ this.serviceName = serviceName;
+ return this;
+ }
+
+ /**
+ * Sets the <code>endpointName</code> as and attribute on
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element. This method can only
+ * be called after the {@link #serviceName} method has been called.
+ *
+ * @param endpointName The name of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>. The
+ * <code>endpointName</code> (portName) property may also be
+ * used with the <code>serviceName</code> property to lookup
+ * the <code>address</code> of a web service
+ * endpoint published by the same Java EE application.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>endpointName</code> atrribute added to the
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @throws javax.lang.IllegalStateException If the <code>serviceName</code> has not
+ * been set.
+ */
+ public W3CEndpointReferenceBuilder endpointName(QName endpointName)
+ {
+ if (serviceName == null)
+ {
+ throw new IllegalStateException("The W3CEndpointReferenceBuilder's serviceName must be set before setting the endpointName: " + endpointName);
+ }
+
+ this.endpointName = endpointName;
+ return this;
+ }
+
+ /**
+ * Sets the <code>wsdlDocumentLocation</code> that will be inlined
+ * in the <code>W3CEndpointReferenc</code> instance's
+ * <code>wsa:Metadata</code>.
+ *
+ * @param wsdlDocumentLocation The location of the WSDL document to
+ * be inlined in the <code>wsa:Metadata</code> of the
+ * <code>W3CEndpointReference<code>.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>wsdlDocumentLocation</code> that is to be inlined.
+ *
+ */
+ public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation)
+ {
+ this.wsdlLocation = wsdlDocumentLocation;
+ return this;
+ }
+
+ /**
+ * Adds the <code>referenceParameter</code> to the
+ * <code>W3CEndpointReference</code> instance
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @param referenceParameter The element to be added to the
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>referenceParameter</code> added to the
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @throws java.lang.IllegalArgumentException if <code>referenceParameter</code>
+ * is <code>null</code>.
+ */
+ public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter)
+ {
+ if (referenceParameter == null)
+ throw new java.lang.IllegalArgumentException("The referenceParameter cannot be null.");
+ parameters.add(referenceParameter);
+ return this;
+ }
+
+ /**
+ * Adds the <code>metadataElement</code> to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:Metadata</code> element.
+ *
+ * @param metadataElement The element to be added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>metadataElement</code> added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @throws java.lang.IllegalArgumentException if <code>metadataElement</code>
+ * is <code>null</code>.
+ */
+ public W3CEndpointReferenceBuilder metadata(Element metadataElement)
+ {
+ if (metadataElement == null)
+ throw new java.lang.IllegalArgumentException("The metadataElement cannot be null.");
+ metadata.add(metadataElement);
+ return this;
+ }
+
+ /**
+ * Builds a <code>W3CEndpointReference</code> from the accumulated
+ * properties set on this <code>W3CEndpointReferenceBuilder</code>
+ * instance.
+ * <p>
+ * This method can be used to create a <code>W3CEndpointReference</code>
+ * for any endpoint by specifying the <code>address</code> property along
+ * with any other desired properties. This method
+ * can also be used to create a <code>W3CEndpointReference</code> for
+ * an endpoint that is published by the same Java EE application.
+ * This method can automatically determine the <code>address</code> of
+ * an endpoint published by the same Java EE application that is identified by the
+ * <code>serviceName</code> and
+ * <code>endpointName</code> properties. If the <code>address</code> is
+ * <code>null</code> and the <code>serviceName</code> and
+ * <code>endpointName</code>
+ * do not identify an endpoint published by the same Java EE application, a
+ * <code>javax.lang.IllegalStateException</code> MUST be thrown.
+ *
+ *
+ * @return <code>W3CEndpointReference</code> from the accumulated
+ * properties set on this <code>W3CEndpointReferenceBuilder</code>
+ * instance. This method never returns <code>null</code>.
+ *
+ * @throws javax.lang.IllegalStateException
+ * <ul>
+ * <li>If the <code>address</code>, <code>serviceName</code> and
+ * <code>endpointName</code> are all <code>null</code>.
+ * <li>If the <code>serviceName</code> service is <code>null</code> and the
+ * <code>endpointName</code> is NOT <code>null</code>.
+ * <li>If the <code>address</code> property is <code>null</code> and
+ * the <code>serviceName</code> and <code>endpointName</code> do not
+ * specify a valid endpoint published by the same Java EE
+ * application.
+ * <li>If the <code>serviceName</code>is NOT <code>null</code>
+ * and is not present in the specified WSDL.
+ * <li>If the <code>endpointName</code> port is not <code>null<code> and it
+ * is not present in <code>serviceName</code> service in the WSDL.
+ * <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code> Pr
+ * and does not represent a valid WSDL.
+ * </ul>
+ * @throws WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ *
+ */
+ public W3CEndpointReference build()
+ {
+ W3CEndpointReference epr = new W3CEndpointReference();
+ epr.setAddress(address);
+ epr.setServiceName(serviceName);
+ epr.setEndpointName(endpointName);
+ epr.setMetadata(metadata);
+ epr.setWsdlLocation(wsdlLocation);
+ epr.setReferenceParameters(parameters);
+ return epr;
+ }
+}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,142 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * The <code>Action</code> annotation allows explicit association of <code>Action</code>
- * message addressing property with <code>input</code>, <code>output</code>, and
- * <code>fault</code> messages of the mapped WSDL operation.
- * <p>
- * This annotation can be specified on each method of a service endpoint interface.
- * For such a method, the mapped operation in the generated WSDL
- * contains explicit <code>wsaw:Action</code> attribute on the WSDL <code>input</code>,
- * <code>output</code> and <code>fault</code> messages of the WSDL <code>operation</code>
- * based upon which attributes of the <code>Action</code> annotation have been specified.
- * <p>
- * <b>Example 1</b>: Specify explicit values for <code>Action</code> message addressing property
- * for <code>input</code> and <code>output</code> messages.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * input="http://example.com/inputAction",
- * output="http://example.com/outputAction")
- * public int addNumbers(int number1, int number2) {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- * <pre>
- * <definitions targetNamespace="http://example.com/numbers" ...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput" name="Parameters"
- * wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput" name="Result"
- * wsaw:Action="http://example.com/outputAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * <b>Example 2</b>: Specify explicit value for <code>Action</code> message addressing property
- * for only the <code>input</code> message. The default values are used for the
- * <code>output</code> message.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(input="http://example.com/inputAction")
- * public int addNumbers(int number1, int number2) {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions targetNamespace="http://example.com/numbers" ...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput" name="Parameters"
- * wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput" name="Result"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * It is legitimate to specify an explicit value for <code>Action</code> message addressing property for
- * <code>output</code> message only. In this case, a default value of <code>wsaw:Action</code> is used
- * for the <code>input</code> message.
- *
- * <p>
- * <b>Example 3</b>: See <a href="FaultAction.html">FaultAction</a> annotation for an example of
- * how to specify an explicit value for <code>Action</code> message addressing property for the
- * <code>fault</code> message.
- *
- * @see FaultAction
- *
- * @since JAX-WS 2.1
- */
-
-@Documented
-(a)Retention(RetentionPolicy.RUNTIME)
-(a)Target(ElementType.METHOD)
-public @interface Action {
- /**
- * Explicit value of <code>Action</code> message addressing property for the <code>input</code>
- * message of the operation. If the value is "", then no <code>wsaw:Action</code>
- * is generated.
- */
- String input() default "";
-
- /**
- * Explicit value of <code>Action</code> message addressing property for the <code>output</code>
- * message of the operation. If the value is "", then no <code>wsaw:Action</code>
- * is generated.
- */
- String output() default "";
-
- /**
- * Explicit value of <code>Action</code> message addressing property for the <code>fault</code>
- * message(s) of the operation. Each exception that is mapped to a fault and requires explicit
- * <code>Action</code> message addressing property, need to be specified as a value in this property
- * using <a href="FaultAction.html">FaultAction</a> annotation.
- */
- FaultAction[] fault() default {};
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,38 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public interface Binding21 extends Binding
-{
- /**
- * Get the URI for this binding instance.
- *
- * @return String The binding identifier for the port.
- * Never returns <code>null</code>
- *
- * @since JAX-WS 2.1
- */
- String getBindingID();
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,104 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import org.w3c.dom.Element;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public abstract class Endpoint21 extends Endpoint
-{
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this <code>Endpoint</code> instance.
- * <p>
- * If the Binding for this <code>bindingProvider</code> is
- * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
- * <code>W3CEndpointReference</code> MUST be returned.
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of this <code>Endpoint</code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
-
- * @throws WebServiceException If any error in the creation of
- * the <code>EndpointReference</code> or if the <code>Endpoint</code> is
- * not in the published state.
- * @throws UnsupportedOperationException If this <code>BindingProvider</code>
- * uses the XML/HTTP binding.
- *
- * @see javax.xml.ws.wsaddressing.W3CEndpointReference
- *
- * @since JAX-WS 2.1
- **/
- public abstract EndpointReference getEndpointReference(Element... referenceParameters);
-
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this <code>Endpoint</code> instance.
- * <p>
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of type <code>clazz</code> of this
- * <code>Endpoint<code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
-
- * @throws WebServiceException If any error in the creation of
- * the <code>EndpointReference</code> or if the <code>Endpoint</code> is
- * not in the published state or if the <code>clazz</code> is not a supported
- * <code>EndpointReference</code> type.
- * @throws UnsupportedOperationException If this <code>BindingProvider</code>
- * uses the XML/HTTP binding.
- *
- *
- * @since JAX-WS 2.1
- **/
- public abstract <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters);
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,187 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.io.StringWriter;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.ws.spi.Provider;
-import javax.xml.ws.spi.Provider21;
-import javax.xml.ws.wsaddressing.W3CEndpointReference;
-
-/**
- * This class represents an WS-Addressing EndpointReference
- * which is a remote reference to a web service endpoint.
- * See <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
- * WS-Addressing</a>
- * for more information on WS-Addressing EndpointReferences.
- * <p>
- * This class is immutable as the typical web service developer
- * need not be concerned with its contents. The web service
- * developer should use this class strictly as a mechanism to
- * reference a remote web service endpoint. See the {@link Service} APIs
- * that clients can use to that utilize an <code>EndpointReference</code>.
- * See the {@link javax.xml.ws.Endpoint}, and
- * {@link javax.xml.ws.BindingProvider} APIs on how
- * <code>EndpointReferences</code> can be created for published
- * endpoints.
- * <p>
- * Concrete implementations of this class will represent
- * an <code>EndpointReference</code> for a particular version of Addressing.
- * For example the {@link W3CEndpointReference} is for use
- * with W3C WS-Addressing 1.0 - Core Recommendation.
- * If JAX-WS implementors need to support different versions
- * of addressing, they should write their own
- * <code>EndpointReference</code> subclass for that version.
- * This will allow a JAX-WS implementation to createEndpointReference
- * vendor specific <code>EndpointReferences</code> that that
- * vendor can use to flag a different version of
- * addressing.
- * <p>
- * Web service developers that wish to pass or return
- * <code>EndpointReferences</code> in Java methods in an
- * SEI should use
- * concrete instances of an <code>EndpointReference</code> such
- * as the <code>W3CEndpointReferendce</code>. This way the
- * schema mapped from the SEI will be more descriptive of the
- * type of endpoint reference being passed.
- * <p>
- * JAX-WS implementors are expected to extract the XML infoset
- * from an <CODE>EndpointReferece</CODE> using the
- * <code>{@link EndpointReference#writeTo}</code>
- * method.
- * <p>
- * JAXB will bind this class to xs:anyType. If a better binding
- * is desired, web services developers should use a concrete
- * subclass such as {@link W3CEndpointReference}.
- *
- * @see W3CEndpointReference
- * @see Service
- * @since JAX-WS 2.1
- */
-//@XmlTransient // to treat this class like Object as far as databinding is concerned (proposed JAXB 2.1 feature)
-public abstract class EndpointReference
-{
- //
- //Default constructor to be only called by derived types.
- //
- protected EndpointReference()
- {
- };
-
- /**
- * Factory method to read an EndpointReference from the infoset contained in
- * <code>eprInfoset</code>. This method delegates to the vendor specific
- * implementation of the {@link javax.xml.ws.spi.Provider#readEndpointReference} method.
- *
- * @param eprInfoset The <code>EndpointReference<code> infoset to be unmarshalled
- *
- * @return the EndpointReference unmarshalled from <code>eprInfoset</code>
- * never <code>null</code>
- * @throws WebServiceException
- * if an error occurs while creating the
- * <code>EndpointReference</code> from the <CODE>eprInfoset</CODE>
- * @throws java.lang.IllegalArgumentException
- * if the null <code>eprInfoset</tt> value is given.
- */
- public static EndpointReference readFrom(Source eprInfoset)
- {
- return ((Provider21)Provider.provider()).readEndpointReference(eprInfoset);
- }
-
- /**
- * write this EndpointReference to the specified infoset format
- * @throws WebServiceException
- * if there is an error writing the
- * EndpointReference to the specified <code>result</code>.
- *
- * @throws java.lang.IllegalArgumentException
- * If the null <code>result</tt> value is given.
- */
- public abstract void writeTo(Result result);
-
- /**
- * The getPort method returns a proxy. If there
- * are any reference parameters in the
- * <code>EndpointReference</code> instance, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The parameter <code>serviceEndpointInterface</code> specifies
- * the service endpoint interface that is supported by the
- * returned proxy.
- * The <code>EndpointReference</code> instance specifies the
- * endpoint that will be invoked by the returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly from
- * the WSDL Metadata from this <code>EndpointReference</code> or from
- * annotations on the <code>serviceEndpointInterface</code>.
- * <p>
- * Because this port is not created from a Service object, handlers
- * will not automatically be configured, and the HandlerResolver
- * and Executor cannot be get or set for this port. The
- * <code>BindingProvider().getBinding().setHandlerChain()</code>
- * method can be used to manually configure handlers for this port.
- *
- *
- * @param serviceEndpointInterface Service endpoint interface
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that supports the
- * specified service endpoint interface
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy
- * <LI>If there is any missing WSDL metadata
- * as required by this method
- * <LI>If this
- * <code>endpointReference</code>
- * is invalid
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * is specified
- * <LI>If feature is enabled that is not compatible with
- * this port or is unsupported.
- * </UL>
- *
- * @see java.lang.reflect.Proxy
- * @see WebServiceFeature
- **/
- public <T> T getPort(Class<T> serviceEndpointInterface, WebServiceFeature... features)
- {
- return ((Provider21)Provider.provider()).getPort(this, serviceEndpointInterface, features);
- }
-
- /**
- * Displays EPR infoset for debugging convenience.
- */
- public String toString()
- {
- StringWriter w = new StringWriter();
- writeTo(new StreamResult(w));
- return w.toString();
- }
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,169 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * The <code>FaultAction</code> annotation is used inside an <a href="Action.html">
- * Action</a> annotation to allow an explicit association of <code>Action</code> message
- * addressing property with the <code>fault</code> messages of the WSDL operation mapped from
- * the exception class.
- * <p>
- * The <code>fault</code> message in the generated WSDL operation mapped for <code>className</code>
- * class contains explicit <code>wsaw:Action</code> attribute.
- *
- * <p>
- * <b>Example 1</b>: Specify explicit values for <code>Action</code> message addressing
- * property for the <code>input</code>, <code>output</code> and <code>fault</code> message
- * if the Java method throws only one service specific exception.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * input="http://example.com/inputAction",
- * output="http://example.com/outputAction",
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class, value="http://example.com/faultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions targetNamespace="http://example.com/numbers" ...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput" name="Parameters"
- * wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput" name="Result"
- * wsaw:Action="http://example.com/outputAction"/>
- * <fault message="tns:AddNumbersException" name="AddNumbersException"
- * wsaw:Action="http://example.com/faultAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * Example 2: Here is an example that shows how to specify explicit values for <code>Action</code>
- * message addressing property if the Java method throws only one service specific exception,
- * without specifying the values for <code>input</code> and <code>output</code> messages.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class, value="http://example.com/faultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions targetNamespace="http://example.com/numbers" ...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput" name="Parameters"/>
- * <output message="tns:AddNumbersOutput" name="Result"/>
- * <fault message="tns:addNumbersFault" name="InvalidNumbers"
- * wsa:Action="http://example.com/addnumbers/fault"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * Example 3: Here is an example that shows how to specify explicit values for <code>Action</code>
- * message addressing property if the Java method throws more than one service specific exception.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class, value="http://example.com/addFaultAction")
- * @javax.xml.ws.FaultAction(className=TooBigNumbersException.class, value="http://example.com/toobigFaultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException, TooBigNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions targetNamespace="http://example.com/numbers" ...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput" name="Parameters"/>
- * <output message="tns:AddNumbersOutput" name="Result"/>
- * <fault message="tns:addNumbersFault" name="AddNumbersException"
- * wsa:Action="http://example.com/addnumbers/fault"/>
- * <fault message="tns:tooBigNumbersFault" name="TooBigNumbersException"
- * wsa:Action="http://example.com/toobigFaultAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * @since JAX-WS 2.1
- */
-
-@Documented
-(a)Retention(RetentionPolicy.RUNTIME)
-(a)Target(ElementType.METHOD)
-public @interface FaultAction {
- /**
- * Name of the exception class
- */
- Class className();
-
- /**
- * Value of <code>Action</code> message addressing property for the exception
- */
- String value() default "";
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,105 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import javax.xml.ws.spi.WebServiceFeatureAnnotation;
-
-/**
- * This feature clarifies the use of the <code>wsdl:binding</code>
- * in a JAX-WS runtime.
- * <p>
- * This feature is only useful with web services that have an
- * associated WSDL. Enabling this feature requires that a JAX-WS
- * implementation inspect the <code>wsdl:binding</code> for an
- * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
- * that have the <code>required</code> attribute set to <code>true</code>
- * are understood and are being used.
- * <p>
- * The following describes the affects of this feature with respect
- * to be enabled or disabled:
- * <ul>
- * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
- * required <code>wsdl:binding</code> extensions are either understood
- * and used by the runtime, or explicitly disabled by the web service
- * application. A web service application can disable a particular
- * extension that has a know <code>WebServiceFeature</code> using
- * either the {@link BindingType#features} element on the server
- * or one of the following methods on the client:
- * <ul>
- * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,Class,
- * Service.Mode mode,WebServiceFeature...)}
- * <li>{@link Service21#createDispatch(EndpointReference,
- * Class,Service.Mode,
- * WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link Service#createDispatch(EndpointReference,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
- * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code> methods on a
- * generated <code>Service</code>.
- * </ul>
- * The runtime MUST also make sure that binding of
- * SEI parameters/return values respect the <code>wsdl:binding</code>.
- * With this feature enabled, if a required
- * <code>wsdl:binding</code> extension is in the WSDL and it is not
- * supported by a JAX-WS runtime and it has not
- * been explicitly turned off by the web service developer, then
- * that JAX-WS runtime MUST behave appropriately based on whether it is
- * on the client or server:
- * <UL>
- * <li>Client: runtime MUST throw a
- * <code>WebServiceException</code> no sooner than when one of the methods
- * above is invoked but no later than the first invocation of an endpoint
- * operation.
- * <li>throw a WebServiceException and the endpoint MUST fail to start
- * </ul>
- * <li> DISABLED: In this Mode, an implementation may choose whether
- * to inspect the <code>wsdl:binding<code> or not and to what degree
- * the <code>wsdl:binding</code> will be inspected. For example,
- * one implementation may choose to behave as if this feature is enabled,
- * another implementation may only choose to verify the SEI's
- * parameter/return type bindings.
- * </ul>
- *
- * @see javax.xml.ws.RespectBindingFeature
- *
- * @since JAX-WS 2.1
- */
-(a)Target(ElementType.TYPE)
-(a)Retention(RetentionPolicy.RUNTIME)
-@Documented
-@WebServiceFeatureAnnotation(id = RespectBindingFeature.ID, bean = RespectBindingFeature.class)
-public @interface RespectBinding {
- /**
- * Specifies if this feature is enabled or disabled.
- */
- boolean enabled() default true;
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,126 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import javax.xml.ws.WebServiceFeature;
-
-/**
- * This feature clarifies the use of the <code>wsdl:binding</code>
- * in a JAX-WS runtime.
- * <p>
- * This feature is only useful with web services that have an
- * associated WSDL. Enabling this feature requires that a JAX-WS
- * implementation inspect the <code>wsdl:binding</code> for an
- * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
- * that have the <code>required</code> attribute set to <code>true</code>
- * are understood and are being used.
- * <p>
- * The following describes the affects of this feature with respect
- * to be enabled or disabled:
- * <ul>
- * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
- * required <code>wsdl:binding</code> extensions are either understood
- and used by the runtime, or explicitly disabled by the web service
- * application. A web service application can disable a particular
- * extension that has a know <code>WebServiceFeature</code> using
- * either the {@link BindingType#features} element on the server
- * or one of the following methods on the client:
- * <ul>
- * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,Class,
- * Service.Mode mode,WebServiceFeature...)}
- * <li>{@link Service21#createDispatch(EndpointReference,
- * Class,Service.Mode,
- * WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link Service#createDispatch(EndpointReference,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
- * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code> methods on a
- * generated <code>Service</code>.
- * </ul>
- * The runtime MUST also make sure that binding of
- * SEI parameters/return values respect the <code>wsdl:binding</code>.
- * With this feature enabled, if a required
- * <code>wsdl:binding</code> extension is in the WSDL and it is not
- * supported by a JAX-WS runtime and it has not
- * been explicitly turned off by the web service developer, then
- * that JAX-WS runtime MUST behave appropriately based on whether it is
- * on the client or server:
- * <UL>
- * <li>Client: runtime MUST throw a
- * <code>WebServiceException</code> no sooner than when one of the methods
- * above is invoked but no later than the first invocation of an endpoint
- * operation.
- * <li>throw a WebServiceException and the endpoint MUST fail to start
- * </ul>
- * <li> DISABLED: In this Mode, an implementation may choose whether
- * to inspect the <code>wsdl:binding<code> or not and to what degree
- * the <code>wsdl:binding</code> will be inspected. For example,
- * one implementation may choose to behave as if this feature is enabled,
- * another implementation may only choose to verify the SEI's
- * parameter/return type bindings.
- * </ul>
- *
- * @see javax.xml.ws.soap.AddressingFeature
- *
- * @since JAX-WS 2.1
- */
-public final class RespectBindingFeature extends WebServiceFeature
-{
- /**
- *
- * Constant value identifying the RespectBindingFeature
- */
- public static final String ID = "javax.xml.ws.InspectBindingFeature";
-
- /**
- * Create an <code>RespectBindingFeature</code>.
- * The instance created will be enabled.
- */
- public RespectBindingFeature()
- {
- this.enabled = true;
- }
-
- /**
- * Create an RespectBindingFeature
- *
- * @param enabled specifies whether this feature should
- * be enabled or not.
- */
- public RespectBindingFeature(boolean enabled)
- {
- this.enabled = enabled;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getID()
- {
- return ID;
- }
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,455 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.spi.ServiceDelegate21;
-import javax.xml.bind.JAXBContext;
-import java.net.URL;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public class Service21 extends Service
-{
-
- protected Service21(URL wsdlDocumentLocation, QName serviceName)
- {
- super(wsdlDocumentLocation, serviceName);
- }
-
- /**
- * Create a <code>Service</code> instance.
- *
- * The specified WSDL document location and service qualified name MUST
- * uniquely identify a <code>wsdl:service</code> element.
- *
- * @param wsdlLocation URL for the WSDL document location
- * for the service
- * @param serviceName QName for the service
- * @throws WebServiceException If any error in creation of the
- * specified service.
- **/
- public static Service21 create(URL wsdlLocation, QName serviceName)
- {
- return new Service21(wsdlLocation, serviceName);
- }
-
- /**
- * Create a <code>Service</code> instance.
- *
- * @param serviceName QName for the service
- * @throws WebServiceException If any error in creation of the
- * specified service
- */
- public static Service21 create(QName serviceName)
- {
- return create(null, serviceName);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with objects of
- * the users choosing. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the dispatch accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * <p>
- * This method behaves the same as calling
- * <pre>
- * dispatch = service.createDispatch(portName, type, mode, features);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
- * element in the
- * metadata of the <code>endpointReference</code>.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned <code>Dispatch</code> object.
- * @param type The class of object used to messages or message
- * payloads. Implementations are required to support
- * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
- * when type is SOAPMessage.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance
- * @throws WebServiceException
- * <UL>
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <li>If the <code>wsaw:ServiceName</code> element
- * or the <code>wsaw:EndpointName</code> attribute
- * is missing in the metdata of the
- * <code>endpointReference</code>.
- * <li>If the <code>wsaw:ServiceName</code> does not
- * match the <code>serviceName</code> of this instance.
- * <li>If the <code>wsaw:EndpointName</code> does not
- * match a valid wsdl:Port in the WSDL metadata.
- * <li>If any error in the creation of
- * the <code>Dispatch</code> object.
- * <li>if a feature is enabled that is not
- * compatible with this port or is unsupported.
- * </UL>
- *
- * @see javax.xml.transform.Source
- * @see javax.xml.soap.SOAPMessage
- * @see WebServiceFeature;
- *
- * @since JAX-WS 2.1
- **/
- public <T> Dispatch<T> createDispatch(EndpointReference endpointReference, Class<T> type, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(endpointReference, type, mode, features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with JAXB
- * generated objects. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the dispatch accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * <p>
- * This method behavies the same as calling
- * <pre>
- * dispatch = service.createDispatch(portName, context, mode, features);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpointName</code> attribute of the <code>wsaw:ServiceName</code>
- * element in the
- * metadata of the <code>endpointReference</code>.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned <code>Dispatch</code> object.
- * @param context The JAXB context used to marshall and unmarshall
- * messages or message payloads.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance
- * @throws WebServiceException
- * @throws WebServiceException
- * <UL>
- * <li>If there is any missing WSDL metadata
- * as required by this method.
- * <li>If the <code>wsaw:ServiceName</code> element
- * or the <code>wsaw:EndpointName</code> attribute
- * is missing in the metdata of the
- * <code>endpointReference</code>.
- * <li>If the <code>wsaw:ServiceName</code> does not
- * match the <code>serviceName</code> of this instance.
- * <li>If the <code>wsaw:EndpointName</code> does not
- * match a valid wsdl:Port in the WSDL metadata.
- * <li>If any error in the creation of
- * the <code>Dispatch</code> object.
- * <li>if a feature is enabled that is not
- * compatible with this port or is unsupported.
- * </UL>
- *
- * @see javax.xml.bind.JAXBContext
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public Dispatch<Object> createDispatch(EndpointReference endpointReference, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(endpointReference, context, mode, features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with objects of
- * the users choosing.
- *
- * @param portName Qualified name for the target service endpoint
- * @param type The class of object used for messages or message
- * payloads. Implementations are required to support
- * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
- * when type is SOAPMessage.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance.
- * @throws WebServiceException If any error in the creation of
- * the <code>Dispatch</code> object or if a
- * feature is enabled that is not compatible with
- * this port or is unsupported.
- *
- * @see javax.xml.transform.Source
- * @see javax.xml.soap.SOAPMessage
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> Dispatch<T> createDispatch(QName portName, Class<T> type, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(portName, type, mode, features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with JAXB
- * generated objects.
- *
- * @param portName Qualified name for the target service endpoint
- * @param context The JAXB context used to marshall and unmarshall
- * messages or message payloads.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance.
- * @throws WebServiceException If any error in the creation of
- * the <code>Dispatch</code> object or if a
- * feature is enabled that is not compatible with
- * this port or is unsupported.
- *
- * @see javax.xml.bind.JAXBContext
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(portName, context, mode, features);
- }
-
-
- /**
- * The getPort method returns a proxy. The parameter
- * <code>serviceEndpointInterface</code> specifies the service
- * endpoint interface that is supported by the returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly.
- * The returned proxy should not be reconfigured by the client.
- *
- * @param serviceEndpointInterface Service endpoint interface.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object instance that supports the
- * specified service endpoint interface.
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- *
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(Class<T> serviceEndpointInterface, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(serviceEndpointInterface, features);
- }
-
- /**
- * The getPort method returns a proxy.
- * The parameter <code>endpointReference</code> specifies the
- * endpoint that will be invoked by the returned proxy. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * The parameter <code>serviceEndpointInterface</code> specifies
- * the service endpoint interface that is supported by the
- * returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * The returned proxy should not be reconfigured by the client.
- * If this <code>Service</code> instance has a known proxy
- * port that matches the information contained in
- * the WSDL,
- * then that proxy is returned, otherwise a WebServiceException
- * is thrown.
- * <p>
- * Calling this method has the same behavior as the following
- * <pre>
- * port = service.getPort(portName, serviceEndpointInterface);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpontName</code> attribute of the
- * <code>wsaw:ServiceName</code> element in the
- * metadata of the <code>endpointReference</code> or from the
- * <code>serviceEndpointInterface</code> and the WSDL
- * associated with this <code>Service</code> instance.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">WS-Addressing - WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned proxy.
- * @param serviceEndpointInterface Service endpoint interface.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that supports the
- * specified service endpoint interface.
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If the <code>wsaw:EndpointName</code> is
- * missing from the <code>endpointReference</code>
- * or does not match a wsdl:Port
- * in the WSDL metadata.
- * <LI>If the <code>wsaw:ServiceName</code> in the
- * <code>endpointReference</code> metadata does not
- * match the <code>serviceName</code> of this
- * <code>Service</code> instance.
- * <LI>If an invalid
- * <code>endpointReference</code>
- * is specified.
- * <LI>If an invalid
- * <code>serviceEndpointInterface</code>
- * is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(EndpointReference endpointReference, Class<T> serviceEndpointInterface, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(endpointReference, serviceEndpointInterface, features);
- }
-
- /**
- * The getPort method returns a proxy. A service client
- * uses this proxy to invoke operations on the target
- * service endpoint. The <code>serviceEndpointInterface</code>
- * specifies the service endpoint interface that is supported by
- * the created dynamic proxy instance.
- *
- * @param portName Qualified name of the service endpoint in
- * the WSDL service description.
- * @param serviceEndpointInterface Service endpoint interface
- * supported by the dynamic proxy instance.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that
- * supports the specified service endpoint
- * interface.
- * @throws WebServiceException This exception is thrown in the
- * following cases:
- * <UL>
- * <LI>If there is an error in creation of
- * the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * or <code>portName</code> is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- * @see java.lang.reflect.Proxy
- * @see java.lang.reflect.InvocationHandler
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(QName portName, Class<T> serviceEndpointInterface, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(portName, serviceEndpointInterface, features);
- }
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,103 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import org.w3c.dom.Element;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public interface WebServiceContext21 extends WebServiceContext
-{
- /**
- * Returns the <code>WEndpointReference</code> for this
- * endpoint.
- * <p>
- * If the Binding for this <code>bindingProvider</code> is
- * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
- * <code>W3CEndpointReference</code> MUST be returned.
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of the endpoint associated with this
- * <code>WebServiceContext</code>.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
- *
- * @throws IllegalStateException This exception is thrown
- * if the method is called while no request is
- * being serviced.
- *
- * @see javax.xml.ws.wsaddressing.W3CEndpointReference
- *
- * @since JAX-WS 2.1
- */
- public EndpointReference getEndpointReference(Element... referenceParameters);
-
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this endpoint.
- * <p>
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param clazz The type of <code>EndpointReference</code> that
- * MUST be returned.
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of type <code>clazz</code> of the endpoint
- * associated with this <code>WebServiceContext</code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
- *
- * @throws IllegalStateException This exception is thrown
- * if the method is called while no request is
- * being serviced.
- * @throws WebServiceException If the <code>clazz</code> type of
- * <code>EndpointReference</code> is not supported.
- *
- * @since JAX-WS 2.1
- **/
- public abstract <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters);
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -1,77 +0,0 @@
-/*
- * 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 file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package javax.xml.ws;
-
-/**
- * A WebServiceFeature is used to represent a feature that can be
- * enabled or disabled for a web service.
- * <p>
- * The JAX-WS specification will define some standard features and
- * JAX-WS implementors are free to define additional features if
- * necessary. Vendor specific features may not be portable so
- * caution should be used when using them. Each Feature definition
- * MUST define a <code>public static final String ID</code>
- * that can be used in the Feature annotation to refer
- * to the feature. This ID MUST be unique across all features
- * of all vendors. When defining a vendor specific feature ID,
- * use a vendor specific namespace in the ID string.
- *
- * @see javax.xml.ws.RespectBindingFeature
- * @see javax.xml.ws.soap.AddressingFeature
- * @see javax.xml.ws.soap.MTOMFeature
- *
- * @since 2.1
- */
-public abstract class WebServiceFeature
-{
- /**
- * Each Feature definition MUST define a public static final
- * String ID that can be used in the Feature annotation to refer
- * to the feature.
- */
- // public static final String ID = "some unique feature Identifier";
- /**
- * Get the unique identifier for this WebServiceFeature.
- *
- * @return the unique identifier for this feature.
- */
- public abstract String getID();
-
- /**
- * Specifies if the feature is enabled or disabled
- */
- protected boolean enabled = false;
-
- protected WebServiceFeature()
- {
- }
-
- /**
- * Returns <code>true</code> if this feature is enabled.
- *
- * @return <code>true</code> if and only if the feature is enabled .
- */
- public boolean isEnabled()
- {
- return enabled;
- }
-}
Copied: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java (from rev 9105, stack/native/branches/jaxws21/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java)
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java (rev 0)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,129 @@
+/*
+ * 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 file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.common.wsdl11;
+
+import java.io.File;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.jboss.ws.Constants;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory;
+import org.jboss.wsf.test.JBossWSTest;
+import org.w3c.dom.Element;
+
+/**
+ * Test the unmarshalling of wsdl-1.1 into the unified wsdl structure
+ * using known and unknown wsdl extensibility elements.
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 15-Jan-2009
+ */
+public class WSDLExtensElemTestCase extends JBossWSTest
+{
+ public void testPolicyEndpointExtensibilityElements() throws Exception
+ {
+ File wsdlFile = getResourceFile("common/wsdl11/PolicyAttachment.wsdl");
+ assertTrue(wsdlFile.exists());
+
+ WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
+ WSDLDefinitions wsdlDefinitions = factory.parse(wsdlFile.toURL());
+ WSDLService wsdlService = wsdlDefinitions.getServices()[0];
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoints()[0];
+
+ List<WSDLExtensibilityElement> extPortList = wsdlEndpoint.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extPortList);
+ assertEquals(extPortList.size(),1);
+ assertPolicyRef(extPortList.get(0),"uselessPortPolicy");
+ List<WSDLExtensibilityElement> portNotUnderstoodList = wsdlEndpoint.getNotUnderstoodExtElements();
+ assertNotNull(portNotUnderstoodList);
+ assertEquals(0, portNotUnderstoodList.size());
+
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ List<WSDLExtensibilityElement> extBinding = wsdlBinding.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extBinding);
+ assertEquals(extBinding.size(),2);
+ assertPolicyRef(extBinding.get(0),"RmPolicy");
+ assertPolicyRef(extBinding.get(1),"X509EndpointPolicy");
+ List<WSDLExtensibilityElement> bindingNotUnderstoodList = wsdlBinding.getNotUnderstoodExtElements();
+ assertNotNull(bindingNotUnderstoodList);
+ assertEquals(0, bindingNotUnderstoodList.size());
+ }
+
+ public void testPolicyAndUnkwnownEndpointExtensibilityElements() throws Exception
+ {
+ File wsdlFile = getResourceFile("common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl");
+ assertTrue(wsdlFile.exists());
+
+ WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
+ WSDLDefinitions wsdlDefinitions = factory.parse(wsdlFile.toURL());
+ WSDLService wsdlService = wsdlDefinitions.getServices()[0];
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoints()[0];
+
+ List<WSDLExtensibilityElement> extPortList = wsdlEndpoint.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extPortList);
+ assertEquals(extPortList.size(),1);
+ assertPolicyRef(extPortList.get(0),"uselessPortPolicy");
+ List<WSDLExtensibilityElement> portNotUnderstoodList = wsdlEndpoint.getNotUnderstoodExtElements();
+ assertNotNull(portNotUnderstoodList);
+ assertEquals(1, portNotUnderstoodList.size());
+ assertUnknownExtElem(portNotUnderstoodList.get(0), "foo1", "http://foo.org/foo1", "bar", true);
+
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ List<WSDLExtensibilityElement> extBinding = wsdlBinding.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extBinding);
+ assertEquals(extBinding.size(),2);
+ assertPolicyRef(extBinding.get(0),"RmPolicy");
+ assertPolicyRef(extBinding.get(1),"X509EndpointPolicy");
+ List<WSDLExtensibilityElement> bindingNotUnderstoodList = wsdlBinding.getNotUnderstoodExtElements();
+ assertNotNull(bindingNotUnderstoodList);
+ assertEquals(2, bindingNotUnderstoodList.size());
+ assertUnknownExtElem(bindingNotUnderstoodList.get(0), "foo1", "http://foo.org/foo1", "bar", false);
+ assertUnknownExtElem(bindingNotUnderstoodList.get(1), "foo2", "http://foo.org/foo2", "bar", false);
+ }
+
+ private static void assertPolicyRef(WSDLExtensibilityElement extEl, String policyURI)
+ {
+ Element el = extEl.getElement();
+ QName qName = new QName(el.getNamespaceURI(),el.getLocalName(),el.getPrefix());
+ assertEquals(qName,new QName("http://schemas.xmlsoap.org/ws/2004/09/policy","PolicyReference","wsp"));
+ assertEquals(el.getAttributeNode("URI").getValue(),"#"+policyURI);
+ }
+
+ private static void assertUnknownExtElem(WSDLExtensibilityElement extEl, String prefix, String namespaceURI, String localName, boolean required)
+ {
+ Element el = extEl.getElement();
+ QName qName = new QName(el.getNamespaceURI(),el.getLocalName(),el.getPrefix());
+ assertEquals(qName, new QName(namespaceURI, localName, prefix));
+ assertEquals(required, "true".equals(el.getAttributeNS(Constants.NS_WSDL11, "required")));
+ assertEquals(required, extEl.isRequired());
+ }
+}
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -32,14 +32,20 @@
import javax.servlet.http.HttpServletResponse;
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.jboss.logging.Logger;
+import org.jboss.wsf.common.DOMUtils;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.http.HttpContext;
import org.jboss.wsf.spi.http.HttpServer;
import org.jboss.wsf.spi.http.HttpServerFactory;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* Test Endpoint deployment
@@ -50,6 +56,7 @@
public class EndpointServlet extends HttpServlet
{
private Endpoint endpoint;
+ private static final String TEST_ELEMENT = "<fabrikam:CustomerKey xmlns:fabrikam='http://example.com/fabrikam'>123456789</fabrikam:CustomerKey>";
@Override
public void init(ServletConfig config) throws ServletException
@@ -90,9 +97,32 @@
// Invoke the endpoint
String param = req.getParameter("param");
String retStr = port.echo(param);
+
+ //Test epr
+ assertEndpointReference(endpoint.getEndpointReference(DOMUtils.parse(TEST_ELEMENT)), TEST_ELEMENT);
+ assertEndpointReference(endpoint.getEndpointReference(W3CEndpointReference.class, (Element[])null), null);
// Return the result
PrintWriter pw = new PrintWriter(res.getWriter());
pw.print(retStr);
}
+
+
+
+ private void assertEndpointReference(EndpointReference epr, String refPar) throws IOException
+ {
+ Logger.getLogger(this.getClass()).info("epr: "+epr);
+ assert(W3CEndpointReference.class.getName().equals(epr.getClass().getName()));
+ Element endpointReference = DOMUtils.parse(epr.toString());
+ assert("EndpointReference".equals(endpointReference.getNodeName()));
+ assert("http://www.w3.org/2005/08/addressing".equals(endpointReference.getAttribute("xmlns")));
+ NodeList addresses = endpointReference.getElementsByTagName("Address");
+ assert(addresses.getLength() == 1);
+ assert("http://127.0.0.1:8080/jaxws-endpoint".equals(addresses.item(0).getFirstChild().getNodeValue()));
+ if (refPar != null)
+ {
+ //TODO enhance this check
+ assert(epr.toString().contains(refPar));
+ }
+ }
}
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -24,8 +24,10 @@
import java.net.URL;
import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
-import javax.xml.ws.Service21;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
@@ -75,10 +77,35 @@
builder.referenceParameter(DOMUtils.parse("<fabrikam:ShoppingCart xmlns:fabrikam='http://example.com/fabrikam'>ABCDEFG</fabrikam:ShoppingCart>"));
W3CEndpointReference epr = builder.build();
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
TestEndpoint port = service.getPort(epr, TestEndpoint.class);
((StubExt)port).setConfigName("Standard WSAddressing Client");
String retStr = port.echo("hello");
assertEquals("hello|123456789|ABCDEFG", retStr);
}
+
+ public void testEndpointReferenceFromSource() throws Exception
+ {
+ String address = "http://" + getServerHost() + ":8080/jaxws-epr/TestEndpointImpl";
+ URL wsdlURL = new URL(address + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/epr", "TestEndpointService");
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("<EndpointReference xmlns=\"http://www.w3.org/2005/08/addressing\">");
+ sb.append("<Address>").append(address).append("</Address>");
+ sb.append("<ServiceName>").append(serviceName).append("</ServiceName>");
+ sb.append("<ReferenceParameters>");
+ sb.append("<fabrikam:CustomerKey xmlns:fabrikam='http://example.com/fabrikam'>123456789</fabrikam:CustomerKey>");
+ sb.append("<fabrikam:ShoppingCart xmlns:fabrikam='http://example.com/fabrikam'>ABCDEFG</fabrikam:ShoppingCart>");
+ sb.append("</ReferenceParameters>");
+ sb.append("</EndpointReference>");
+ Source eprInfoset = new StreamSource(new java.io.StringReader(sb.toString()));
+ EndpointReference epr = EndpointReference.readFrom(eprInfoset);
+
+ Service service = Service.create(wsdlURL, serviceName);
+ TestEndpoint port = service.getPort(epr, TestEndpoint.class);
+ ((StubExt)port).setConfigName("Standard WSAddressing Client");
+ String retStr = port.echo("hello");
+ assertEquals("hello|123456789|ABCDEFG", retStr);
+ }
}
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -28,7 +28,7 @@
import java.net.URLConnection;
import javax.xml.namespace.QName;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
import junit.framework.Test;
@@ -85,7 +85,7 @@
{
URL wsdlURL = new URL("http://" + getServerHost() + ":8080/jaxws-fastinfoset?wsdl");
QName serviceName = new QName("http://org.jboss.ws/fastinfoset", "FastInfosetEndpointService");
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
FastInfosetFeature feature = new FastInfosetFeature();
FastInfoset port = service.getPort(FastInfoset.class, feature);
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -21,14 +21,12 @@
*/
package org.jboss.test.ws.jaxws.jbws1172;
-import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
-import javax.xml.ws.Service21;
import junit.framework.Test;
@@ -96,7 +94,7 @@
URL wsdlURL = getResourceURL("jaxws/jbws1172/WEB-INF/wsdl/TestService.wsdl");
URL xsdURL = new SchemaExtractor().getSchemaUrl(wsdlURL);
- Service21 service = Service21.create(wsdlURL, SERVICE_NAME);
+ Service service = Service.create(wsdlURL, SERVICE_NAME);
SchemaValidationFeature feature = new SchemaValidationFeature(xsdURL.toString());
MyTest port = service.getPort(MyTest.class, feature);
try
@@ -117,7 +115,7 @@
URL wsdlURL = getResourceURL("jaxws/jbws1172/WEB-INF/wsdl/TestService.wsdl");
URL xsdURL = new SchemaExtractor().getSchemaUrl(wsdlURL);
- Service21 service = Service21.create(wsdlURL, SERVICE_NAME);
+ Service service = Service.create(wsdlURL, SERVICE_NAME);
SchemaValidationFeature feature = new SchemaValidationFeature(xsdURL.toString());
TestErrorHandler errorHandler = new TestErrorHandler();
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -24,7 +24,7 @@
import java.net.URL;
import javax.xml.namespace.QName;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
import junit.framework.Test;
@@ -49,7 +49,7 @@
{
URL wsdlURL = new URL("http://" + getServerHost() + ":8080/jaxws-json?wsdl");
QName serviceName = new QName("http://org.jboss.ws/json", "JsonEndpointService");
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
JsonEncodingFeature feature = new JsonEncodingFeature();
JsonPort port = service.getPort(JsonPort.class, feature);
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -29,6 +29,7 @@
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
import javax.xml.ws.handler.Handler;
+import javax.xml.ws.soap.AddressingFeature;
import junit.framework.Test;
@@ -71,11 +72,10 @@
bindingProvider.getBinding().setHandlerChain(customHandlerChain);
Service service2 = Service.create(wsdlURL, serviceName);
- port2 = (StatefulEndpoint)service2.getPort(StatefulEndpoint.class);
+ port2 = (StatefulEndpoint)service2.getPort(StatefulEndpoint.class, new AddressingFeature(true, true));
bindingProvider = (BindingProvider)port2;
List<Handler> customHandlerChain2 = new ArrayList<Handler>();
customHandlerChain2.add(new ClientHandler());
- customHandlerChain2.add(new WSAddressingClientHandler());
bindingProvider.getBinding().setHandlerChain(customHandlerChain2);
}
Modified: stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java 2009-01-23 15:32:14 UTC (rev 9107)
@@ -34,9 +34,9 @@
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.soap.Addressing;
import org.jboss.logging.Logger;
-import org.jboss.ws.annotation.EndpointConfig;
/**
* WS-Addressing stateful service endpoint
@@ -45,7 +45,7 @@
* @since 24-Nov-2005
*/
@WebService(name = "StatefulEndpoint", targetNamespace = "http://org.jboss.ws/samples/wsaddressing", serviceName = "TestService")
-@EndpointConfig(configName = "Standard WSAddressing Endpoint")
+@Addressing
@HandlerChain(file = "jaxws-handlers.xml")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class StatefulEndpointImpl implements StatefulEndpoint
Copied: stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl (from rev 9105, stack/native/branches/jaxws21/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl)
===================================================================
--- stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl (rev 0)
+++ stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl 2009-01-23 15:32:14 UTC (rev 9107)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<definitions name="TestService" targetNamespace="http://org.jboss.ws/jaxrpc"
+ xmlns:tns="http://org.jboss.ws/jaxrpc"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:ns2="http://org.jboss.ws/jaxrpc/types"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:fab="http://www.fabrikam123.example.com/stock"
+ xmlns:rmp="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+ xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
+ xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+ xmlns:foo1="http://foo.org/foo1"
+ xmlns:foo2="http://foo.org/foo2"
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utilit..." >
+ <wsp:Policy wsu:Id="RmPolicy" >
+ <rmp:RMAssertion>
+ <rmp:InactivityTimeout Milliseconds="600000" />
+ <rmp:BaseRetransmissionInterval Milliseconds="3000" />
+ <rmp:ExponentialBackoff />
+ <rmp:AcknowledgementInterval Milliseconds="200" />
+ </rmp:RMAssertion>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="uselessServicePolicy" >
+ <fab:useless>nothing</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="uselessPortPolicy" >
+ <fab:useless>nothing again</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="X509EndpointPolicy" >
+ <sp:AsymmetricBinding>
+ <wsp:Policy>
+ <!-- Details omitted for readability -->
+ <sp:IncludeTimestamp />
+ <sp:OnlySignEntireHeadersAndBody />
+ </wsp:Policy>
+ </sp:AsymmetricBinding>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="SecureMessagePolicy" >
+ <sp:SignedParts>
+ <sp:Body />
+ </sp:SignedParts>
+ <sp:EncryptedParts>
+ <sp:Body />
+ </sp:EncryptedParts>
+ </wsp:Policy>
+ <types>
+ <schema targetNamespace="http://org.jboss.ws/jaxrpc/types" xmlns:tns="http://org.jboss.ws/jaxrpc/types" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema">
+ <complexType name="echoSimpleUserType">
+ <sequence>
+ <element name="String_1" type="string" nillable="true"/>
+ <element name="SimpleUserType_2" type="tns:SimpleUserType" nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="SimpleUserType">
+ <sequence>
+ <element name="a" type="int"/>
+ <element name="b" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoSimpleUserTypeResponse">
+ <sequence>
+ <element name="result" type="tns:SimpleUserType" nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoString">
+ <sequence>
+ <element name="String_1" type="string" nillable="true"/>
+ <element name="String_2" type="string" nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoStringResponse">
+ <sequence>
+ <element name="result" type="string" nillable="true"/>
+ </sequence>
+ </complexType>
+ <element name="echoSimpleUserType" type="tns:echoSimpleUserType"/>
+ <element name="echoSimpleUserTypeResponse" type="tns:echoSimpleUserTypeResponse"/>
+ <element name="echoString" type="tns:echoString"/>
+ <element name="echoStringResponse" type="tns:echoStringResponse"/>
+ </schema>
+ </types>
+ <message name="JaxRpcTestService_echoSimpleUserType">
+ <part name="parameters" element="ns2:echoSimpleUserType"/>
+ </message>
+ <message name="JaxRpcTestService_echoSimpleUserTypeResponse">
+ <part name="result" element="ns2:echoSimpleUserTypeResponse"/>
+ </message>
+ <message name="JaxRpcTestService_echoString">
+ <part name="parameters" element="ns2:echoString"/>
+ </message>
+ <message name="JaxRpcTestService_echoStringResponse">
+ <part name="result" element="ns2:echoStringResponse"/>
+ </message>
+ <portType name="JaxRpcTestService" wsp:PolicyURIs="#RmPolicy">
+ <operation name="echoSimpleUserType">
+ <input message="tns:JaxRpcTestService_echoSimpleUserType"/>
+ <output message="tns:JaxRpcTestService_echoSimpleUserTypeResponse"/>
+ </operation>
+ <operation name="echoString">
+ <input message="tns:JaxRpcTestService_echoString"/>
+ <output message="tns:JaxRpcTestService_echoStringResponse"/>
+ </operation>
+ </portType>
+ <binding name="JaxRpcTestServiceBinding" type="tns:JaxRpcTestService">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <wsp:PolicyReference URI="#RmPolicy" wsdl:required="true" />
+ <wsp:PolicyReference URI="#X509EndpointPolicy" wsdl:required="true" />
+ <foo1:bar wsdl:required="false"/>
+ <foo2:bar/>
+ <operation name="echoSimpleUserType">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="echoString">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="TestService">
+ <wsp:PolicyReference URI="#uselessServicePolicy" wsdl:required="true" />
+ <port name="JaxRpcTestServicePort" binding="tns:JaxRpcTestServiceBinding">
+ <wsp:PolicyReference URI="#uselessPortPolicy" wsdl:required="true" />
+ <foo1:bar wsdl:required="true"/>
+ <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
+ </port>
+ </service>
+</definitions>
Modified: stack/native/trunk/src/main/scripts/assembly-bin-dist.xml
===================================================================
--- stack/native/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:18:55 UTC (rev 9106)
+++ stack/native/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:32:14 UTC (rev 9107)
@@ -99,10 +99,12 @@
<include>ant-import/**</include>
<include>java/org/jboss/test/ws/console/**</include>
<include>java/org/jboss/test/ws/jaxws/samples/**</include>
+ <include>java/org/jboss/test/ws/jaxws/smoke/**</include>
<include>java/org/jboss/test/ws/management/**</include>
<include>java/org/jboss/test/ws/projectGenerator/**</include>
<include>resources/console/**</include>
<include>resources/jaxws/samples/**</include>
+ <include>resources/jaxws/smoke/**</include>
<include>resources/management/**</include>
<include>resources/projectGenerator/**</include>
</includes>
15 years, 11 months
JBossWS SVN: r9106 - in stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws: core/jaxws/client and 1 other directory.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:18:55 -0500 (Fri, 23 Jan 2009)
New Revision: 9106
Modified:
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
Log:
[JBWS-2446] Improving check of supported features
Modified: stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
===================================================================
--- stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23 15:18:55 UTC (rev 9106)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.extensions.validation.StrictlyValidErrorHandler;
import org.jboss.ws.feature.SchemaValidationFeature;
@@ -39,6 +41,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature( id = SchemaValidationFeature.ID)
+@WebServiceFeatureAnnotation(id = SchemaValidationFeature.ID, bean = SchemaValidationFeature.class)
public @interface SchemaValidation
{
/**
Modified: stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
===================================================================
--- stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-23 10:52:49 UTC (rev 9105)
+++ stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-23 15:18:55 UTC (rev 9106)
@@ -37,7 +37,9 @@
import org.jboss.ws.extensions.addressing.jaxws.WSAddressingClientHandler;
import org.jboss.ws.feature.FastInfosetFeature;
import org.jboss.ws.feature.JsonEncodingFeature;
+import org.jboss.ws.feature.SchemaValidationFeature;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
+import org.jboss.ws.metadata.umdm.FeatureSet;
import org.jboss.ws.metadata.umdm.ServiceMetaData;
import org.jboss.ws.metadata.wsdl.Extendable;
import org.jboss.ws.metadata.wsdl.WSDLBinding;
@@ -59,18 +61,26 @@
{
private static Logger log = Logger.getLogger(ClientFeatureProcessor.class);
+ private static FeatureSet supportedFeatures = new FeatureSet();
+ static
+ {
+ supportedFeatures.addFeature(new FastInfosetFeature());
+ supportedFeatures.addFeature(new JsonEncodingFeature());
+ supportedFeatures.addFeature(new SchemaValidationFeature());
+ supportedFeatures.addFeature(new AddressingFeature());
+ supportedFeatures.addFeature(new MTOMFeature());
+ supportedFeatures.addFeature(new RespectBindingFeature());
+ }
+
public static <T> void processFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
{
- boolean supportedFeature = false;
- if (feature instanceof FastInfosetFeature || feature instanceof JsonEncodingFeature)
- supportedFeature = true;
- supportedFeature = supportedFeature || processAddressingFeature(feature, epMetaData, stub);
- supportedFeature = supportedFeature || processMTOMFeature(feature, epMetaData, stub);
- supportedFeature = supportedFeature || processRespectBindingFeature(feature, epMetaData, stub);
- if (!supportedFeature)
+ if (!supportedFeatures.hasFeature(feature.getClass()))
{
throw new IllegalArgumentException("Unsupported feature: " + feature);
}
+ processAddressingFeature(feature, epMetaData, stub);
+ processMTOMFeature(feature, epMetaData, stub);
+ processRespectBindingFeature(feature, epMetaData, stub);
epMetaData.addFeature(feature);
}
@@ -85,7 +95,7 @@
* @return
*/
@SuppressWarnings("unchecked")
- private static <T> boolean processAddressingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ private static <T> void processAddressingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
{
if (feature instanceof AddressingFeature && feature.isEnabled())
{
@@ -93,9 +103,7 @@
List<Handler> handlers = bindingExt.getHandlerChain(HandlerType.POST);
handlers.add(new WSAddressingClientHandler());
bindingExt.setHandlerChain(handlers, HandlerType.POST);
- return true;
}
- return false;
}
/**
@@ -108,15 +116,13 @@
* @param stub
* @return
*/
- private static <T> boolean processMTOMFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ private static <T> void processMTOMFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
{
if (feature instanceof MTOMFeature)
{
SOAPBinding binding = (SOAPBinding)((BindingProvider)stub).getBinding();
binding.setMTOMEnabled(feature.isEnabled());
- return true;
}
- return false;
}
/**
@@ -129,7 +135,7 @@
* @param stub
* @return
*/
- private static <T> boolean processRespectBindingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
+ private static <T> void processRespectBindingFeature(WebServiceFeature feature, EndpointMetaData epMetaData, T stub)
{
if (feature instanceof RespectBindingFeature && feature.isEnabled())
{
@@ -156,9 +162,7 @@
log.warn("Cannot find port " + epMetaData.getPortName());
}
}
- return true;
}
- return false;
}
private static void checkNotUnderstoodExtElements(Extendable extendable, EndpointMetaData epMetaData)
15 years, 11 months
JBossWS SVN: r9105 - stack/native/branches/jaxws21/src/main/scripts.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 05:52:49 -0500 (Fri, 23 Jan 2009)
New Revision: 9105
Modified:
stack/native/branches/jaxws21/src/main/scripts/assembly-bin-dist.xml
Log:
[JBWS-2483] Adding smoke/tools to binary distro
Modified: stack/native/branches/jaxws21/src/main/scripts/assembly-bin-dist.xml
===================================================================
--- stack/native/branches/jaxws21/src/main/scripts/assembly-bin-dist.xml 2009-01-23 10:48:57 UTC (rev 9104)
+++ stack/native/branches/jaxws21/src/main/scripts/assembly-bin-dist.xml 2009-01-23 10:52:49 UTC (rev 9105)
@@ -99,10 +99,12 @@
<include>ant-import/**</include>
<include>java/org/jboss/test/ws/console/**</include>
<include>java/org/jboss/test/ws/jaxws/samples/**</include>
+ <include>java/org/jboss/test/ws/jaxws/smoke/**</include>
<include>java/org/jboss/test/ws/management/**</include>
<include>java/org/jboss/test/ws/projectGenerator/**</include>
<include>resources/console/**</include>
<include>resources/jaxws/samples/**</include>
+ <include>resources/jaxws/smoke/**</include>
<include>resources/management/**</include>
<include>resources/projectGenerator/**</include>
</includes>
15 years, 11 months
JBossWS SVN: r9104 - framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 05:48:57 -0500 (Fri, 23 Jan 2009)
New Revision: 9104
Modified:
framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java
framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java
Log:
[JBWS-2482] Running WSConsumerTestCase.testTarget() in binary distro mode only
Modified: framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java 2009-01-23 10:41:44 UTC (rev 9103)
+++ framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/PluginBase.java 2009-01-23 10:48:57 UTC (rev 9104)
@@ -57,6 +57,8 @@
protected void setupClasspath() throws Exception
{
String classpath = System.getProperty("surefire.test.class.path");
+ if (classpath == null) //no maven surefire classpath hacks required
+ return;
List<URL> jarURLs = new LinkedList<URL>();
StringBuffer jarURLString = new StringBuffer();
List<URL> classDirUrls = new LinkedList<URL>();
Modified: framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java
===================================================================
--- framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java 2009-01-23 10:41:44 UTC (rev 9103)
+++ framework/branches/jaxws21/testsuite/test/java/org/jboss/test/ws/jaxws/smoke/tools/WSConsumerPlugin.java 2009-01-23 10:48:57 UTC (rev 9104)
@@ -265,13 +265,13 @@
consumer.setGenerateSource(true);
consumer.setTarget("2.1");
consumer.setNoCompile(false);
-
- if (isIntegrationNative())
+
+ //this test is run in binary distribution mode only because the way Maven builds classpath doesn't allow to run the
+ //wsimport tool in Native stack from a Surefire test (the jaxws classes are of course loaded from the included
+ //jaxws source module and that causes the Sun's ParallelWorldClassLoader to throw an exception as EndpointReference
+ //is not loaded from a jar resource)
+ if (Boolean.getBoolean("binary.distribution"))
{
- System.out.println("FIXME [JBWS-] Fix WSConsumerPlugin.testTarget() classloading issue");
- }
- else
- {
consumeWSDL();
ClassLoader loader = getArtefactClassLoader();
Class<?> service = loader.loadClass("org.jboss.test.ws.tools.testTarget.TestService");
15 years, 11 months
JBossWS SVN: r9103 - framework/branches/jaxws21/testsuite/test/ant-import.
by jbossws-commits@lists.jboss.org
Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 05:41:44 -0500 (Fri, 23 Jan 2009)
New Revision: 9103
Modified:
framework/branches/jaxws21/testsuite/test/ant-import/build-testsuite.xml
Log:
[JBWS-2483] Providing test.classes.directory prop
Modified: framework/branches/jaxws21/testsuite/test/ant-import/build-testsuite.xml
===================================================================
--- framework/branches/jaxws21/testsuite/test/ant-import/build-testsuite.xml 2009-01-23 10:23:47 UTC (rev 9102)
+++ framework/branches/jaxws21/testsuite/test/ant-import/build-testsuite.xml 2009-01-23 10:41:44 UTC (rev 9103)
@@ -584,6 +584,7 @@
<sysproperty key="org.jboss.ws.wsse.keyStoreType" value="jks"/>
<sysproperty key="org.jboss.ws.wsse.trustStoreType" value="jks"/>
<sysproperty key="test.archive.directory" value="${tests.output.dir}/test-libs"/>
+ <sysproperty key="test.classes.directory" value="${tests.output.dir}/test-classes"/>
<sysproperty key="test.resources.directory" value="${tests.output.dir}/test-resources"/>
<sysproperty key="binary.distribution" value="true"/>
<classpath>
@@ -645,6 +646,7 @@
<sysproperty key="org.jboss.ws.wsse.keyStoreType" value="jks"/>
<sysproperty key="org.jboss.ws.wsse.trustStoreType" value="jks"/>
<sysproperty key="test.archive.directory" value="${tests.output.dir}/test-libs"/>
+ <sysproperty key="test.classes.directory" value="${tests.output.dir}/test-classes"/>
<sysproperty key="test.resources.directory" value="${tests.output.dir}/test-resources"/>
<sysproperty key="binary.distribution" value="true"/>
<classpath>
15 years, 11 months