[jboss-cvs] JBossAS SVN: r104893 - in projects/specs/trunk: jboss-jaxws-api_2.2_spec and 13 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon May 17 21:17:50 EDT 2010
Author: smcgowan at redhat.com
Date: 2010-05-17 21:17:48 -0400 (Mon, 17 May 2010)
New Revision: 104893
Added:
projects/specs/trunk/jboss-jaxws-api_2.2_spec/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/pom.xml
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Action.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/AsyncHandler.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Binding.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingProvider.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingType.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Dispatch.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Endpoint.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointReference.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/FaultAction.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Holder.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/LogicalMessage.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ProtocolException.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Provider.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RequestWrapper.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBinding.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBindingFeature.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Response.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ResponseWrapper.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Service.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ServiceMode.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebEndpoint.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebFault.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceClient.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceException.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceFeature.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServicePermission.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceProvider.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRef.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRefs.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/Handler.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/HandlerResolver.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalHandler.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalMessageContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/MessageContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/PortInfo.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPHandler.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPMessageContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPBinding.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPException.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/Addressing.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/AddressingFeature.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOM.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOMFeature.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPBinding.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPFaultException.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/FactoryFinder.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Invoker.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Provider.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpContext.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpExchange.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpHandler.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/package-info.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/package.html
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package-info.java
projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package.html
Log:
JBEE-28 - add JAX WS 2.2 APIs
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/pom.xml
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/pom.xml (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/pom.xml 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,22 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.jboss.spec</groupId>
+ <artifactId>jboss-specs-parent</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.spec.javax.xml.ws</groupId>
+ <artifactId>jboss-jaxws-api_2.2_spec</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>Java API for XML Web Services 2.2</name>
+ <description>Java API for XML Web Services Version 2.2 classes</description>
+
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/specs/trunk/jboss-jaxws-api_2.2_spec</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/specs/trunk/jboss-jaxws-api_2.2_spec</developerConnection>
+ <url>http://fisheye.jboss.org/browse/JBossAS/projects/specs/trunk/jboss-jaxws-api_2.2_spec</url>
+ </scm>
+
+</project>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Action.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Action.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Action.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+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 a
+ * WS-Addressing <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's
+ * <code>wsam:Action</code> attribute on the WSDL <code>input</code>,
+ * <code>output</code> and <code>fault</code> messages of the WSDL <code>operation</code>
+ * is based upon which attributes of the <code>Action</code> annotation have been specified.
+ * For the exact computation of <code>wsam:Action</code> values for the messages, refer
+ * to the algorithm in the JAX-WS specification.
+ * <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>
+ * @WebService(targetNamespace="http://example.com/numbers")
+ * public class AddNumbersImpl {
+ * <b>@Action(
+ * input="http://example.com/inputAction",
+ * output="http://example.com/outputAction")</b>
+ * 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="foo"
+ * <b>wsam:Action="http://example.com/inputAction"</b>/>
+ * <output message="tns:AddNumbersOutput" name="bar"
+ * <b>wsam:Action="http://example.com/outputAction"</b>/>
+ * </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 <code>wsam:Action</code> values for the
+ * WSDL <code>output</code> message are computed using the algorithm in the JAX-WS specification.
+ *
+ * <pre>
+ * @WebService(targetNamespace="http://example.com/numbers")
+ * public class AddNumbersImpl {
+ * <b>@Action(input="http://example.com/inputAction")</b>
+ * 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="foo"
+ * <b>wsam:Action="http://example.com/inputAction"</b> />
+ * <output message="tns:AddNumbersOutput" name="bar"
+ * <b>wsam:Action="http://example.com/numbers/AddNumbersPortType/AddNumbersResponse"</b>/>
+ * </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, <code>wsam:Action</code> value for the
+ * WSDL <code>input</code> message is computed using the algorithm in the JAX-WS specification.
+ *
+ * <p>
+ * <b>Example 3</b>: See {@link FaultAction} 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
+ */
+
+ at Documented
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.METHOD)
+public @interface Action {
+ /**
+ * Explicit value of the WS-Addressing <code>Action</code> message addressing property for the <code>input</code>
+ * message of the operation.
+ */
+ String input() default "";
+
+ /**
+ * Explicit value of the WS-Addressing <code>Action</code> message addressing property for the <code>output</code>
+ * message of the operation.
+ */
+ String output() default "";
+
+ /**
+ * Explicit value of the WS-Addressing <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 an explicit WS-Addressing
+ * <code>Action</code> message addressing property, needs to be specified as a value in this property
+ * using {@link FaultAction} annotation.
+ */
+ FaultAction[] fault() default { };
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/AsyncHandler.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/AsyncHandler.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/AsyncHandler.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+/** The <code>AsyncHandler</code> interface is implemented by
+ * clients that wish to receive callback notification of the completion of
+ * service endpoint operations invoked asynchronously.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface AsyncHandler<T> {
+
+ /** Called when the response to an asynchronous operation is available.
+ *
+ * @param res The response to the operation invocation.
+ *
+ **/
+ void handleResponse(Response<T> res);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Binding.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Binding.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Binding.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+
+/** The <code>Binding</code> interface is the base interface
+ * for JAX-WS protocol bindings.
+ *
+ * @since JAX-WS 2.0
+**/
+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>
+ * is required to configure the binding instance with the new chain.
+ *
+ * @return java.util.List<Handler> Handler chain
+ */
+ public java.util.List<javax.xml.ws.handler.Handler> getHandlerChain();
+
+ /**
+ * Sets the handler chain for the protocol binding instance.
+ *
+ * @param chain A List of handler configuration entries
+ * @throws WebServiceException On an error in the configuration of
+ * the handler chain
+ * @throws java.lang.UnsupportedOperationException If this
+ * operation is not supported. This may be done to
+ * avoid any overriding of a pre-configured handler
+ * 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();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingProvider.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingProvider.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingProvider.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+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.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.xml.ws.Binding
+ **/
+public interface BindingProvider {
+ /**
+ * Standard property: User name for authentication.
+ * <p>Type: <code>java.lang.String</code>
+ **/
+ public static final String USERNAME_PROPERTY =
+ "javax.xml.ws.security.auth.username";
+
+ /**
+ * Standard property: Password for authentication.
+ * <p>Type: <code>java.lang.String</code>
+ **/
+ public static final String PASSWORD_PROPERTY =
+ "javax.xml.ws.security.auth.password";
+
+ /**
+ * Standard property: Target service endpoint address. The
+ * URI scheme for the endpoint address specification MUST
+ * correspond to the protocol/transport binding for the
+ * binding in use.
+ * <p>Type: <code>java.lang.String</code>
+ **/
+ public static final String ENDPOINT_ADDRESS_PROPERTY =
+ "javax.xml.ws.service.endpoint.address";
+
+ /**
+ * Standard property: This boolean property is used by a service
+ * client to indicate whether or not it wants to participate in
+ * a session with a service endpoint. If this property is set to
+ * <code>true</code>, the service client indicates that it wants the session
+ * to be maintained. If set to <code>false</code>, the session is not maintained.
+ * The default value for this property is <code>false</code>.
+ * <p>Type: <code>java.lang.Boolean</code>
+ **/
+ public static final String SESSION_MAINTAIN_PROPERTY =
+ "javax.xml.ws.session.maintain";
+
+ /**
+ * Standard property for SOAPAction. This boolean property
+ * indicates whether or not the value of the
+ * <code>javax.xml.ws.soap.http.soapaction.uri</code> property
+ * is used for the value of the SOAPAction. The
+ * default value of this property is <code>false</code> indicating
+ * that the
+ * <code>javax.xml.ws.soap.http.soapaction.uri</code> property
+ * is not used for the value of the SOAPAction, however,
+ * if WS-Addressing is enabled, the default value is
+ * <code>true</code>.
+ *
+ * <p>Type: <code>java.lang.Boolean</code>
+ **/
+ public static final String SOAPACTION_USE_PROPERTY =
+ "javax.xml.ws.soap.http.soapaction.use";
+
+ /**
+ * Standard property for SOAPAction. Indicates the SOAPAction
+ * URI if the <code>javax.xml.ws.soap.http.soapaction.use</code>
+ * property is set to <code>true</code>. If WS-Addressing
+ * is enabled, this value will also be used for the value of the
+ * WS-Addressing Action header. If this property is not set,
+ * the default SOAPAction and WS-Addressing Action will be sent.
+ *
+ * <p>Type: <code>java.lang.String</code>
+ **/
+ public static final String SOAPACTION_URI_PROPERTY =
+ "javax.xml.ws.soap.http.soapaction.uri";
+
+ /**
+ * Get the context that is used to initialize the message context
+ * for request messages.
+ *
+ * Modifications to the request context do not affect the message context of
+ * either synchronous or asynchronous operations that have already been
+ * started.
+ *
+ * @return The context that is used in processing request messages.
+ **/
+ Map<String, Object> getRequestContext();
+
+ /**
+ * Get the context that resulted from processing a response message.
+ *
+ * The returned context is for the most recently completed synchronous
+ * operation. Subsequent synchronous operation invocations overwrite the
+ * response context. Asynchronous operations return their response context
+ * via the Response interface.
+ *
+ * @return The context that resulted from processing the latest
+ * response messages.
+ **/
+ Map<String, Object> getResponseContext();
+
+ /**
+ * Get the Binding for this binding provider.
+ *
+ * @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.
+ *
+ * @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>.
+ *
+ * @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 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);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingType.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingType.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/BindingType.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+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;
+
+/**
+ * The <code>BindingType</code> annotation is used to
+ * specify the binding to use for a web service
+ * endpoint implementation class.
+ * <p>
+ * This annotation may be overriden programmatically or via
+ * deployment descriptors, depending on the platform in use.
+ *
+ * @since JAX-WS 2.0
+ *
+ **/
+ at Target(ElementType.TYPE)
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface BindingType {
+ /**
+ * A binding identifier (a URI).
+ * If not specified, the default is the SOAP 1.1 / HTTP binding.
+ * <p>
+ * See the <code>SOAPBinding</code> and <code>HTTPBinding</code>
+ * for the definition of the standard binding identifiers.
+ *
+ * @see javax.xml.ws.Binding
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP11HTTP_BINDING
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP12HTTP_BINDING
+ * @see javax.xml.ws.http.HTTPBinding#HTTP_BINDING
+ */
+ String value() default "" ;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Dispatch.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Dispatch.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Dispatch.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.util.concurrent.Future;
+
+/** The <code>Dispatch</code> interface provides support
+ * for the dynamic invocation of a service endpoint operations. The
+ * <code>javax.xml.ws.Service</code>
+ * interface acts as a factory for the creation of <code>Dispatch</code>
+ * instances.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface Dispatch<T> extends BindingProvider {
+
+ /** Invoke a service operation synchronously.
+ *
+ * The client is responsible for ensuring that the <code>msg</code> object
+ * when marshalled is formed according to the requirements of the protocol
+ * binding in use.
+ *
+ * @param msg An object that will form the message or payload of
+ * the message used to invoke the operation.
+ * @return The response message or message payload to the
+ * operation invocation.
+ * @throws WebServiceException If a fault occurs during communication with
+ * the service
+ * @throws WebServiceException If there is any error in the configuration of
+ * the <code>Dispatch</code> instance
+ **/
+ public T invoke(T msg);
+
+ /** Invoke a service operation asynchronously. The
+ * method returns without waiting for the response to the operation
+ * invocation, the results of the operation are obtained by polling the
+ * returned <code>Response</code>.
+ * <p>
+ * The client is responsible for ensuring that the <code>msg</code> object
+ * when marshalled is formed according to the requirements of the protocol
+ * binding in use.
+ *
+ * @param msg An object that will form the message or payload of
+ * the message used to invoke the operation.
+ * @return The response message or message payload to the
+ * operation invocation.
+ * @throws WebServiceException If there is any error in the configuration of
+ * the <code>Dispatch</code> instance
+ **/
+ public Response<T> invokeAsync(T msg);
+
+ /** Invoke a service operation asynchronously. The
+ * method returns without waiting for the response to the operation
+ * invocation, the results of the operation are communicated to the client
+ * via the passed in <code>handler</code>.
+ * <p>
+ * The client is responsible for ensuring that the <code>msg</code> object
+ * when marshalled is formed according to the requirements of the protocol
+ * binding in use.
+ *
+ * @param msg An object that will form the message or payload of
+ * the message used to invoke the operation.
+ * @param handler The handler object that will receive the
+ * response to the operation invocation.
+ * @return A <code>Future</code> object that may be used to check the status
+ * of the operation invocation. This object MUST NOT be used to try to
+ * obtain the results of the operation - the object returned from
+ * <code>Future<?>.get()</code> is implementation dependent
+ * and any use of it will result in non-portable behaviour.
+ * @throws WebServiceException If there is any error in the configuration of
+ * the <code>Dispatch</code> instance
+ **/
+ public Future<?> invokeAsync(T msg, AsyncHandler<T> handler);
+
+ /** Invokes a service operation using the one-way
+ * interaction mode. The operation invocation is logically non-blocking,
+ * subject to the capabilities of the underlying protocol, no results
+ * are returned. When
+ * the protocol in use is SOAP/HTTP, this method MUST block until
+ * an HTTP response code has been received or an error occurs.
+ * <p>
+ * The client is responsible for ensuring that the <code>msg</code> object
+ * when marshalled is formed according to the requirements of the protocol
+ * binding in use.
+ *
+ * @param msg An object that will form the message or payload of
+ * the message used to invoke the operation.
+ * @throws WebServiceException If there is any error in the configuration of
+ * the <code>Dispatch</code> instance or if an error occurs during the
+ * invocation.
+ **/
+ public void invokeOneWay(T msg);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Endpoint.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Endpoint.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Endpoint.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,478 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.util.List;
+import java.util.Map;
+import javax.xml.ws.spi.Provider;
+import javax.xml.ws.spi.http.HttpContext;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.w3c.dom.Element;
+
+
+/**
+ * A Web service endpoint.
+ *
+ * <p>Endpoints are created using the static methods defined in this
+ * class. An endpoint is always tied to one <code>Binding</code>
+ * and one implementor, both set at endpoint creation time.
+ *
+ * <p>An endpoint is either in a published or an unpublished state.
+ * The <code>publish</code> methods can be used to start publishing
+ * an endpoint, at which point it starts accepting incoming requests.
+ * Conversely, the <code>stop</code> method can be used to stop
+ * accepting incoming requests and take the endpoint down.
+ * Once stopped, an endpoint cannot be published again.
+ *
+ * <p>An <code>Executor</code> may be set on the endpoint in order
+ * to gain better control over the threads used to dispatch incoming
+ * requests. For instance, thread pooling with certain parameters
+ * can be enabled by creating a <code>ThreadPoolExecutor</code> and
+ * registering it with the endpoint.
+ *
+ * <p>Handler chains can be set using the contained <code>Binding</code>.
+ *
+ * <p>An endpoint may have a list of metadata documents, such as WSDL
+ * and XMLSchema documents, bound to it. At publishing time, the
+ * JAX-WS implementation will try to reuse as much of that metadata
+ * as possible instead of generating new ones based on the annotations
+ * present on the implementor.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.xml.ws.Binding
+ * @see javax.xml.ws.BindingType
+ * @see javax.xml.ws.soap.SOAPBinding
+ * @see java.util.concurrent.Executor
+ *
+ **/
+public abstract class Endpoint {
+
+ /** Standard property: name of WSDL service.
+ * <p>Type: javax.xml.namespace.QName
+ **/
+ public static final String WSDL_SERVICE = "javax.xml.ws.wsdl.service";
+
+ /** Standard property: name of WSDL port.
+ * <p>Type: javax.xml.namespace.QName
+ **/
+ public static final String WSDL_PORT = "javax.xml.ws.wsdl.port";
+
+
+ /**
+ * Creates an endpoint with the specified implementor object. If there is
+ * a binding specified via a BindingType annotation then it MUST be used else
+ * a default of SOAP 1.1 / HTTP binding MUST be used.
+ * <p>
+ * The newly created endpoint may be published by calling
+ * one of the {@link javax.xml.ws.Endpoint#publish(String)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods.
+ *
+ *
+ * @param implementor The endpoint implementor.
+ *
+ * @return The newly created endpoint.
+ *
+ **/
+ public static Endpoint create(Object implementor) {
+ return create(null, implementor);
+ }
+
+ /**
+ * Creates an endpoint with the specified implementor object and web
+ * service features. If there is a binding specified via a BindingType
+ * annotation then it MUST be used else a default of SOAP 1.1 / HTTP
+ * binding MUST be used.
+ * <p>
+ * The newly created endpoint may be published by calling
+ * one of the {@link javax.xml.ws.Endpoint#publish(String)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods.
+ *
+ *
+ * @param implementor The endpoint implementor.
+ * @param features A list of WebServiceFeature to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ *
+ * @return The newly created endpoint.
+ * @since JAX-WS 2.2
+ *
+ */
+ public static Endpoint create(Object implementor, WebServiceFeature ... features) {
+ return create(null, implementor, features);
+ }
+
+ /**
+ * Creates an endpoint with the specified binding type and
+ * implementor object.
+ * <p>
+ * The newly created endpoint may be published by calling
+ * one of the {@link javax.xml.ws.Endpoint#publish(String)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods.
+ *
+ * @param bindingId A URI specifying the binding to use. If the bindingID is
+ * <code>null</code> and no binding is specified via a BindingType
+ * annotation then a default SOAP 1.1 / HTTP binding MUST be used.
+ *
+ * @param implementor The endpoint implementor.
+ *
+ * @return The newly created endpoint.
+ *
+ **/
+ public static Endpoint create(String bindingId, Object implementor) {
+ return Provider.provider().createEndpoint(bindingId, implementor);
+ }
+
+ /**
+ * Creates an endpoint with the specified binding type,
+ * implementor object, and web service features.
+ * <p>
+ * The newly created endpoint may be published by calling
+ * one of the {@link javax.xml.ws.Endpoint#publish(String)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods.
+ *
+ * @param bindingId A URI specifying the binding to use. If the bindingID is
+ * <code>null</code> and no binding is specified via a BindingType
+ * annotation then a default SOAP 1.1 / HTTP binding MUST be used.
+ *
+ * @param implementor The endpoint implementor.
+ *
+ * @param features A list of WebServiceFeature to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return The newly created endpoint.
+ * @since JAX-WS 2.2
+ */
+ public static Endpoint create(String bindingId, Object implementor, WebServiceFeature ... features) {
+ return Provider.provider().createEndpoint(bindingId, implementor, features);
+ }
+
+ /**
+ * Returns the binding for this endpoint.
+ *
+ * @return The binding for this endpoint
+ **/
+ public abstract Binding getBinding();
+
+ /**
+ * Returns the implementation object for this endpoint.
+ *
+ * @return The implementor for this endpoint
+ **/
+ public abstract Object getImplementor();
+
+ /**
+ * Publishes this endpoint at the given address.
+ * The necessary server infrastructure will be created and
+ * configured by the JAX-WS implementation using some default configuration.
+ * In order to get more control over the server configuration, please
+ * use the {@link javax.xml.ws.Endpoint#publish(Object)} method instead.
+ *
+ * @param address A URI specifying the address to use. The address
+ * MUST be compatible with the binding specified at the
+ * time the endpoint was created.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the provided address URI is not usable
+ * in conjunction with the endpoint's binding.
+ *
+ * @throws java.lang.IllegalStateException
+ * If the endpoint has been published already or it has been stopped.
+ *
+ * @throws java.lang.SecurityException
+ * If a <code>java.lang.SecurityManger</code>
+ * is being used and the application doesn't have the
+ * <code>WebServicePermission("publishEndpoint")</code> permission.
+ **/
+ public abstract void publish(String address);
+
+ /**
+ * Creates and publishes an endpoint for the specified implementor
+ * object at the given address.
+ * <p>
+ * The necessary server infrastructure will be created and
+ * configured by the JAX-WS implementation using some default configuration.
+ *
+ * In order to get more control over the server configuration, please
+ * use the {@link javax.xml.ws.Endpoint#create(String,Object)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods instead.
+ *
+ * @param address A URI specifying the address and transport/protocol
+ * to use. A http: URI MUST result in the SOAP 1.1/HTTP
+ * binding being used. Implementations may support other
+ * URI schemes.
+ * @param implementor The endpoint implementor.
+ *
+ * @return The newly created endpoint.
+ *
+ * @throws java.lang.SecurityException
+ * If a <code>java.lang.SecurityManger</code>
+ * is being used and the application doesn't have the
+ * <code>WebServicePermission("publishEndpoint")</code> permission.
+ *
+ **/
+ public static Endpoint publish(String address, Object implementor) {
+ return Provider.provider().createAndPublishEndpoint(address, implementor);
+ }
+
+ /**
+ * Creates and publishes an endpoint for the specified implementor
+ * object at the given address. The created endpoint is configured
+ * with the web service features.
+ * <p>
+ * The necessary server infrastructure will be created and
+ * configured by the JAX-WS implementation using some default configuration.
+ *
+ * In order to get more control over the server configuration, please
+ * use the {@link javax.xml.ws.Endpoint#create(String,Object)} and
+ * {@link javax.xml.ws.Endpoint#publish(Object)} methods instead.
+ *
+ * @param address A URI specifying the address and transport/protocol
+ * to use. A http: URI MUST result in the SOAP 1.1/HTTP
+ * binding being used. Implementations may support other
+ * URI schemes.
+ * @param implementor The endpoint implementor.
+ * @param features A list of WebServiceFeature to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return The newly created endpoint.
+ *
+ * @throws java.lang.SecurityException
+ * If a <code>java.lang.SecurityManger</code>
+ * is being used and the application doesn't have the
+ * <code>WebServicePermission("publishEndpoint")</code> permission.
+ * @since JAX-WS 2.2
+ */
+ public static Endpoint publish(String address, Object implementor, WebServiceFeature ... features) {
+ return Provider.provider().createAndPublishEndpoint(address, implementor, features);
+ }
+
+
+ /**
+ * Publishes this endpoint at the provided server context.
+ * A server context encapsulates the server infrastructure
+ * and addressing information for a particular transport.
+ * For a call to this method to succeed, the server context
+ * passed as an argument to it MUST be compatible with the
+ * endpoint's binding.
+ *
+ * @param serverContext An object representing a server
+ * context to be used for publishing the endpoint.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the provided server context is not
+ * supported by the implementation or turns
+ * out to be unusable in conjunction with the
+ * endpoint's binding.
+ *
+ * @throws java.lang.IllegalStateException
+ * If the endpoint has been published already or it has been stopped.
+ *
+ * @throws java.lang.SecurityException
+ * If a <code>java.lang.SecurityManger</code>
+ * is being used and the application doesn't have the
+ * <code>WebServicePermission("publishEndpoint")</code> permission.
+ **/
+ public abstract void publish(Object serverContext);
+
+ /**
+ * Publishes this endpoint at the provided server context.
+ * A server context encapsulates the server infrastructure
+ * and addressing information for a particular transport.
+ * For a call to this method to succeed, the server context
+ * passed as an argument to it MUST be compatible with the
+ * endpoint's binding.
+ *
+ * <p>
+ * This is meant for container developers to publish the
+ * the endpoints portably and not intended for the end
+ * developers.
+ *
+ *
+ * @param serverContext An object representing a server
+ * context to be used for publishing the endpoint.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the provided server context is not
+ * supported by the implementation or turns
+ * out to be unusable in conjunction with the
+ * endpoint's binding.
+ *
+ * @throws java.lang.IllegalStateException
+ * If the endpoint has been published already or it has been stopped.
+ *
+ * @throws java.lang.SecurityException
+ * If a <code>java.lang.SecurityManger</code>
+ * is being used and the application doesn't have the
+ * <code>WebServicePermission("publishEndpoint")</code> permission.
+ * @since JAX-WS 2.2
+ */
+ public void publish(HttpContext serverContext) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+ /**
+ * Stops publishing this endpoint.
+ *
+ * If the endpoint is not in a published state, this method
+ * has no effect.
+ *
+ **/
+ public abstract void stop();
+
+ /**
+ * Returns true if the endpoint is in the published state.
+ *
+ * @return <code>true</code> if the endpoint is in the published state.
+ **/
+ public abstract boolean isPublished();
+
+ /**
+ * Returns a list of metadata documents for the service.
+ *
+ * @return <code>List<javax.xml.transform.Source></code> A list of metadata documents for the service
+ **/
+ public abstract List<javax.xml.transform.Source> getMetadata();
+
+ /**
+ * Sets the metadata for this endpoint.
+ *
+ * @param metadata A list of XML document sources containing
+ * metadata information for the endpoint (e.g.
+ * WSDL or XML Schema documents)
+ *
+ * @throws java.lang.IllegalStateException If the endpoint
+ * has already been published.
+ **/
+ public abstract void setMetadata(List<javax.xml.transform.Source> metadata);
+
+ /**
+ * Returns the executor for this <code>Endpoint</code>instance.
+ *
+ * The executor is used to dispatch an incoming request to
+ * the implementor object.
+ *
+ * @return The <code>java.util.concurrent.Executor</code> to be
+ * used to dispatch a request.
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public abstract java.util.concurrent.Executor getExecutor();
+
+ /**
+ * Sets the executor for this <code>Endpoint</code> instance.
+ *
+ * The executor is used to dispatch an incoming request to
+ * the implementor object.
+ *
+ * If this <code>Endpoint</code> is published using the
+ * <code>publish(Object)</code> method and the specified server
+ * context defines its own threading behavior, the executor
+ * may be ignored.
+ *
+ * @param executor The <code>java.util.concurrent.Executor</code>
+ * to be used to dispatch a request.
+ *
+ * @throws SecurityException If the instance does not support
+ * setting an executor for security reasons (e.g. the
+ * necessary permissions are missing).
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public abstract void setExecutor(java.util.concurrent.Executor executor);
+
+
+ /**
+ * Returns the property bag for this <code>Endpoint</code> instance.
+ *
+ * @return Map<String,Object> The property bag
+ * associated with this instance.
+ **/
+ public abstract Map<String,Object> getProperties();
+
+ /**
+ * Sets the property bag for this <code>Endpoint</code> instance.
+ *
+ * @param properties The property bag associated with
+ * 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.
+ *
+ * @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 W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract EndpointReference getEndpointReference(Element... referenceParameters);
+
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>Endpoint</code> instance.
+ *
+ * @param clazz Specifies the type of EndpointReference 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 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);
+
+ /**
+ * By settng a <code>EndpointContext</code>, JAX-WS runtime knows about
+ * addresses of other endpoints in an application. If multiple endpoints
+ * share different ports of a WSDL, then the multiple port addresses
+ * are patched when the WSDL is accessed.
+ *
+ * <p>
+ * This needs to be set before publishing the endpoints.
+ *
+ * @param ctxt that is shared for multiple endpoints
+ * @throws java.lang.IllegalStateException
+ * If the endpoint has been published already or it has been stopped.
+ *
+ * @since JAX-WS 2.2
+ */
+ public void setEndpointContext(EndpointContext ctxt) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+package javax.xml.ws;
+
+import javax.xml.ws.Endpoint;
+import java.util.Set;
+
+/**
+ * <code>EndpointContext</code> allows multiple endpoints in an application
+ * to share any information. For example, servlet application's war may
+ * contain multiple endpoints and these endpoints can get addresses of each
+ * other by sharing this context. If multiple endpoints share different
+ * ports of a WSDL, then the multiple port addresses can be patched
+ * when the WSDL is accessed. It also allows all endpoints to share any
+ * other runtime information.
+ *
+ * <p>
+ * This needs to be set by using {@link Endpoint#setEndpointContext}
+ * before {@link Endpoint#publish} methods.
+ *
+ * @author Jitendra Kotamraju
+ * @since JAX-WS 2.2
+ */
+public abstract class EndpointContext {
+
+ /**
+ * This gives list of endpoints in an application. For e.g in
+ * servlet container, a war file may contain multiple endpoints.
+ * In case of http, these endpoints are hosted on the same http
+ * server.
+ *
+ * @return list of all endpoints in an application
+ */
+ public abstract Set<Endpoint> getEndpoints();
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointReference.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointReference.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/EndpointReference.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import javax.xml.bind.annotation.XmlTransient;
+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;
+import java.io.StringWriter;
+
+/**
+ * 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/">
+ * Web Services Addressing 1.0 - Core</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 Web Services 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 create
+ * a vendor specific <code>EndpointReferences</code> that the
+ * vendor can use to flag a different version of
+ * addressing.
+ * <p>
+ * Web service developers that wish to pass or return
+ * <code>EndpointReference</code> in Java methods in an
+ * SEI should use
+ * concrete instances of an <code>EndpointReference</code> such
+ * as the <code>W3CEndpointReference</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
+ */
+ at 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 <code>null</code> <code>eprInfoset</tt> value is given.
+ */
+ public static EndpointReference readFrom(Source eprInfoset) {
+ return Provider.provider().readEndpointReference(eprInfoset);
+ }
+
+ /**
+ * write this <code>EndpointReference</code> to the specified infoset format
+ *
+ * @param result for writing infoset
+ * @throws WebServiceException
+ * if there is an error writing the
+ * <code>EndpointReference</code> to the specified <code>result</code>.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the <code>null</code> <code>result</code> value is given.
+ */
+ public abstract void writeTo(Result result);
+
+
+ /**
+ * The <code>getPort</code> 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>. For this method
+ * to successfully return a proxy, WSDL metadata MUST be available and the
+ * <code>EndpointReference</code> instance MUST contain an implementation understood
+ * <code>serviceName</code> metadata.
+ * <p>
+ * Because this port is not created from a <code>Service</code> object, handlers
+ * will not automatically be configured, and the <code>HandlerResolver</code>
+ * and <code>Executor</code> 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 <code>WebServiceFeatures</code> 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 a 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();
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/FaultAction.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/FaultAction.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/FaultAction.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+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 {@link Action}
+ * annotation to allow an explicit association of a WS-Addressing
+ * <code>Action</code> message addressing property with the <code>fault</code>
+ * messages of the WSDL operation mapped from the exception class.
+ * <p>
+ * The <code>wsam:Action</code> attribute value in the <code>fault</code>
+ * message in the generated WSDL operation mapped for <code>className</code>
+ * class is equal to the corresponding value in the <code>FaultAction</code>.
+ * For the exact computation of <code>wsam:Action</code> values for the
+ * fault messages, refer to the algorithm in the JAX-WS specification.
+ *
+ * <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>
+ * @WebService(targetNamespace="http://example.com/numbers")
+ * public class AddNumbersImpl {
+ * @Action(
+ * fault = {
+ * <b>@FaultAction(className=AddNumbersException.class, value="http://example.com/faultAction")</b>
+ * })
+ * 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">
+ * ...
+ * <fault message="tns:AddNumbersException" name="AddNumbersException"
+ * <b>wsam:Action="http://example.com/faultAction"</b>/>
+ * </operation>
+ * </portType>
+ * ...
+ * </definitions>
+ * </pre>
+ *
+ * <p>
+ * Example 2: Here is an example that shows if the explicit value for <code>Action</code>
+ * message addressing property for the service specific exception is not present.
+ *
+ * <pre>
+ * @WebService(targetNamespace="http://example.com/numbers")
+ * public class AddNumbersImpl {
+ * 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">
+ * ...
+ * <fault message="tns:addNumbersFault" name="InvalidNumbers"
+ * <b>wsam:Action="http://example.com/numbers/AddNumbersPortType/AddNumbers/Fault/AddNumbersException"</b>/>
+ * </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>
+ * @WebService(targetNamespace="http://example.com/numbers")
+ * public class AddNumbersImpl {
+ * @Action(
+ * fault = {
+ * <b>@FaultAction(className=AddNumbersException.class, value="http://example.com/addFaultAction"),
+ * @FaultAction(className=TooBigNumbersException.class, value="http://example.com/toobigFaultAction")</b>
+ * })
+ * 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">
+ * ...
+ * <fault message="tns:addNumbersFault" name="AddNumbersException"
+ * <b>wsam:Action="http://example.com/addFaultAction"</b>/>
+ * <fault message="tns:tooBigNumbersFault" name="TooBigNumbersException"
+ * <b>wsam:Action="http://example.com/toobigFaultAction"</b>/>
+ * </operation>
+ * </portType>
+ * ...
+ * </definitions>
+ * </pre>
+ *
+ * @since JAX-WS 2.1
+ */
+
+ at Documented
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.METHOD)
+public @interface FaultAction {
+ /**
+ * Name of the exception class
+ */
+ Class<? extends Exception> className();
+
+ /**
+ * Value of WS-Addressing <code>Action</code> message addressing property for the exception
+ */
+ String value() default "";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Holder.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Holder.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Holder.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.io.Serializable;
+
+/**
+ * Holds a value of type <code>T</code>.
+ *
+ * @since JAX-WS 2.0
+ */
+public final class Holder<T> implements Serializable {
+
+ private static final long serialVersionUID = 2623699057546497185L;
+
+ /**
+ * The value contained in the holder.
+ */
+ public T value;
+
+ /**
+ * Creates a new holder with a <code>null</code> value.
+ */
+ public Holder() {
+ }
+
+ /**
+ * Create a new holder with the specified value.
+ *
+ * @param value The value to be stored in the holder.
+ */
+ public Holder(T value) {
+ this.value = value;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/LogicalMessage.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/LogicalMessage.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/LogicalMessage.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import javax.xml.transform.Source;
+import javax.xml.bind.JAXBContext;
+
+/** The <code>LogicalMessage</code> interface represents a
+ * protocol agnostic XML message and contains methods that
+ * provide access to the payload of the message.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface LogicalMessage {
+
+ /** Gets the message payload as an XML source, may be called
+ * multiple times on the same LogicalMessage instance, always
+ * returns a new <code>Source</code> that may be used to retrieve the entire
+ * message payload.
+ *
+ * <p>If the returned <code>Source</code> is an instance of
+ * <code>DOMSource</code>, then
+ * modifications to the encapsulated DOM tree change the message
+ * payload in-place, there is no need to susequently call
+ * <code>setPayload</code>. Other types of <code>Source</code> provide only
+ * read access to the message payload.
+ *
+ * @return The contained message payload; returns <code>null</code> if no
+ * payload is present in this message.
+ **/
+ public Source getPayload();
+
+ /** Sets the message payload
+ *
+ * @param payload message payload
+ * @throws WebServiceException If any error during the setting
+ * of the payload in this message
+ * @throws java.lang.UnsupportedOperationException If this
+ * operation is not supported
+ **/
+ public void setPayload(Source payload);
+
+ /** Gets the message payload as a JAXB object. Note that there is no
+ * connection between the returned object and the message payload,
+ * changes to the payload require calling <code>setPayload</code>.
+ *
+ * @param context The JAXBContext that should be used to unmarshall
+ * the message payload
+ * @return The contained message payload; returns <code>null</code> if no
+ * payload is present in this message
+ * @throws WebServiceException If an error occurs when using a supplied
+ * JAXBContext to unmarshall the payload. The cause of
+ * the WebServiceException is the original JAXBException.
+ **/
+ public Object getPayload(JAXBContext context);
+
+ /** Sets the message payload
+ *
+ * @param payload message payload
+ * @param context The JAXBContext that should be used to marshall
+ * the payload
+ * @throws java.lang.UnsupportedOperationException If this
+ * operation is not supported
+ * @throws WebServiceException If an error occurs when using the supplied
+ * JAXBContext to marshall the payload. The cause of
+ * the WebServiceException is the original JAXBException.
+ **/
+ public void setPayload(Object payload, JAXBContext context);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ProtocolException.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ProtocolException.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ProtocolException.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+/** The <code>ProtocolException</code> class is a
+ * base class for exceptions related to a specific protocol binding. Subclasses
+ * are used to communicate protocol level fault information to clients and may
+ * be used on the server to control the protocol specific fault representation.
+ *
+ * @since JAX-WS 2.0
+**/
+public class ProtocolException extends WebServiceException {
+ /**
+ * Constructs a new protocol exception with <code>null</code> as its detail message. The
+ * cause is not initialized, and may subsequently be initialized by a call
+ * to <code>Throwable.initCause(java.lang.Throwable)</code>.
+ */
+ public ProtocolException() {
+ super();
+ }
+
+ /**
+ * Constructs a new protocol exception with the specified detail message.
+ * The cause is not initialized, and may subsequently be initialized by a
+ * call to <code>Throwable.initCause(java.lang.Throwable)</code>.
+ *
+ * @param message the detail message. The detail message is saved for later
+ * retrieval by the Throwable.getMessage() method.
+ */
+ public ProtocolException(String message) {
+ super(message);
+ }
+
+ /**
+ * Constructs a new runtime exception with the specified detail message and
+ * cause.
+ *
+ * Note that the detail message associated with cause is not automatically
+ * incorporated in this runtime exception's detail message.
+ *
+ * @param message the detail message (which is saved for later retrieval by
+ * the Throwable.getMessage() method).
+ * @param cause the cause (which is saved for later retrieval by the
+ * <code>Throwable.getCause()</code> method). (A <code>null</code> value is permitted, and indicates
+ * that the cause is nonexistent or unknown.)
+ */
+ public ProtocolException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * Constructs a new runtime exception with the specified cause and a detail
+ * message of <code>(cause==null ? null : cause.toString())</code> (which typically
+ * contains the class and detail message of cause). This constructor is
+ * useful for runtime exceptions that are little more than wrappers for
+ * other throwables.
+ *
+ * @param cause the cause (which is saved for later retrieval by the
+ * <code>Throwable.getCause()</code> method). (A <code>null</code> value is permitted, and indicates
+ * that the cause is nonexistent or unknown.)
+ */
+ public ProtocolException(Throwable cause) {
+ super(cause);
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Provider.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Provider.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Provider.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+/**
+ * <p>Service endpoints may implement the <code>Provider</code>
+ * interface as a dynamic alternative to an SEI.
+ *
+ * <p>Implementations are required to support <code>Provider<Source></code>,
+ * <code>Provider<SOAPMessage></code> and
+ * <code>Provider<DataSource></code>, depending on the binding
+ * in use and the service mode.
+ *
+ * <p>The <code>ServiceMode</code> annotation can be used to control whether
+ * the <code>Provider</code> instance will receive entire protocol messages
+ * or just message payloads.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see javax.xml.ws.ServiceMode
+**/
+public interface Provider<T> {
+
+ /** Invokes an operation occording to the contents of the request
+ * message.
+ *
+ * @param request The request message or message payload.
+ * @return The response message or message payload. May be <code>null</code> if
+ there is no response.
+ * @throws WebServiceException If there is an error processing request.
+ * The cause of the <code>WebServiceException</code> may be set to a subclass
+ * of <code>ProtocolException</code> to control the protocol level
+ * representation of the exception.
+ * @see javax.xml.ws.handler.MessageContext
+ * @see javax.xml.ws.ProtocolException
+ **/
+ public T invoke(T request);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RequestWrapper.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RequestWrapper.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RequestWrapper.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to annotate methods in the Service Endpoint Interface with the request
+ * wrapper bean to be used at runtime. The default value of the <code>localName</code> is
+ * the <code>operationName</code>, as defined in <code>WebMethod</code> annotation and the
+ * <code>targetNamespace</code> is the target namespace of the SEI.
+ * <p> When starting from Java this annotation is used resolve
+ * overloading conflicts in document literal mode. Only the <code>className</code>
+ * is required in this case.
+ *
+ * @since JAX-WS 2.0
+ **/
+
+ at Target(ElementType.METHOD)
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface RequestWrapper {
+ /**
+ * Element's local name.
+ */
+ public String localName() default "";
+
+ /**
+ * Element's namespace name.
+ */
+ public String targetNamespace() default "";
+
+ /**
+ * Request wrapper bean name.
+ */
+ public String className() default "";
+
+ /**
+ * wsdl:part name for the wrapper part
+ *
+ * @since JAX-WS 2.2
+ */
+ public String partName() default "";
+
+}
+
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBinding.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBinding.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBinding.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+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 annotation MUST only be used in conjunction the
+ * <code>javax.jws.WebService</code>, {@link WebServiceProvider},
+ * {@link WebServiceRef} annotations.
+ * When used with the <code>javax.jws.WebService</code> annotation this
+ * annotation MUST only be used on the service endpoint implementation
+ * class.
+ * When used with a <code>WebServiceRef</code> annotation, this annotation
+ * MUST only be used when a proxy instance is created. The injected SEI
+ * proxy, and endpoint MUST honor the values of the <code>RespectBinding</code>
+ * annotation.
+ * <p>
+ *
+ * This annotation's behaviour is defined by the corresponding feature
+ * {@link RespectBindingFeature}.
+ *
+ * @see RespectBindingFeature
+ *
+ * @since JAX-WS 2.1
+ */
+ at Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+ at WebServiceFeatureAnnotation(id=RespectBindingFeature.ID,bean=RespectBindingFeature.class)
+public @interface RespectBinding {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBindingFeature.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBindingFeature.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/RespectBindingFeature.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import javax.xml.ws.soap.AddressingFeature;
+
+/**
+ * This feature clarifies the use of the <code>wsdl:binding</code>
+ * in a JAX-WS runtime.
+ *
+ * This feature can be used during the creation of SEI proxy, and
+ * {@link Dispatch} instances on the client side and {@link Endpoint}
+ * instances on the server side. This feature cannot be used for {@link Service}
+ * instance creation on the client side.
+ * <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(including policies) are
+ * either understood and used by the runtime, or explicitly disabled by the
+ * web service application. A web service can disable a particular
+ * extension if there is a corresponding {@link WebServiceFeature} or annotation.
+ * Similarly, a web service client can disable
+ * particular extension using the corresponding <code>WebServiceFeature</code> while
+ * creating a proxy or Dispatch instance.
+ * 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:required="true"</code>)
+ * <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
+ * {@link WebServiceException} no sooner than when one of the methods
+ * above is invoked but no later than the first invocation of an endpoint
+ * operation.
+ * <li>Server: throw a {@link WebServiceException} and the endpoint MUST fail to deploy
+ * </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 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.RespectBindingFeature";
+
+
+ /**
+ * Creates an <code>RespectBindingFeature</code>.
+ * The instance created will be enabled.
+ */
+ public RespectBindingFeature() {
+ this.enabled = true;
+ }
+
+ /**
+ * Creates 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;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Response.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Response.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Response.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.util.Map;
+import java.util.concurrent.Future;
+
+/** The <code>Response</code> interface provides methods used to obtain the
+ * payload and context of a message sent in response to an operation
+ * invocation.
+ *
+ * <p>For asynchronous operation invocations it provides additional methods
+ * to check the status of the request. The <code>get(...)</code> methods may
+ * throw the standard
+ * set of exceptions and their cause may be a <code>RemoteException</code> or a
+ * {@link WebServiceException} that represents the error that occured during the
+ * asynchronous method invocation.</p>
+ *
+ * @since JAX-WS 2.0
+**/
+public interface Response<T> extends Future<T> {
+ /** Gets the contained response context.
+ *
+ * @return The contained response context. May be <code>null</code> if a
+ * response is not yet available.
+ *
+ **/
+ Map<String,Object> getContext();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ResponseWrapper.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ResponseWrapper.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ResponseWrapper.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+/**
+ * Used to annotate methods in the Service Endpoint Interface with the response
+ * wrapper bean to be used at runtime. The default value of the <code>localName</code> is
+ * the <code>operationName</code> as defined in <code>WebMethod</code> annotation appended with
+ * <code>Response</code> and the <code>targetNamespace</code> is the target namespace of the SEI.
+ * <p> When starting from Java this annotation is used resolve
+ * overloading conflicts in document literal mode. Only the <code>className</code>
+ * is required in this case.
+ *
+ * @since JAX-WS 2.0
+**/
+
+ at Target(ElementType.METHOD)
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface ResponseWrapper {
+
+ /**
+ * Element's local name.
+ */
+ public String localName() default "";
+
+ /**
+ * Element's namespace name.
+ */
+ public String targetNamespace() default "";
+
+ /**
+ * Response wrapper bean name.
+ */
+ public String className() default "";
+
+ /**
+ * wsdl:part name for the wrapper part
+ *
+ * @since JAX-WS 2.2
+ */
+ public String partName() default "";
+
+}
+
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Service.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Service.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/Service.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,743 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+import javax.xml.ws.handler.HandlerResolver;
+import javax.xml.bind.JAXBContext;
+import javax.xml.ws.spi.ServiceDelegate;
+import javax.xml.ws.spi.Provider;
+
+/**
+ * <code>Service</code> objects provide the client view of a Web service.
+ * <p><code>Service</code> acts as a factory of the following:
+ * <ul>
+ * <li>Proxies for a target service endpoint.</li>
+ * <li>Instances of {@link javax.xml.ws.Dispatch} for
+ * dynamic message-oriented invocation of a remote
+ * operation.
+ * </li>
+ * </ul>
+ *
+ * <p>The ports available on a service can be enumerated using the
+ * <code>getPorts</code> method. Alternatively, you can pass a
+ * service endpoint interface to the unary <code>getPort</code> method
+ * and let the runtime select a compatible port.
+ *
+ * <p>Handler chains for all the objects created by a <code>Service</code>
+ * can be set by means of a <code>HandlerResolver</code>.
+ *
+ * <p>An <code>Executor</code> may be set on the service in order
+ * to gain better control over the threads used to dispatch asynchronous
+ * callbacks. For instance, thread pooling with certain parameters
+ * can be enabled by creating a <code>ThreadPoolExecutor</code> and
+ * registering it with the service.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.xml.ws.spi.Provider
+ * @see javax.xml.ws.handler.HandlerResolver
+ * @see java.util.concurrent.Executor
+ **/
+public class Service {
+
+ private ServiceDelegate delegate;
+ /**
+ * The orientation of a dynamic client or service. <code>MESSAGE</code> provides
+ * access to entire protocol message, <code>PAYLOAD</code> to protocol message
+ * payload only.
+ **/
+ public enum Mode { MESSAGE, PAYLOAD }
+
+ protected Service(java.net.URL wsdlDocumentLocation, QName serviceName) {
+ delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
+ serviceName,
+ this.getClass());
+ }
+
+ protected Service(java.net.URL wsdlDocumentLocation, QName serviceName, WebServiceFeature ... features) {
+ delegate = Provider.provider().createServiceDelegate(wsdlDocumentLocation,
+ serviceName,
+ this.getClass(), features);
+ }
+
+
+ /**
+ * The <code>getPort</code> 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.
+ * @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.
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ **/
+ public <T> T getPort(QName portName,
+ Class<T> serviceEndpointInterface) {
+ return delegate.getPort(portName, serviceEndpointInterface);
+ }
+
+ /**
+ * The <code>getPort</code> 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 delegate.getPort(portName, serviceEndpointInterface, features);
+ }
+
+
+ /**
+ * The <code>getPort</code> 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.
+ * @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.
+ * </UL>
+ **/
+ public <T> T getPort(Class<T> serviceEndpointInterface) {
+ return delegate.getPort(serviceEndpointInterface);
+ }
+
+
+ /**
+ * The <code>getPort</code> 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 delegate.getPort(serviceEndpointInterface, features);
+ }
+
+
+ /**
+ * The <code>getPort</code> 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code> metadata
+ * also has a WSDL, then the WSDL from this instance MUST 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> MAY 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>
+ * <code>port = service.getPort(portName, serviceEndpointInterface);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ *
+ * @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 <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If a <code>portName</code> cannot be extracted
+ * from the WSDL or <code>endpointReference</code> metadata.
+ * <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 delegate.getPort(endpointReference, serviceEndpointInterface, 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.
+ *
+ * @param portName Qualified name for the target service endpoint.
+ * @param bindingId A String identifier of a binding.
+ * @param endpointAddress Address of the target service endpoint as a URI.
+ * @throws WebServiceException If any error in the creation of
+ * the port.
+ *
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP11HTTP_BINDING
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP12HTTP_BINDING
+ * @see javax.xml.ws.http.HTTPBinding#HTTP_BINDING
+ **/
+ public void addPort(QName portName, String bindingId, String endpointAddress) {
+ delegate.addPort(portName, bindingId, endpointAddress);
+ }
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the client's 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
+ * <code>javax.xml.transform.Source</code>, <code>javax.xml.soap.SOAPMessage</code>
+ * and <code>javax.activation.DataSource</code>, depending on
+ * the binding in use.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object.
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ **/
+ public <T> Dispatch<T> createDispatch(QName portName, Class<T> type, Mode mode) {
+ return delegate.createDispatch(portName, type, mode);
+ }
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the client's 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
+ * <code>javax.xml.transform.Source</code> and <code>javax.xml.soap.SOAPMessage</code>.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be <code>MESSAGE</code>
+ * when type is <code>SOAPMessage</code>.
+ * @param features A list of <code>WebServiceFeatures</code> 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 delegate.createDispatch(portName, type, mode, features);
+ }
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the client's 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL in its metadata, then the WSDL from this instance MUST 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> MAY be used.
+ * An implementation MUST be able to retrieve the <code>portName</code> from the
+ * <code>endpointReference</code> metadata.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * <code>dispatch = service.createDispatch(portName, type, mode, features);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * WSDL or <code>EndpointReference</code> metadata.
+ *
+ * @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
+ * <code>javax.xml.transform.Source</code> and <code>javax.xml.soap.SOAPMessage</code>.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be <code>MESSAGE</code>
+ * when type is <code>SOAPMessage</code>.
+ * @param features An array of <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> or <code>portName</code>
+ * of a WSDL associated
+ * with this <code>Service</code> instance.
+ * <li>If the <code>portName</code> cannot be determined
+ * from the <code>EndpointReference</code> 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 delegate.createDispatch(endpointReference, 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 client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object.
+ *
+ * @see javax.xml.bind.JAXBContext
+ **/
+ public Dispatch<Object> createDispatch(QName portName, JAXBContext context,
+ Mode mode) {
+ return delegate.createDispatch(portName, context, mode);
+ }
+
+
+ /**
+ * 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 client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features A list of <code>WebServiceFeatures</code> 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 delegate.createDispatch(portName, context, 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL in its metadata, then the WSDL from this instance
+ * MUST 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> MAY be used.
+ * An implementation MUST be able to retrieve the <code>portName</code> from the
+ * <code>endpointReference</code> metadata.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * <code>dispatch = service.createDispatch(portName, context, mode, features);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * WSDL or <code>endpointReference</code> metadata.
+ *
+ * @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 client will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the client will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features An array of <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> or <code>portName</code>
+ * of a WSDL associated
+ * with this <code>Service</code> instance.
+ * <li>If the <code>portName</code> cannot be determined
+ * from the <code>EndpointReference</code> 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 delegate.createDispatch(endpointReference, context, mode, features);
+ }
+
+ /**
+ * Gets the name of this service.
+ * @return Qualified name of this service
+ **/
+ public QName getServiceName() {
+ return delegate.getServiceName();
+ }
+
+ /**
+ * Returns an <code>Iterator</code> for the list of
+ * <code>QName</code>s of service endpoints grouped by this
+ * service
+ *
+ * @return Returns <code>java.util.Iterator</code> with elements
+ * of type <code>javax.xml.namespace.QName</code>.
+ * @throws WebServiceException If this Service class does not
+ * have access to the required WSDL metadata.
+ **/
+ public Iterator<javax.xml.namespace.QName> getPorts() {
+ return delegate.getPorts();
+ }
+
+ /**
+ * Gets the location of the WSDL document for this Service.
+ *
+ * @return URL for the location of the WSDL document for
+ * this service.
+ **/
+ public java.net.URL getWSDLDocumentLocation() {
+ return delegate.getWSDLDocumentLocation();
+ }
+
+ /**
+ * Returns the configured handler resolver.
+ *
+ * @return HandlerResolver The <code>HandlerResolver</code> being
+ * used by this <code>Service</code> instance, or <code>null</code>
+ * if there isn't one.
+ **/
+ public HandlerResolver getHandlerResolver() {
+ return delegate.getHandlerResolver();
+ }
+
+ /**
+ * Sets the <code>HandlerResolver</code> for this <code>Service</code>
+ * instance.
+ * <p>
+ * The handler resolver, if present, will be called once for each
+ * proxy or dispatch instance that is created, and the handler chain
+ * returned by the resolver will be set on the instance.
+ *
+ * @param handlerResolver The <code>HandlerResolver</code> to use
+ * for all subsequently created proxy/dispatch objects.
+ *
+ * @see javax.xml.ws.handler.HandlerResolver
+ **/
+ public void setHandlerResolver(HandlerResolver handlerResolver) {
+ delegate.setHandlerResolver(handlerResolver);
+ }
+
+ /**
+ * Returns the executor for this <code>Service</code>instance.
+ *
+ * The executor is used for all asynchronous invocations that
+ * require callbacks.
+ *
+ * @return The <code>java.util.concurrent.Executor</code> to be
+ * used to invoke a callback.
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public java.util.concurrent.Executor getExecutor() {
+ return delegate.getExecutor();
+ }
+
+ /**
+ * Sets the executor for this <code>Service</code> instance.
+ *
+ * The executor is used for all asynchronous invocations that
+ * require callbacks.
+ *
+ * @param executor The <code>java.util.concurrent.Executor</code>
+ * to be used to invoke a callback.
+ *
+ * @throws SecurityException If the instance does not support
+ * setting an executor for security reasons (e.g. the
+ * necessary permissions are missing).
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public void setExecutor(java.util.concurrent.Executor executor) {
+ delegate.setExecutor(executor);
+ }
+
+ /**
+ * Creates a <code>Service</code> instance.
+ *
+ * The specified WSDL document location and service qualified name MUST
+ * uniquely identify a <code>wsdl:service</code> element.
+ *
+ * @param wsdlDocumentLocation <code>URL</code> for the WSDL document location
+ * for the service
+ * @param serviceName <code>QName</code> for the service
+ * @throws WebServiceException If any error in creation of the
+ * specified service.
+ **/
+ public static Service create(
+ java.net.URL wsdlDocumentLocation,
+ QName serviceName) {
+ return new Service(wsdlDocumentLocation, serviceName);
+ }
+
+ /**
+ * Creates a <code>Service</code> instance. The created instance is
+ * configured with the web service features.
+ *
+ * The specified WSDL document location and service qualified name MUST
+ * uniquely identify a <code>wsdl:service</code> element.
+ *
+ * @param wsdlDocumentLocation <code>URL</code> for the WSDL document location
+ * for the service
+ * @param serviceName <code>QName</code> for the service
+ * @param features Web Service features that must be configured on
+ * the service. If the provider doesn't understand a feature,
+ * it must throw a WebServiceException.
+ * @throws WebServiceException If any error in creation of the
+ * specified service.
+ * @since JAX-WS 2.2
+ **/
+ public static Service create(
+ java.net.URL wsdlDocumentLocation,
+ QName serviceName, WebServiceFeature ... features) {
+ return new Service(wsdlDocumentLocation, serviceName, features);
+ }
+
+ /**
+ * Creates a <code>Service</code> instance.
+ *
+ * @param serviceName <code>QName</code> for the service
+ * @throws WebServiceException If any error in creation of the
+ * specified service
+ */
+ public static Service create(QName serviceName) {
+ return new Service(null, serviceName);
+ }
+
+ /**
+ * Creates a <code>Service</code> instance. The created instance is
+ * configured with the web service features.
+ *
+ * @param serviceName <code>QName</code> for the service
+ * @param features Web Service features that must be configured on
+ * the service. If the provider doesn't understand a feature,
+ * it must throw a WebServiceException.
+ * @throws WebServiceException If any error in creation of the
+ * specified service
+ *
+ * @since JAX-WS 2.2
+ */
+ public static Service create(QName serviceName, WebServiceFeature ... features) {
+ return new Service(null, serviceName, features);
+ }
+}
+
+
+
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ServiceMode.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ServiceMode.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/ServiceMode.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Inherited;
+
+/**
+ * Used to indicate whether a {@link Provider} implementation wishes to work
+ * with entire protocol messages or just with protocol message payloads.
+ *
+ * @since JAX-WS 2.0
+**/
+ at Target({ElementType.TYPE})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Inherited
+ at Documented
+public @interface ServiceMode {
+ /**
+ * Service mode. <code>PAYLOAD</code> indicates that the <code>Provider</code> implementation
+ * wishes to work with protocol message payloads only. <code>MESSAGE</code> indicates
+ * that the <code>Provider</code> implementation wishes to work with entire protocol
+ * messages.
+ **/
+ public Service.Mode value() default Service.Mode.PAYLOAD;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebEndpoint.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebEndpoint.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebEndpoint.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to annotate the <code>get<em>PortName</em>()</code>
+ * methods of a generated service interface.
+ *
+ * <p>The information specified in this annotation is sufficient
+ * to uniquely identify a <code>wsdl:port</code> element
+ * inside a <code>wsdl:service</code>. The latter is
+ * determined based on the value of the <code>WebServiceClient</code>
+ * annotation on the generated service interface itself.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.xml.ws.WebServiceClient
+**/
+ at Target({ElementType.METHOD})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface WebEndpoint {
+ /**
+ * The local name of the endpoint.
+ **/
+ String name() default "";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebFault.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebFault.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebFault.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to annotate service specific exception classes to customize
+ * to the local and namespace name of the fault element and the name
+ * of the fault bean.
+ *
+ * @since JAX-WS 2.0
+**/
+ at Target({ElementType.TYPE})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface WebFault {
+ /**
+ * Element's local name.
+ **/
+ public String name() default "";
+
+ /**
+ * Element's namespace name.
+ **/
+ public String targetNamespace() default "";
+
+ /**
+ * Fault bean name.
+ **/
+ public String faultBean() default "";
+
+
+ /**
+ * wsdl:Message's name. Default name is the exception's class name.
+ * @since JAX-WS 2.2
+ */
+ public String messageName() default "";
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceClient.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceClient.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceClient.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to annotate a generated service interface.
+ *
+ * <p>The information specified in this annotation is sufficient
+ * to uniquely identify a <code>wsdl:service</code>
+ * element inside a WSDL document. This <code>wsdl:service</code>
+ * element represents the Web service for which the generated
+ * service interface provides a client view.
+ *
+ * @since JAX-WS 2.0
+**/
+ at Target({ElementType.TYPE})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface WebServiceClient {
+ /**
+ * The local name of the Web service.
+ **/
+ String name() default "";
+
+ /**
+ * The namespace for the Web service.
+ **/
+ String targetNamespace() default "";
+
+ /**
+ * The location of the WSDL document for the service (a URL).
+ **/
+ String wsdlLocation() default "";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,131 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.security.Principal;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.w3c.dom.Element;
+
+
+/**
+ * A <code>WebServiceContext</code> makes it possible for
+ * a web service endpoint implementation class to access
+ * message context and security information relative to
+ * a request being served.
+ *
+ * Typically a <code>WebServiceContext</code> is injected
+ * into an endpoint implementation class using the
+ * <code>Resource</code> annotation.
+ *
+ * @since JAX-WS 2.0
+ *
+ * @see javax.annotation.Resource
+ **/
+public interface WebServiceContext {
+
+ /**
+ * Returns the <code>MessageContext</code> for the request being served
+ * at the time this method is called. Only properties with
+ * APPLICATION scope will be visible to the application.
+ *
+ * @return MessageContext The message context.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ *
+ * @see javax.xml.ws.handler.MessageContext
+ * @see javax.xml.ws.handler.MessageContext.Scope
+ * @see java.lang.IllegalStateException
+ **/
+ public MessageContext getMessageContext();
+
+ /**
+ * Returns the Principal that identifies the sender
+ * of the request currently being serviced. If the
+ * sender has not been authenticated, the method
+ * returns <code>null</code>.
+ *
+ * @return Principal The principal object.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ *
+ * @see java.security.Principal
+ * @see java.lang.IllegalStateException
+ **/
+ public Principal getUserPrincipal();
+
+ /**
+ * Returns a boolean indicating whether the
+ * authenticated user is included in the specified
+ * logical role. If the user has not been
+ * authenticated, the method returns </code>false</code>.
+ *
+ * @param role A <code>String</code> specifying the name of the role
+ *
+ * @return a <code>boolean</code> indicating whether
+ * the sender of the request belongs to a given role
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ **/
+ public boolean isUserInRole(String role);
+
+ /**
+ * Returns the <code>EndpointReference</code> for this
+ * endpoint.
+ * <p>
+ * If the {@link Binding} for this <code>bindingProvider</code> is
+ * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
+ * <code>W3CEndpointReference</code> MUST be returned.
+ *
+ * @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 W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ */
+ public EndpointReference getEndpointReference(Element... referenceParameters);
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this endpoint.
+ *
+ * @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 <T extends EndpointReference> T getEndpointReference(Class<T> clazz,
+ Element... referenceParameters);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceException.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceException.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceException.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+/** The <code>WebServiceException</code> class is the base
+ * exception class for all JAX-WS API runtime exceptions.
+ *
+ * @since JAX-WS 2.0
+**/
+
+public class WebServiceException extends java.lang.RuntimeException {
+
+ /** Constructs a new exception with <code>null</code> as its
+ * detail message. The cause is not initialized.
+ **/
+ public WebServiceException() {
+ super();
+ }
+
+ /** Constructs a new exception with the specified detail
+ * message. The cause is not initialized.
+ * @param message The detail message which is later
+ * retrieved using the getMessage method
+ **/
+ public WebServiceException(String message) {
+ super(message);
+ }
+
+ /** Constructs a new exception with the specified detail
+ * message and cause.
+ *
+ * @param message The detail message which is later retrieved
+ * using the getMessage method
+ * @param cause The cause which is saved for the later
+ * retrieval throw by the getCause method
+ **/
+ public WebServiceException(String message, Throwable cause) {
+ super(message,cause);
+ }
+
+ /** Constructs a new WebServiceException with the specified cause
+ * and a detail message of <tt>(cause==null ? null :
+ * cause.toString())</tt> (which typically contains the
+ * class and detail message of <tt>cause</tt>).
+ *
+ * @param cause The cause which is saved for the later
+ * retrieval throw by the getCause method.
+ * (A <tt>null</tt> value is permitted, and
+ * indicates that the cause is nonexistent or
+ * unknown.)
+ **/
+ public WebServiceException(Throwable cause) {
+ super(cause);
+ }
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceFeature.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceFeature.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceFeature.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+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;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServicePermission.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServicePermission.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServicePermission.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.security.BasicPermission;
+
+/**
+ * This class defines web service permissions.
+ * <p>
+ * Web service Permissions are identified by name (also referred to as
+ * a "target name") alone. There are no actions associated
+ * with them.
+ * <p>
+ * The following permission target name is defined:
+ * <p>
+ * <dl>
+ * <dt>publishEndpoint
+ * </dl>
+ * <p>
+ * The <code>publishEndpoint</code> permission allows publishing a
+ * web service endpoint using the <code>publish</code> methods
+ * defined by the <code>javax.xml.ws.Endpoint</code> class.
+ *
+ * @see javax.xml.ws.Endpoint
+ * @see java.security.BasicPermission
+ * @see java.security.Permission
+ * @see java.security.Permissions
+ * @see java.lang.SecurityManager
+ */
+public final class WebServicePermission extends BasicPermission {
+
+ private static final long serialVersionUID = -146474640053770988L;
+
+ /**
+ * Creates a new permission with the specified name.
+ *
+ * @param name the name of the <code>WebServicePermission</code>
+ */
+ public WebServicePermission(String name) {
+ super(name);
+ }
+
+ /**
+ * Creates a new permission with the specified name and actions.
+ *
+ * The <code>actions</code> parameter is currently unused and
+ * it should be <code>null</code>.
+ *
+ * @param name the name of the <code>WebServicePermission</code>
+ * @param actions should be <code>null</code>
+ */
+ public WebServicePermission(String name, String actions) {
+ super(name, actions);
+ }
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceProvider.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceProvider.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceProvider.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.RetentionPolicy;
+/**
+ * Used to annotate a Provider implementation class.
+ *
+ * @since JAX-WS 2.0
+ * @see javax.xml.ws.Provider
+ */
+ at Target(ElementType.TYPE)
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface WebServiceProvider {
+ /**
+ * Location of the WSDL description for the service.
+ */
+ String wsdlLocation() default "";
+
+ /**
+ * Service name.
+ */
+ String serviceName() default "";
+
+ /**
+ * Target namespace for the service
+ */
+ String targetNamespace() default "";
+
+ /**
+ * Port name.
+ */
+ String portName() default "";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRef.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRef.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRef.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+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;
+
+/**
+ * The <code>WebServiceRef</code> annotation is used to
+ * define a reference to a web service and
+ * (optionally) an injection target for it.
+ * It can be used to inject both service and proxy
+ * instances. These injected references are not thread safe.
+ * If the references are accessed by multiple threads,
+ * usual synchronization techinques can be used to
+ * support multiple threads.
+ *
+ * <p>
+ * Web service references are resources in the Java EE 5 sense.
+ * The annotations (for example, {@link Addressing}) annotated with
+ * meta-annotation {@link WebServiceFeatureAnnotation}
+ * can be used in conjunction with <code>WebServiceRef</code>.
+ * The created reference MUST be configured with annotation's web service
+ * feature.
+ *
+ * <p>
+ * For example, in the code below, the injected
+ * <code>StockQuoteProvider</code> proxy MUST
+ * have WS-Addressing enabled as specifed by the
+ * {@link Addressing}
+ * annotation.
+ *
+ * <code>
+ * <pre>
+ * public class MyClient {
+ * @Addressing
+ * @WebServiceRef(StockQuoteService.class)
+ * private StockQuoteProvider stockQuoteProvider;
+ * ...
+ * }
+ * </pre>
+ * </code>
+ *
+ * <p>
+ * If a JAX-WS implementation encounters an unsupported or unrecognized
+ * annotation annotated with the <code>WebServiceFeatureAnnotation</code>
+ * that is specified with <code>WebServiceRef</code>, an ERROR MUST be given.
+ *
+ * @see javax.annotation.Resource
+ * @see WebServiceFeatureAnnotation
+ *
+ * @since JAX-WS 2.0
+ *
+**/
+
+ at Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+public @interface WebServiceRef {
+ /**
+ * The JNDI name of the resource. For field annotations,
+ * the default is the field name. For method annotations,
+ * the default is the JavaBeans property name corresponding
+ * to the method. For class annotations, there is no default
+ * and this MUST be specified.
+ *
+ * The JNDI name can be absolute(with any logical namespace) or relative
+ * to JNDI <code>java:comp/env</code> namespace.
+ */
+ String name() default "";
+
+ /**
+ * The Java type of the resource. For field annotations,
+ * the default is the type of the field. For method annotations,
+ * the default is the type of the JavaBeans property.
+ * For class annotations, there is no default and this MUST be
+ * specified.
+ */
+ Class<?> type() default Object.class;
+
+ /**
+ * A product specific name that this resource should be mapped to.
+ * The name of this resource, as defined by the <code>name</code>
+ * element or defaulted, is a name that is local to the application
+ * component using the resource. (When a relative JNDI name
+ * is specified, then it's a name in the JNDI
+ * <code>java:comp/env</code> namespace.) Many application servers
+ * provide a way to map these local names to names of resources
+ * known to the application server. This mapped name is often a
+ * <i>global</i> JNDI name, but may be a name of any form. <p>
+ * <p/>
+ * Application servers are not required to support any particular
+ * form or type of mapped name, nor the ability to use mapped names.
+ * The mapped name is product-dependent and often installation-dependent.
+ * No use of a mapped name is portable.
+ */
+ String mappedName() default "";
+
+ /**
+ * The service class, always a type extending
+ * <code>javax.xml.ws.Service</code>. This element MUST be specified
+ * whenever the type of the reference is a service endpoint interface.
+ */
+ // 2.1 has Class value() default Object.class;
+ // Fixing this raw Class type correctly in 2.2 API. This shouldn't cause
+ // any compatibility issues for applications.
+ Class<? extends Service> value() default Service.class;
+
+ /**
+ * A URL pointing to the WSDL document for the web service.
+ * If not specified, the WSDL location specified by annotations
+ * on the resource type is used instead.
+ */
+ String wsdlLocation() default "";
+
+ /**
+ * A portable JNDI lookup name that resolves to the target
+ * web service reference.
+ *
+ * @since JAX-WS 2.2
+ */
+ String lookup() default "";
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRefs.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRefs.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/WebServiceRefs.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
+
+/**
+ * The <code>WebServiceRefs</code> annotation allows
+ * multiple web service references to be declared at the
+ * class level.
+ *
+ * <p>
+ * It can be used to inject both service and proxy
+ * instances. These injected references are not thread safe.
+ * If the references are accessed by multiple threads,
+ * usual synchronization techinques can be used to
+ * support multiple threads.
+ *
+ * <p>
+ * There is no way to associate web service features with
+ * the injected instances. If an instance needs to be
+ * configured with web service features, use @WebServiceRef
+ * to inject the resource along with its features.
+ *
+ * <p>
+ * <b>Example</b>: The <code>StockQuoteProvider</code>
+ * proxy instance, and the <code>StockQuoteService</code> service
+ * instance are injected using @WebServiceRefs.
+ *
+ * <code>
+ * <pre>
+ * @WebServiceRefs({@WebServiceRef(name="service/stockquoteservice", value=StockQuoteService.class),
+ * @WebServiceRef(name="service/stockquoteprovider", type=StockQuoteProvider.class, value=StockQuoteService.class})
+ * public class MyClient {
+ * void init() {
+ * Context ic = new InitialContext();
+ * StockQuoteService service = (StockQuoteService) ic.lookup("java:comp/env/service/stockquoteservice");
+ * StockQuoteProvider port = (StockQuoteProvider) ic.lookup("java:comp/env/service/stockquoteprovider");
+ * ...
+ * }
+ * ...
+ * }
+ * </pre>
+ * </code>
+ *
+ * @see WebServiceRef
+ * @since 2.0
+ */
+
+ at Documented
+ at Retention(RUNTIME)
+ at Target(TYPE)
+public @interface WebServiceRefs {
+ /**
+ * Array used for multiple web service reference declarations.
+ */
+ WebServiceRef[] value();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/Handler.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/Handler.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/Handler.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+
+import javax.xml.ws.ProtocolException;
+import javax.xml.ws.handler.MessageContext;
+
+/** The <code>Handler</code> interface
+ * is the base interface for JAX-WS handlers.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface Handler<C extends MessageContext> {
+
+ /** The <code>handleMessage</code> method is invoked for normal processing
+ * of inbound and outbound messages. Refer to the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context.
+ * @return An indication of whether handler processing should continue for
+ * the current message
+ * <ul>
+ * <li>Return <code>true</code> to continue
+ * processing.</li>
+ * <li>Return <code>false</code> to block
+ * processing.</li>
+ * </ul>
+ * @throws RuntimeException Causes the JAX-WS runtime to cease
+ * handler processing and generate a fault.
+ * @throws ProtocolException Causes the JAX-WS runtime to switch to
+ * fault message processing.
+ **/
+ public boolean handleMessage(C context);
+
+ /** The <code>handleFault</code> method is invoked for fault message
+ * processing. Refer to the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context
+ * @return An indication of whether handler fault processing should continue
+ * for the current message
+ * <ul>
+ * <li>Return <code>true</code> to continue
+ * processing.</li>
+ * <li>Return <code>false</code> to block
+ * processing.</li>
+ * </ul>
+ * @throws RuntimeException Causes the JAX-WS runtime to cease
+ * handler fault processing and dispatch the fault.
+ * @throws ProtocolException Causes the JAX-WS runtime to cease
+ * handler fault processing and dispatch the fault.
+ **/
+ public boolean handleFault(C context);
+
+ /**
+ * Called at the conclusion of a message exchange pattern just prior to
+ * the JAX-WS runtime disptaching a message, fault or exception. Refer to
+ * the description of the handler
+ * framework in the JAX-WS specification for full details.
+ *
+ * @param context the message context
+ **/
+ public void close(MessageContext context);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/HandlerResolver.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/HandlerResolver.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/HandlerResolver.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+
+/**
+ * <code>HandlerResolver</code> is an interface implemented
+ * by an application to get control over the handler chain
+ * set on proxy/dispatch objects at the time of their creation.
+ * <p>
+ * A <code>HandlerResolver</code> may be set on a <code>Service</code>
+ * using the <code>setHandlerResolver</code> method.
+ * <p>
+ * When the runtime invokes a <code>HandlerResolver</code>, it will
+ * pass it a <code>PortInfo</code> object containing information
+ * about the port that the proxy/dispatch object will be accessing.
+ *
+ * @see javax.xml.ws.Service#setHandlerResolver
+ *
+ * @since JAX-WS 2.0
+**/
+public interface HandlerResolver {
+
+ /**
+ * Gets the handler chain for the specified port.
+ *
+ * @param portInfo Contains information about the port being accessed.
+ * @return java.util.List<Handler> chain
+ **/
+ public java.util.List<Handler> getHandlerChain(PortInfo portInfo);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalHandler.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalHandler.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalHandler.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,14 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+
+/** The <code>LogicalHandler</code> extends
+ * Handler to provide typesafety for the message context parameter.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface LogicalHandler<C extends LogicalMessageContext> extends Handler<C> {
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalMessageContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalMessageContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/LogicalMessageContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+
+import javax.xml.ws.LogicalMessage;
+
+/** The <code>LogicalMessageContext</code> interface extends
+ * <code>MessageContext</code> to
+ * provide access to a the contained message as a protocol neutral
+ * LogicalMessage
+ *
+ * @since JAX-WS 2.0
+**/
+public interface LogicalMessageContext
+ extends MessageContext {
+
+ /** Gets the message from this message context
+ *
+ * @return The contained message; returns <code>null</code> if no
+ * message is present in this message context
+ **/
+ public LogicalMessage getMessage();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/MessageContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/MessageContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/MessageContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,185 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+import java.util.Map;
+
+/**
+ * The interface <code>MessageContext</code> abstracts the message
+ * context that is processed by a handler in the <code>handle</code>
+ * method.
+ *
+ * <p>The <code>MessageContext</code> interface provides methods to
+ * manage a property set. <code>MessageContext</code> properties
+ * enable handlers in a handler chain to share processing related
+ * state.
+ *
+ * @since JAX-WS 2.0
+ */
+public interface MessageContext extends Map<String, Object> {
+
+ /**
+ * Standard property: message direction, <code>true</code> for
+ * outbound messages, <code>false</code> for inbound.
+ * <p>Type: boolean
+ */
+ public static final String MESSAGE_OUTBOUND_PROPERTY =
+ "javax.xml.ws.handler.message.outbound";
+
+ /**
+ * Standard property: Map of attachments to a message for the inbound
+ * message, key is the MIME Content-ID, value is a DataHandler.
+ * <p>Type: java.util.Map<String,DataHandler>
+ */
+ public static final String INBOUND_MESSAGE_ATTACHMENTS =
+ "javax.xml.ws.binding.attachments.inbound";
+
+ /**
+ * Standard property: Map of attachments to a message for the outbound
+ * message, key is the MIME Content-ID, value is a DataHandler.
+ * <p>Type: java.util.Map<String,DataHandler>
+ */
+ public static final String OUTBOUND_MESSAGE_ATTACHMENTS =
+ "javax.xml.ws.binding.attachments.outbound";
+
+ /**
+ * Standard property: input source for WSDL document.
+ * <p>Type: org.xml.sax.InputSource
+ */
+ public static final String WSDL_DESCRIPTION =
+ "javax.xml.ws.wsdl.description";
+
+ /**
+ * Standard property: name of WSDL service.
+ * <p>Type: javax.xml.namespace.QName
+ */
+ public static final String WSDL_SERVICE =
+ "javax.xml.ws.wsdl.service";
+
+ /**
+ * Standard property: name of WSDL port.
+ * <p>Type: javax.xml.namespace.QName
+ */
+ public static final String WSDL_PORT =
+ "javax.xml.ws.wsdl.port";
+
+ /**
+ * Standard property: name of wsdl interface (2.0) or port type (1.1).
+ * <p>Type: javax.xml.namespace.QName
+ */
+ public static final String WSDL_INTERFACE =
+ "javax.xml.ws.wsdl.interface";
+
+ /**
+ * Standard property: name of WSDL operation.
+ * <p>Type: javax.xml.namespace.QName
+ */
+ public static final String WSDL_OPERATION =
+ "javax.xml.ws.wsdl.operation";
+
+ /**
+ * Standard property: HTTP response status code.
+ * <p>Type: java.lang.Integer
+ */
+ public static final String HTTP_RESPONSE_CODE =
+ "javax.xml.ws.http.response.code";
+
+ /**
+ * Standard property: HTTP request headers.
+ * <p>Type: java.util.Map<java.lang.String, java.util.List<java.lang.String>>
+ */
+ public static final String HTTP_REQUEST_HEADERS =
+ "javax.xml.ws.http.request.headers";
+
+ /**
+ * Standard property: HTTP response headers.
+ * <p>Type: java.util.Map<java.lang.String, java.util.List<java.lang.String>>
+ */
+ public static final String HTTP_RESPONSE_HEADERS =
+ "javax.xml.ws.http.response.headers";
+
+ /**
+ * Standard property: HTTP request method.
+ * <p>Type: java.lang.String
+ */
+ public static final String HTTP_REQUEST_METHOD =
+ "javax.xml.ws.http.request.method";
+
+ /**
+ * Standard property: servlet request object.
+ * <p>Type: javax.servlet.http.HttpServletRequest
+ */
+ public static final String SERVLET_REQUEST =
+ "javax.xml.ws.servlet.request";
+
+ /**
+ * Standard property: servlet response object.
+ * <p>Type: javax.servlet.http.HttpServletResponse
+ */
+ public static final String SERVLET_RESPONSE =
+ "javax.xml.ws.servlet.response";
+
+ /**
+ * Standard property: servlet context object.
+ * <p>Type: javax.servlet.ServletContext
+ */
+ public static final String SERVLET_CONTEXT =
+ "javax.xml.ws.servlet.context";
+
+ /**
+ * Standard property: Query string for request.
+ * <p>Type: String
+ **/
+ public static final String QUERY_STRING =
+ "javax.xml.ws.http.request.querystring";
+
+ /**
+ * Standard property: Request Path Info
+ * <p>Type: String
+ */
+ 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
+ * <code>HANDLER</code>
+ * are only normally visible to handlers.
+ */
+ public enum Scope {APPLICATION, HANDLER};
+
+ /**
+ * Sets the scope of a property.
+ *
+ * @param name Name of the property associated with the
+ * <code>MessageContext</code>
+ * @param scope Desired scope of the property
+ * @throws java.lang.IllegalArgumentException if an illegal
+ * property name is specified
+ */
+ public void setScope(String name, Scope scope);
+
+ /**
+ * Gets the scope of a property.
+ *
+ * @param name Name of the property
+ * @return Scope of the property
+ * @throws java.lang.IllegalArgumentException if a non-existant
+ * property name is specified
+ */
+ public Scope getScope(String name);
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/PortInfo.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/PortInfo.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/PortInfo.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler;
+
+import javax.xml.namespace.QName;
+
+/**
+ * The <code>PortInfo</code> interface is used by a
+ * <code>HandlerResolver</code> to query information about
+ * the port it is being asked to create a handler chain for.
+ * <p>
+ * This interface is never implemented by an application,
+ * only by a JAX-WS implementation.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface PortInfo {
+
+ /**
+ * Gets the qualified name of the WSDL service name containing
+ * the port being accessed.
+ *
+ * @return javax.xml.namespace.QName The qualified name of the WSDL service.
+ **/
+ public QName getServiceName();
+
+ /**
+ * Gets the qualified name of the WSDL port being accessed.
+ *
+ * @return javax.xml.namespace.QName The qualified name of the WSDL port.
+ **/
+ public QName getPortName();
+
+ /**
+ * Gets the URI identifying the binding used by the port being accessed.
+ *
+ * @return String The binding identifier for the port.
+ *
+ * @see javax.xml.ws.Binding
+ **/
+ public String getBindingID();
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines APIs for message handlers.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPHandler.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPHandler.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPHandler.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler.soap;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.handler.Handler;
+import java.util.Set;
+
+/** The <code>SOAPHandler</code> class extends <code>Handler</code>
+ * to provide typesafety for the message context parameter and add a method
+ * to obtain access to the headers that may be processed by the handler.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface SOAPHandler<T extends SOAPMessageContext>
+ extends Handler<T> {
+
+ /** Gets the header blocks that can be processed by this Handler
+ * instance.
+ *
+ * @return Set of <code>QNames</code> of header blocks processed by this
+ * handler instance. <code>QName</code> is the qualified
+ * name of the outermost element of the Header block.
+ **/
+ Set<QName> getHeaders();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPMessageContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPMessageContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/SOAPMessageContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.handler.soap;
+
+import javax.xml.soap.SOAPMessage;
+import javax.xml.bind.JAXBContext;
+import javax.xml.namespace.QName;
+import java.util.Set;
+
+/** The interface <code>SOAPMessageContext</code>
+ * provides access to the SOAP message for either RPC request or
+ * response. The <code>javax.xml.soap.SOAPMessage</code> specifies
+ * the standard Java API for the representation of a SOAP 1.1 message
+ * with attachments.
+ *
+ * @see javax.xml.soap.SOAPMessage
+ *
+ * @since JAX-WS 2.0
+**/
+public interface SOAPMessageContext
+ extends javax.xml.ws.handler.MessageContext {
+
+ /** Gets the <code>SOAPMessage<code> from this message context. Modifications
+ * to the returned <code>SOAPMessage</code> change the message in-place, there
+ * is no need to susequently call <code>setMessage</code>.
+ *
+ * @return Returns the <code>SOAPMessage</code>; returns <code>null</code> if no
+ * <code>SOAPMessage</code> is present in this message context
+ **/
+ public SOAPMessage getMessage();
+
+ /** Sets the SOAPMessage in this message context
+ *
+ * @param message SOAP message
+ * @throws WebServiceException If any error during the setting
+ * of the <code>SOAPMessage</code> in this message context
+ * @throws java.lang.UnsupportedOperationException If this
+ * operation is not supported
+ **/
+ public void setMessage(SOAPMessage message);
+
+ /** Gets headers that have a particular qualified name from the message in the
+ * message context. Note that a SOAP message can contain multiple headers
+ * with the same qualified name.
+ *
+ * @param header The XML qualified name of the SOAP header(s).
+ * @param context The JAXBContext that should be used to unmarshall the
+ * header
+ * @param allRoles If <code>true</code> then returns headers for all SOAP
+ * roles, if <code>false</code> then only returns headers targetted
+ * at the roles currently being played by this SOAP node, see
+ * <code>getRoles</code>.
+ * @return An array of unmarshalled headers; returns an empty array if no
+ * message is present in this message context or no headers match
+ * the supplied qualified name.
+ * @throws WebServiceException If an error occurs when using the supplied
+ * <code>JAXBContext</code> to unmarshall. The cause of
+ * the <code>WebServiceException</code> is the original <code>JAXBException</code>.
+ **/
+ public Object[] getHeaders(QName header, JAXBContext context,
+ boolean allRoles);
+
+ /** Gets the SOAP actor roles associated with an execution
+ * of the handler chain.
+ * Note that SOAP actor roles apply to the SOAP node and
+ * are managed using {@link javax.xml.ws.soap.SOAPBinding#setRoles} and
+ * {@link javax.xml.ws.soap.SOAPBinding#getRoles}. <code>Handler</code> instances in
+ * the handler chain use this information about the SOAP actor
+ * roles to process the SOAP header blocks. Note that the
+ * SOAP actor roles are invariant during the processing of
+ * SOAP message through the handler chain.
+ *
+ * @return Array of <code>String</code> for SOAP actor roles
+ **/
+ public Set<String> getRoles();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/handler/soap/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines APIs for SOAP message handlers.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPBinding.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPBinding.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPBinding.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.http;
+
+
+import javax.xml.ws.Binding;
+
+/** The <code>HTTPBinding</code> interface is an
+ * abstraction for the XML/HTTP binding.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface HTTPBinding extends Binding {
+
+ /**
+ * A constant representing the identity of the XML/HTTP binding.
+ */
+ public static final String HTTP_BINDING = "http://www.w3.org/2004/08/wsdl/http";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPException.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPException.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/HTTPException.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.http;
+
+
+/** The <code>HTTPException</code> exception represents a
+ * XML/HTTP fault.
+ *
+ * <p>Since there is no standard format for faults or exceptions
+ * in XML/HTTP messaging, only the HTTP status code is captured.
+ *
+ * @since JAX-WS 2.0
+**/
+public class HTTPException extends javax.xml.ws.ProtocolException {
+
+ private int statusCode;
+
+ /** Constructor for the HTTPException
+ * @param statusCode <code>int</code> for the HTTP status code
+ **/
+ public HTTPException(int statusCode) {
+ super();
+ this.statusCode = statusCode;
+ }
+
+ /** Gets the HTTP status code.
+ *
+ * @return HTTP status code
+ **/
+ public int getStatusCode() {
+ return statusCode;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/http/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines APIs specific to the HTTP binding.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package contains the core JAX-WS APIs.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/Addressing.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/Addressing.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/Addressing.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+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.BindingProvider;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+import javax.xml.ws.WebServiceProvider;
+import javax.xml.ws.soap.AddressingFeature.Responses;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This annotation represents the use of WS-Addressing with either
+ * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this annotation
+ * with any other binding is undefined.
+ * <p>
+ * This annotation MUST only be used in conjunction with the
+ * {@link javax.jws.WebService}, {@link WebServiceProvider},
+ * and {@link WebServiceRef} annotations.
+ * When used with a <code>javax.jws.WebService</code> annotation, this
+ * annotation MUST only be used on the service endpoint implementation
+ * class.
+ * When used with a <code>WebServiceRef</code> annotation, this annotation
+ * MUST only be used when a proxy instance is created. The injected SEI
+ * proxy, and endpoint MUST honor the values of the <code>Addressing</code>
+ * annotation.
+ * <p>
+ * This annotation's behaviour is defined by the corresponding feature
+ * {@link AddressingFeature}.
+ *
+ * @since JAX-WS 2.1
+ */
+ at Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+ at WebServiceFeatureAnnotation(id=AddressingFeature.ID,bean=AddressingFeature.class)
+public @interface Addressing {
+ /**
+ * Specifies if this feature is enabled or disabled. If enabled, it means
+ * the endpoint supports WS-Addressing but does not require its use.
+ * Corresponding
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing">
+ * 3.1.1 Addressing Assertion</a> must be generated in the generated WSDL.
+ */
+ boolean enabled() default true;
+
+ /**
+ * If addressing is enabled, this property determines whether the endpoint
+ * requires WS-Addressing. If required is true, the endpoint requires
+ * WS-Addressing and WS-Addressing headers MUST
+ * be present on incoming messages. A corresponding
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyaddressing">
+ * 3.1.1 Addressing Assertion</a> must be generated in the WSDL.
+ */
+ boolean required() default false;
+
+ /**
+ * If addressing is enabled, this property determines whether endpoint
+ * requires the use of anonymous responses, or non-anonymous responses,
+ * or all.
+ *
+ * <p>
+ * {@link Responses#ALL} supports all response types and this is the
+ * default value.
+ *
+ * <p>
+ * {@link Responses#ANONYMOUS} requires the use of only anonymous
+ * responses. It will result into wsam:AnonymousResponses nested assertion
+ * as specified in
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyanonresponses">
+ * 3.1.2 AnonymousResponses Assertion</a> in the generated WSDL.
+ *
+ * <p>
+ * {@link Responses#NON_ANONYMOUS} requires the use of only non-anonymous
+ * responses. It will result into
+ * wsam:NonAnonymousResponses nested assertion as specified in
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicynonanonresponses">
+ * 3.1.3 NonAnonymousResponses Assertion</a> in the generated WSDL.
+ *
+ * @since JAX-WS 2.2
+ */
+ Responses responses() default Responses.ALL;
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/AddressingFeature.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/AddressingFeature.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/AddressingFeature.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+
+/**
+ * AddressingFeature 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 undefined.
+ * <p>
+ * This feature can be used during the creation of SEI proxy, and
+ * {@link Dispatch} instances on the client side and {@link Endpoint}
+ * instances on the server side. This feature cannot be used for {@link Service}
+ * instance creation on the client side.
+ * <p>
+ * The following describes the effects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, WS-Addressing will be enabled. It means
+ * the endpoint supports WS-Addressing but does not require its use.
+ * A sender could send messages with WS-Addressing headers or without
+ * WS-Addressing headers. But a receiver MUST consume both types of
+ * messages.
+ * <li> DISABLED: In this Mode, WS-Addressing will be disabled.
+ * At runtime, WS-Addressing headers MUST NOT be used by a sender or
+ * receiver.
+ * </ul>
+ * <p>
+ * If the feature is enabled, the <code>required</code> property determines
+ * whether the endpoint requires WS-Addressing. If it is set true,
+ * WS-Addressing headers MUST be present on incoming and outgoing messages.
+ * By default the <code>required</code> property is <code>false</code>.
+ *
+ * <p>
+ * If the web service developer has not explicitly enabled this feature,
+ * WSDL's wsam:Addressing policy assertion is used to find
+ * the use of WS-Addressing. By using the feature explicitly, an application
+ * overrides WSDL's indication of the use of WS-Addressing. In some cases,
+ * this is really required. For example, if an application has implemented
+ * WS-Addressing itself, it can use this feature to disable addressing. That
+ * means a JAX-WS implementation doesn't consume or produce WS-Addressing
+ * headers.
+ *
+ * <p>
+ * If addressing is enabled, a corresponding wsam:Addressing policy assertion
+ * must be generated in the WSDL as per
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyassertions">
+ * 3.1 WS-Policy Assertions</a>
+ *
+ * <p>
+ * <b>Example 1: </b>Possible Policy Assertion in the generated WSDL for
+ * <code>@Addressing</code>
+ * <pre>
+ * <wsam:Addressing wsp:Optional="true">
+ * <wsp:Policy/>
+ * </wsam:Addressing>
+ * </pre>
+ *
+ * <p>
+ * <b>Example 2: </b>Possible Policy Assertion in the generated WSDL for
+ * <code>@Addressing(required=true)</code>
+ * <pre>
+ * <wsam:Addressing>
+ * <wsp:Policy/>
+ * </wsam:Addressing>
+ * </pre>
+ *
+ * <p>
+ * <b>Example 3: </b>Possible Policy Assertion in the generated WSDL for
+ * <code>@Addressing(required=true, responses=Responses.ANONYMOUS)</code>
+ * <pre>
+ * <wsam:Addressing>
+ * <wsp:Policy>
+ * <wsam:AnonymousResponses/>
+ * </wsp:Policy>
+ * </wsam:Addressing>
+ * </pre>
+ *
+ * <p>
+ * See <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
+ * Web Services Addressing - Core</a>,
+ * <a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/">
+ * Web Services Addressing 1.0 - SOAP Binding</a>,
+ * and <a href="http://www.w3.org/TR/ws-addr-metadata/">
+ * Web Services Addressing 1.0 - Metadata</a>
+ * for more information on WS-Addressing.
+ *
+ * @see Addressing
+ * @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";
+
+ /**
+ * If addressing is enabled, this property determines whether the endpoint
+ * requires WS-Addressing. If required is true, WS-Addressing headers MUST
+ * be present on incoming and outgoing messages.
+ */
+ // didn't make it as private final for compatibility
+ protected /* final */ boolean required;
+
+ /**
+ * If addressing is enabled, this property determines if endpoint requires
+ * the use of only anonymous responses, or only non-anonymous responses, or all.
+ *
+ * <p>
+ * {@link Responses#ALL} supports all response types and this is the default
+ * value.
+ *
+ * <p>
+ * {@link Responses#ANONYMOUS} requires the use of only anonymous
+ * responses. It will result into wsam:AnonymousResponses nested assertion
+ * as specified in
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicyanonresponses">
+ * 3.1.2 AnonymousResponses Assertion</a> in the generated WSDL.
+ *
+ * <p>
+ * {@link Responses#NON_ANONYMOUS} requires the use of only non-anonymous
+ * responses. It will result into
+ * wsam:NonAnonymousResponses nested assertion as specified in
+ * <a href="http://www.w3.org/TR/ws-addr-metadata/#wspolicynonanonresponses">
+ * 3.1.3 NonAnonymousResponses Assertion</a> in the generated WSDL.
+ *
+ * @since JAX-WS 2.2
+ */
+ public enum Responses { ANONYMOUS, NON_ANONYMOUS, ALL }
+
+ private final Responses responses;
+
+ /**
+ * Creates and configures an <code>AddressingFeature</code> with the
+ * use of addressing requirements. The created feature enables
+ * ws-addressing i.e. supports ws-addressing but doesn't require
+ * its use. It is also configured to accept all the response types.
+ */
+ public AddressingFeature() {
+ this(true, false, Responses.ALL);
+ }
+
+ /**
+ * Creates and configures an <code>AddressingFeature</code> with the
+ * use of addressing requirements. If <code>enabled</code> is true,
+ * it enables ws-addressing i.e. supports ws-addressing but doesn't
+ * require its use. It also configures to accept all the response types.
+ *
+ * @param enabled true enables ws-addressing i.e.ws-addressing
+ * is supported but doesn't require its use
+ */
+ public AddressingFeature(boolean enabled) {
+ this(enabled, false, Responses.ALL);
+ }
+
+ /**
+ * Creates and configures an <code>AddressingFeature</code> with the
+ * use of addressing requirements. If <code>enabled</code> and
+ * <code>required</code> are true, it enables ws-addressing and
+ * requires its use. It also configures to accept all the response types.
+ *
+ * @param enabled true enables ws-addressing i.e.ws-addressing
+ * is supported but doesn't require its use
+ * @param required true means requires the use of ws-addressing .
+ */
+ public AddressingFeature(boolean enabled, boolean required) {
+ this(enabled, required, Responses.ALL);
+ }
+
+ /**
+ * Creates and configures an <code>AddressingFeature</code> with the
+ * use of addressing requirements. If <code>enabled</code> and
+ * <code>required</code> are true, it enables ws-addressing and
+ * requires its use. Also, the response types can be configured using
+ * <code>responses</code> parameter.
+ *
+ * @param enabled true enables ws-addressing i.e.ws-addressing
+ * is supported but doesn't require its use
+ * @param required true means requires the use of ws-addressing .
+ * @param responses specifies what type of responses are required
+ *
+ * @since JAX-WS 2.2
+ */
+ public AddressingFeature(boolean enabled, boolean required, Responses responses) {
+ this.enabled = enabled;
+ this.required = required;
+ this.responses = responses;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID() {
+ return ID;
+ }
+
+ /**
+ * If addressing is enabled, this property determines whether the endpoint
+ * requires WS-Addressing. If required is true, WS-Addressing headers MUST
+ * be present on incoming and outgoing messages.
+ *
+ * @return the current required value
+ */
+ public boolean isRequired() {
+ return required;
+ }
+
+ /**
+ * If addressing is enabled, this property determines whether endpoint
+ * requires the use of anonymous responses, or non-anonymous responses,
+ * or all responses.
+ *
+ * <p>
+ * @return {@link Responses#ALL} when endpoint supports all types of
+ * responses,
+ * {@link Responses#ANONYMOUS} when endpoint requires the use of
+ * only anonymous responses,
+ * {@link Responses#NON_ANONYMOUS} when endpoint requires the use
+ * of only non-anonymous responses
+ *
+ * @since JAX-WS 2.2
+ */
+ public Responses getResponses() {
+ return responses;
+ }
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOM.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOM.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOM.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+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;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceProvider;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ * <p>
+ * This annotation MUST only be used in conjunction the
+ * <code>javax.jws.WebService</code>, {@link WebServiceProvider},
+ * {@link WebServiceRef} annotations.
+ * When used with the <code>javax.jws.WebService</code> annotation this
+ * annotation MUST only be used on the service endpoint implementation
+ * class.
+ * When used with a <code>WebServiceRef</code> annotation, this annotation
+ * MUST only be used when a proxy instance is created. The injected SEI
+ * proxy, and endpoint MUST honor the values of the <code>MTOM</code>
+ * annotation.
+ * <p>
+ *
+ * This annotation's behaviour is defined by the corresponding feature
+ * {@link MTOMFeature}.
+ *
+ * @since JAX-WS 2.1
+ */
+ at Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+ at Retention(RetentionPolicy.RUNTIME)
+ at Documented
+ at 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;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOMFeature.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOMFeature.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/MTOMFeature.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Service;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ *
+ * This feature can be used during the creation of SEI proxy, and
+ * {@link Dispatch} instances on the client side and {@link Endpoint}
+ * instances on the server side. This feature cannot be used for {@link Service}
+ * instance creation on the client side.
+ *
+ * <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. A receiver MUST accept
+ * both a non-optimized and an optimized message, and a sender MAY send an
+ * optimized message, or a non-optimized message. The heuristics used by a
+ * sender to determine whether to use optimization or not are
+ * implementation-specific.
+ * <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;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPBinding.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPBinding.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPBinding.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+
+import java.util.Set;
+import javax.xml.ws.Binding;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.MessageFactory;
+
+/** The <code>SOAPBinding</code> interface is an abstraction for
+ * the SOAP binding.
+ *
+ * @since JAX-WS 2.0
+**/
+public interface SOAPBinding extends Binding {
+
+ /**
+ * A constant representing the identity of the SOAP 1.1 over HTTP binding.
+ */
+ public static final String SOAP11HTTP_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http";
+
+ /**
+ * A constant representing the identity of the SOAP 1.2 over HTTP binding.
+ */
+ public static final String SOAP12HTTP_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/";
+
+ /**
+ * A constant representing the identity of the SOAP 1.1 over HTTP binding
+ * with MTOM enabled by default.
+ */
+ public static final String SOAP11HTTP_MTOM_BINDING = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true";
+
+ /**
+ * A constant representing the identity of the SOAP 1.2 over HTTP binding
+ * with MTOM enabled by default.
+ */
+ public static final String SOAP12HTTP_MTOM_BINDING = "http://www.w3.org/2003/05/soap/bindings/HTTP/?mtom=true";
+
+
+ /** Gets the roles played by the SOAP binding instance.
+ *
+ * @return Set<String> The set of roles played by the binding instance.
+ **/
+ public Set<String> getRoles();
+
+ /** Sets the roles played by the SOAP binding instance.
+ *
+ * @param roles The set of roles played by the binding instance.
+ * @throws WebServiceException On an error in the configuration of
+ * the list of roles.
+ **/
+ public void setRoles(Set<String> roles);
+
+ /**
+ * Returns <code>true</code> if the use of MTOM is enabled.
+ *
+ * @return <code>true</code> if and only if the use of MTOM is enabled.
+ **/
+
+ public boolean isMTOMEnabled();
+
+ /**
+ * Enables or disables use of MTOM.
+ *
+ * @param flag A <code>boolean</code> specifying whether the use of MTOM should
+ * be enabled or disabled.
+ * @throws WebServiceException If the specified setting is not supported
+ * by this binding instance.
+ *
+ **/
+ public void setMTOMEnabled(boolean flag);
+
+ /**
+ * Gets the SAAJ <code>SOAPFactory</code> instance used by this SOAP binding.
+ *
+ * @return SOAPFactory instance used by this SOAP binding.
+ **/
+ public SOAPFactory getSOAPFactory();
+
+ /**
+ * Gets the SAAJ <code>MessageFactory</code> instance used by this SOAP binding.
+ *
+ * @return MessageFactory instance used by this SOAP binding.
+ **/
+ public MessageFactory getMessageFactory();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPFaultException.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPFaultException.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/SOAPFaultException.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.soap;
+
+import javax.xml.soap.SOAPFault;
+
+/** The <code>SOAPFaultException</code> exception represents a
+ * SOAP 1.1 or 1.2 fault.
+ *
+ * <p>A <code>SOAPFaultException</code> wraps a SAAJ <code>SOAPFault</code>
+ * that manages the SOAP-specific representation of faults.
+ * The <code>createFault</code> method of
+ * <code>javax.xml.soap.SOAPFactory</code> may be used to create an instance
+ * of <code>javax.xml.soap.SOAPFault</code> for use with the
+ * constructor. <code>SOAPBinding</code> contains an accessor for the
+ * <code>SOAPFactory</code> used by the binding instance.
+ *
+ * <p>Note that the value of <code>getFault</code> is the only part of the
+ * exception used when searializing a SOAP fault.
+ *
+ * <p>Refer to the SOAP specification for a complete
+ * description of SOAP faults.
+ *
+ * @see javax.xml.soap.SOAPFault
+ * @see javax.xml.ws.soap.SOAPBinding#getSOAPFactory
+ * @see javax.xml.ws.ProtocolException
+ *
+ * @since JAX-WS 2.0
+ **/
+public class SOAPFaultException extends javax.xml.ws.ProtocolException {
+
+ private SOAPFault fault;
+
+ /** Constructor for SOAPFaultException
+ * @param fault <code>SOAPFault</code> representing the fault
+ *
+ * @see javax.xml.soap.SOAPFactory#createFault
+ **/
+ public SOAPFaultException(SOAPFault fault) {
+ super(fault.getFaultString());
+ this.fault = fault;
+ }
+
+ /** Gets the embedded <code>SOAPFault</code> instance.
+ *
+ * @return <code>javax.xml.soap.SOAPFault</code> SOAP
+ * fault element
+ **/
+ public javax.xml.soap.SOAPFault getFault() {
+ return this.fault;
+ }
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/soap/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines APIs specific to the SOAP binding.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/FactoryFinder.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/FactoryFinder.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/FactoryFinder.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi;
+
+import java.io.InputStream;
+import java.io.File;
+import java.io.FileInputStream;
+
+import java.util.Properties;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import javax.xml.ws.WebServiceException;
+
+class FactoryFinder {
+
+ /**
+ * Creates an instance of the specified class using the specified
+ * <code>ClassLoader</code> object.
+ *
+ * @exception WebServiceException if the given class could not be found
+ * or could not be instantiated
+ */
+ private static Object newInstance(String className,
+ ClassLoader classLoader)
+ {
+ try {
+ Class spiClass = safeLoadClass(className, classLoader);
+ return spiClass.newInstance();
+ } catch (ClassNotFoundException x) {
+ throw new WebServiceException(
+ "Provider " + className + " not found", x);
+ } catch (Exception x) {
+ throw new WebServiceException(
+ "Provider " + className + " could not be instantiated: " + x,
+ x);
+ }
+ }
+
+ /**
+ * Finds the implementation <code>Class</code> object for the given
+ * factory name, or if that fails, finds the <code>Class</code> object
+ * for the given fallback class name. The arguments supplied MUST be
+ * used in order. If using the first argument is successful, the second
+ * one will not be used.
+ * <P>
+ * This method is package private so that this code can be shared.
+ *
+ * @return the <code>Class</code> object of the specified message factory;
+ * may not be <code>null</code>
+ *
+ * @param factoryId the name of the factory to find, which is
+ * a system property
+ * @param fallbackClassName the implementation class name, which is
+ * to be used only if nothing else
+ * is found; <code>null</code> to indicate that
+ * there is no fallback class name
+ * @exception WebServiceException if there is an error
+ */
+ static Object find(String factoryId, String fallbackClassName)
+ {
+ ClassLoader classLoader;
+ try {
+ classLoader = Thread.currentThread().getContextClassLoader();
+ } catch (Exception x) {
+ throw new WebServiceException(x.toString(), x);
+ }
+
+ String serviceId = "META-INF/services/" + factoryId;
+ // try to find services in CLASSPATH
+ try {
+ InputStream is=null;
+ if (classLoader == null) {
+ is=ClassLoader.getSystemResourceAsStream(serviceId);
+ } else {
+ is=classLoader.getResourceAsStream(serviceId);
+ }
+
+ if( is!=null ) {
+ BufferedReader rd =
+ new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+ String factoryClassName = rd.readLine();
+ rd.close();
+
+ if (factoryClassName != null &&
+ ! "".equals(factoryClassName)) {
+ return newInstance(factoryClassName, classLoader);
+ }
+ }
+ } catch( Exception ex ) {
+ }
+
+
+ // try to read from $java.home/lib/jaxws.properties
+ try {
+ String javah=System.getProperty( "java.home" );
+ String configFile = javah + File.separator +
+ "lib" + File.separator + "jaxws.properties";
+ File f=new File( configFile );
+ if( f.exists()) {
+ Properties props=new Properties();
+ props.load( new FileInputStream(f));
+ String factoryClassName = props.getProperty(factoryId);
+ return newInstance(factoryClassName, classLoader);
+ }
+ } catch(Exception ex ) {
+ }
+
+
+ // Use the system property
+ try {
+ String systemProp =
+ System.getProperty( factoryId );
+ if( systemProp!=null) {
+ return newInstance(systemProp, classLoader);
+ }
+ } catch (SecurityException se) {
+ }
+
+ if (fallbackClassName == null) {
+ throw new WebServiceException(
+ "Provider for " + factoryId + " cannot be found", null);
+ }
+
+ return newInstance(fallbackClassName, classLoader);
+ }
+
+
+ /**
+ * Loads the class, provided that the calling thread has an access to the class being loaded.
+ */
+ private static Class safeLoadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
+ try {
+ // make sure that the current thread has an access to the package of the given name.
+ SecurityManager s = System.getSecurityManager();
+ if (s != null) {
+ int i = className.lastIndexOf('.');
+ if (i != -1) {
+ s.checkPackageAccess(className.substring(0, i));
+ }
+ }
+
+ if (classLoader == null)
+ return Class.forName(className);
+ else
+ return classLoader.loadClass(className);
+ } catch (SecurityException se) {
+ // anyone can access the platform default factory class without permission
+ if (Provider.DEFAULT_JAXWSPROVIDER.equals(className))
+ return Class.forName(className);
+ throw se;
+ }
+ }
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Invoker.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Invoker.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Invoker.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ * $Id: Invoker.java,v 1.1.2.5 2009/02/18 00:21:32 jitu Exp $
+ */
+package javax.xml.ws.spi;
+
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.WebServiceFeature;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Invoker hides the detail of calling into application endpoint
+ * implementation. Container hands over an implementation of Invoker
+ * to JAX-WS runtime, and jax-ws runtime calls {@link #invoke}
+ * for a web service invocation. Finally, Invoker does the actual
+ * invocation of web service on endpoint instance.
+ *
+ * Container also injects the provided <code>WebServiceContext</code> and takes
+ * care of invoking <code>javax.annotation.PostConstruct</code> methods,
+ * if present, on the endpoint implementation.
+ *
+ * @see Provider#createEndpoint(String, Class, Invoker, WebServiceFeature...)
+ * @author Jitendra Kotamraju
+ * @since JAX-WS 2.2
+ */
+
+public abstract class Invoker {
+
+ /**
+ * JAX-WS runtimes calls this method to ask container to inject
+ * WebServiceContext on the endpoint instance. The
+ * <code>WebServiceContext</code> object uses thread-local information
+ * to return the correct information during the actual endpoint invocation
+ * regardless of how many threads are concurrently being used to serve
+ * requests.
+ *
+ * @param webServiceContext a holder for MessageContext
+ * @throws IllegalAccessException if the injection done
+ * by reflection API throws this exception
+ * @throws IllegalArgumentException if the injection done
+ * by reflection API throws this exception
+ * @throws InvocationTargetException if the injection done
+ * by reflection API throws this exception
+ */
+ public abstract void inject(WebServiceContext webServiceContext)
+ throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;
+
+ /**
+ * JAX-WS runtime calls this method to do the actual web service
+ * invocation on endpoint instance. The injected
+ * <code>WebServiceContext.getMessageContext()</code> gives the correct
+ * information for this invocation.
+ *
+ * @param m Method to be invoked on the service
+ * @param args Method arguments
+ * @return return value of the method
+ * @throws IllegalAccessException if the invocation done
+ * by reflection API throws this exception
+ * @throws IllegalArgumentException if the invocation done
+ * by reflection API throws this exception
+ * @throws InvocationTargetException if the invocation done
+ * by reflection API throws this exception
+
+ * @see Method#invoke
+ */
+ public abstract Object invoke(Method m, Object... args)
+ throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;
+
+}
\ No newline at end of file
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Provider.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Provider.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/Provider.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,502 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *$Id: Provider.java,v 1.9.2.15 2009/09/08 20:27:02 jitu Exp $
+ */
+
+package javax.xml.ws.spi;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Map;
+import java.lang.reflect.Method;
+import javax.xml.namespace.QName;
+import javax.xml.ws.*;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import org.w3c.dom.Element;
+
+/**
+ * Service provider for <code>ServiceDelegate</code> and
+ * <code>Endpoint</code> objects.
+ * <p>
+ *
+ * @since JAX-WS 2.0
+ */
+public abstract class Provider {
+
+ /**
+ * A constant representing the property used to lookup the
+ * name of a <code>Provider</code> implementation
+ * class.
+ */
+ static public final String JAXWSPROVIDER_PROPERTY
+ = "javax.xml.ws.spi.Provider";
+
+ /**
+ * A constant representing the name of the default
+ * <code>Provider</code> implementation class.
+ **/
+ // Using two strings so that package renaming doesn't change it
+ static final String DEFAULT_JAXWSPROVIDER
+ = "com.sun"+".xml.internal.ws.spi.ProviderImpl";
+
+ /**
+ * Take advantage of Java SE 6's java.util.ServiceLoader API.
+ * Using reflection so that there is no compile-time dependency on SE 6.
+ */
+ static private final Method loadMethod;
+ static private final Method iteratorMethod;
+ static {
+ Method tLoadMethod = null;
+ Method tIteratorMethod = null;
+ try {
+ Class<?> clazz = Class.forName("java.util.ServiceLoader");
+ tLoadMethod = clazz.getMethod("load", Class.class);
+ tIteratorMethod = clazz.getMethod("iterator");
+ } catch(ClassNotFoundException ce) {
+ // Running on Java SE 5
+ } catch(NoSuchMethodException ne) {
+ // Shouldn't happen
+ }
+ loadMethod = tLoadMethod;
+ iteratorMethod = tIteratorMethod;
+ }
+
+
+ /**
+ * Creates a new instance of Provider
+ */
+ protected Provider() {
+ }
+
+ /**
+ *
+ * Creates a new provider object.
+ * <p>
+ * The algorithm used to locate the provider subclass to use consists
+ * of the following steps:
+ * <p>
+ * <ul>
+ * <li>
+ * If a resource with the name of
+ * <code>META-INF/services/javax.xml.ws.spi.Provider</code>
+ * exists, then its first line, if present, is used as the UTF-8 encoded
+ * name of the implementation class.
+ * </li>
+ * <li>
+ * If the $java.home/lib/jaxws.properties file exists and it is readable by
+ * the <code>java.util.Properties.load(InputStream)</code> method and it contains
+ * an entry whose key is <code>javax.xml.ws.spi.Provider</code>, then the value of
+ * that entry is used as the name of the implementation class.
+ * </li>
+ * <li>
+ * If a system property with the name <code>javax.xml.ws.spi.Provider</code>
+ * is defined, then its value is used as the name of the implementation class.
+ * </li>
+ * <li>
+ * Finally, a default implementation class name is used.
+ * </li>
+ * </ul>
+ *
+ */
+ public static Provider provider() {
+ try {
+ Object provider = getProviderUsingServiceLoader();
+ if (provider == null) {
+ provider = FactoryFinder.find(JAXWSPROVIDER_PROPERTY, DEFAULT_JAXWSPROVIDER);
+ }
+ if (!(provider instanceof Provider)) {
+ Class pClass = Provider.class;
+ String classnameAsResource = pClass.getName().replace('.', '/') + ".class";
+ ClassLoader loader = pClass.getClassLoader();
+ if(loader == null) {
+ loader = ClassLoader.getSystemClassLoader();
+ }
+ URL targetTypeURL = loader.getResource(classnameAsResource);
+ throw new LinkageError("ClassCastException: attempting to cast" +
+ provider.getClass().getClassLoader().getResource(classnameAsResource) +
+ "to" + targetTypeURL.toString() );
+ }
+ return (Provider) provider;
+ } catch (WebServiceException ex) {
+ throw ex;
+ } catch (Exception ex) {
+ throw new WebServiceException("Unable to createEndpointReference Provider", ex);
+ }
+ }
+
+
+ private static Provider getProviderUsingServiceLoader() {
+ if (loadMethod != null) {
+ Object loader;
+ try {
+ loader = loadMethod.invoke(null, Provider.class);
+ } catch (Exception e) {
+ throw new WebServiceException("Cannot invoke java.util.ServiceLoader#load()", e);
+ }
+
+ Iterator<Provider> it;
+ try {
+ it = (Iterator<Provider>)iteratorMethod.invoke(loader);
+ } catch(Exception e) {
+ throw new WebServiceException("Cannot invoke java.util.ServiceLoader#iterator()", e);
+ }
+ return it.hasNext() ? it.next() : null;
+ }
+ return null;
+ }
+
+ /**
+ * Creates a service delegate object.
+ * <p>
+ * @param wsdlDocumentLocation A URL pointing to the WSDL document
+ * for the service, or <code>null</code> if there isn't one.
+ * @param serviceName The qualified name of the service.
+ * @param serviceClass The service class, which MUST be either
+ * <code>javax.xml.ws.Service</code> or a subclass thereof.
+ * @return The newly created service delegate.
+ */
+ public abstract ServiceDelegate createServiceDelegate(
+ java.net.URL wsdlDocumentLocation,
+ QName serviceName, Class<? extends Service> serviceClass);
+
+ /**
+ * Creates a service delegate object.
+ * <p>
+ * @param wsdlDocumentLocation A URL pointing to the WSDL document
+ * for the service, or <code>null</code> if there isn't one.
+ * @param serviceName The qualified name of the service.
+ * @param serviceClass The service class, which MUST be either
+ * <code>javax.xml.ws.Service</code> or a subclass thereof.
+ * @param features Web Service features that must be configured on
+ * the service. If the provider doesn't understand a feature,
+ * it must throw a WebServiceException.
+ * @return The newly created service delegate.
+ *
+ * @since JAX-WS 2.2
+ */
+ public ServiceDelegate createServiceDelegate(
+ java.net.URL wsdlDocumentLocation,
+ QName serviceName, Class<? extends Service> serviceClass, WebServiceFeature ... features) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+
+ /**
+ *
+ * Creates an endpoint object with the provided binding and implementation
+ * object.
+ *
+ * @param bindingId A URI specifying the desired binding (e.g. SOAP/HTTP)
+ * @param implementor A service implementation object to which
+ * incoming requests will be dispatched. The corresponding
+ * class MUST be annotated with all the necessary Web service
+ * annotations.
+ * @return The newly created endpoint.
+ */
+ public abstract Endpoint createEndpoint(String bindingId,
+ Object implementor);
+
+
+ /**
+ * Creates and publishes an endpoint object with the specified
+ * address and implementation object.
+ *
+ * @param address A URI specifying the address and transport/protocol
+ * to use. A http: URI MUST result in the SOAP 1.1/HTTP
+ * binding being used. Implementations may support other
+ * URI schemes.
+ * @param implementor A service implementation object to which
+ * incoming requests will be dispatched. The corresponding
+ * class MUST be annotated with all the necessary Web service
+ * annotations.
+ * @return The newly created endpoint.
+ */
+ public abstract Endpoint createAndPublishEndpoint(String address,
+ Object implementor);
+
+ /**
+ * read an EndpointReference from the infoset contained in
+ * <code>eprInfoset</code>.
+ *
+ * @param eprInfoset infoset for EndpointReference
+ *
+ * @return the <code>EndpointReference</code> unmarshalled from
+ * <code>eprInfoset</code>. This method never returns <code>null</code>.
+ *
+ * @throws 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);
+
+
+ /**
+ * 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 of the
+ * <code>serviceEndpointInterface</code> and the <code>EndpointReference</code>.
+ * For this method
+ * to successfully return a proxy, WSDL metadata MUST be available and the
+ * <code>endpointReference</code> MUST contain an implementation understood
+ * <code>serviceName</code> metadata.
+ *
+ *
+ * @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 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 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(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.IllegalStateException</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 java.lang.IllegalStateException
+ * <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 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);
+
+
+ /**
+ * Factory method to create a <code>W3CEndpointReference</code>.
+ * Using this method, a <code>W3CEndpointReference</code> instance
+ * can be created with extension elements, and attributes.
+ * <code>Provider</code> implementations must override the default
+ * implementation.
+ *
+ * <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.IllegalStateException</code> MUST be thrown.
+ *
+ * @param address Specifies the address of the target endpoint
+ * @param interfaceName the wsam:InterfaceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ * @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.
+ * @param elements extension elements to be associated
+ * with the returned <code>EndpointReference</code> instance.
+ * @param attributes extension attributes 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 java.lang.IllegalStateException
+ * <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.
+ * <li>If the <code>wsdlDocumentLocation</code> is NOT <code>null</code> but
+ * wsdli:wsdlLocation's namespace name cannot be got from the available
+ * metadata.
+ * </ul>
+ * @throws WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ * @since JAX-WS 2.2
+ */
+ public W3CEndpointReference createW3CEndpointReference(String address,
+ QName interfaceName, QName serviceName, QName portName,
+ List<Element> metadata, String wsdlDocumentLocation, List<Element> referenceParameters,
+ List<Element> elements, Map<QName, String> attributes) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+ /**
+ * Creates and publishes an endpoint object with the specified
+ * address, implementation object and web service features.
+ * <code>Provider</code> implementations must override the
+ * default implementation.
+ *
+ * @param address A URI specifying the address and transport/protocol
+ * to use. A http: URI MUST result in the SOAP 1.1/HTTP
+ * binding being used. Implementations may support other
+ * URI schemes.
+ * @param implementor A service implementation object to which
+ * incoming requests will be dispatched. The corresponding
+ * class MUST be annotated with all the necessary Web service
+ * annotations.
+ * @param features A list of WebServiceFeatures to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return The newly created endpoint.
+ * @since JAX-WS 2.2
+ */
+ public Endpoint createAndPublishEndpoint(String address,
+ Object implementor, WebServiceFeature ... features) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+ /**
+ * Creates an endpoint object with the provided binding, implementation
+ * object and web service features. <code>Provider</code> implementations
+ * must override the default implementation.
+ *
+ * @param bindingId A URI specifying the desired binding (e.g. SOAP/HTTP)
+ * @param implementor A service implementation object to which
+ * incoming requests will be dispatched. The corresponding
+ * class MUST be annotated with all the necessary Web service
+ * annotations.
+ * @param features A list of WebServiceFeatures to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return The newly created endpoint.
+ * @since JAX-WS 2.2
+ */
+ public Endpoint createEndpoint(String bindingId, Object implementor,
+ WebServiceFeature ... features) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+ /**
+ * Creates an endpoint object with the provided binding, implementation
+ * class, invoker and web service features. Containers typically use
+ * this to create Endpoint objects. <code>Provider</code>
+ * implementations must override the default implementation.
+ *
+ * @param bindingId A URI specifying the desired binding (e.g. SOAP/HTTP).
+ * Can be null.
+ * @param implementorClass A service implementation class that
+ * MUST be annotated with all the necessary Web service
+ * annotations.
+ * @param invoker that does the actual invocation on the service instance.
+ * @param features A list of WebServiceFeatures to configure on the
+ * endpoint. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return The newly created endpoint.
+ * @since JAX-WS 2.2
+ */
+ public Endpoint createEndpoint(String bindingId, Class<?> implementorClass,
+ Invoker invoker, WebServiceFeature ... features) {
+ throw new UnsupportedOperationException("JAX-WS 2.2 implementation must override this default behaviour.");
+ }
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/ServiceDelegate.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/ServiceDelegate.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,602 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi;
+
+import java.util.Iterator;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Service;
+import javax.xml.ws.handler.HandlerResolver;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.bind.JAXBContext;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+
+
+/**
+ * Service delegates are used internally by <code>Service</code> objects
+ * to allow pluggability of JAX-WS implementations.
+ * <p>
+ * Every <code>Service</code> object has its own delegate, created using
+ * the {@link javax.xml.ws.spi.Provider#createServiceDelegate} method. A <code>Service</code>
+ * object delegates all of its instance methods to its delegate.
+ *
+ * @see javax.xml.ws.Service
+ * @see javax.xml.ws.spi.Provider
+ *
+ * @since JAX-WS 2.0
+ */
+public abstract class ServiceDelegate {
+
+ protected ServiceDelegate() {
+ }
+
+ /**
+ * The <code>getPort</code> 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
+ * @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
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ **/
+ public abstract <T> T getPort(QName portName,
+ Class<T> serviceEndpointInterface);
+
+ /**
+ * The <code>getPort</code> 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 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 abstract <T> T getPort(QName portName,
+ Class<T> serviceEndpointInterface, WebServiceFeature... features);
+
+ /**
+ * The <code>getPort</code> 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code> metadata
+ * also has a WSDL, then the WSDL from this instance MUST 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> MAY 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>
+ * <code>port = service.getPort(portName, serviceEndpointInterface);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ *
+ * @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 <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If a <code>portName</code> cannot be extracted
+ * from the WSDL or <code>endpointReference</code> metadata.
+ * <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 <code>getPort</code> 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
+ * @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
+ * </UL>
+ **/
+ public abstract <T> T getPort(Class<T> serviceEndpointInterface);
+
+
+ /**
+ * The <code>getPort</code> 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 <code>WebServiceFeatures</code> 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 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.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param bindingId A URI identifier of a binding.
+ * @param endpointAddress Address of the target service endpoint as a URI
+ * @throws WebServiceException If any error in the creation of
+ * the port
+ *
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP11HTTP_BINDING
+ * @see javax.xml.ws.soap.SOAPBinding#SOAP12HTTP_BINDING
+ * @see javax.xml.ws.http.HTTPBinding#HTTP_BINDING
+ **/
+ public abstract void addPort(QName portName, String bindingId,
+ String endpointAddress);
+
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the user's 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
+ * <code>javax.xml.transform.Source</code> and <code>javax.xml.soap.SOAPMessage</code>.
+ * @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 <code>MESSAGE</code>
+ * when type is <code>SOAPMessage</code>.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ **/
+ public abstract <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
+ Service.Mode mode);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the user's 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
+ * <code>javax.xml.transform.Source</code> and <code>javax.xml.soap.SOAPMessage</code>.
+ * @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 <code>MESSAGE</code>
+ * when type is <code>SOAPMessage</code>.
+ * @param features A list of <code>WebServiceFeatures</code> 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 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 user's 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL in its metadata, then the WSDL from this instance MUST 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> MAY be used.
+ * An implementation MUST be able to retrieve the <code>portName</code> from the
+ * <code>endpointReference</code> metadata.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * <code>dispatch = service.createDispatch(portName, type, mode, features);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * WSDL or <code>EndpointReference</code> metadata.
+ *
+ * @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
+ * <code>javax.xml.transform.Source</code> and <code>javax.xml.soap.SOAPMessage</code>.
+ * @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 <code>MESSAGE</code>
+ * when type is <code>SOAPMessage</code>.
+ * @param features An array of <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> or <code>portName</code>
+ * of a WSDL associated
+ * with this <code>Service</code> instance.
+ * <li>If the <code>portName</code> cannot be determined
+ * from the <code>EndpointReference</code> 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.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object
+ *
+ * @see javax.xml.bind.JAXBContext
+ **/
+ public abstract Dispatch<Object> createDispatch(QName portName,
+ JAXBContext context, Service.Mode mode);
+
+
+ /**
+ * 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 <code>WebServiceFeatures</code> 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 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 metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL in its metadata, then the WSDL from this instance
+ * MUST 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> MAY be used.
+ * An implementation MUST be able to retrieve the <code>portName</code> from the
+ * <code>endpointReference</code> metadata.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * <code>dispatch = service.createDispatch(portName, context, mode, features);</code>
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * WSDL or <code>endpointReference</code> metadata.
+ *
+ * @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 <code>WebServiceFeatures</code> 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>endpointReference</code> metadata does
+ * not match the <code>serviceName</code> or <code>portName</code>
+ * of a WSDL associated
+ * with this <code>Service</code> instance.
+ * <li>If the <code>portName</code> cannot be determined
+ * from the <code>EndpointReference</code> 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
+ **/
+ public abstract QName getServiceName();
+
+ /**
+ * Returns an <code>Iterator</code> for the list of
+ * <code>QName</code>s of service endpoints grouped by this
+ * service
+ *
+ * @return Returns <code>java.util.Iterator</code> with elements
+ * of type <code>javax.xml.namespace.QName</code>
+ * @throws WebServiceException If this Service class does not
+ * have access to the required WSDL metadata
+ **/
+ public abstract Iterator<javax.xml.namespace.QName> getPorts();
+
+ /**
+ * Gets the location of the WSDL document for this Service.
+ *
+ * @return URL for the location of the WSDL document for
+ * this service
+ **/
+ public abstract java.net.URL getWSDLDocumentLocation();
+
+ /**
+ * Returns the configured handler resolver.
+ *
+ * @return HandlerResolver The <code>HandlerResolver</code> being
+ * used by this <code>Service</code> instance, or <code>null</code>
+ * if there isn't one.
+ **/
+ public abstract HandlerResolver getHandlerResolver();
+
+ /**
+ * Sets the <code>HandlerResolver</code> for this <code>Service</code>
+ * instance.
+ * <p>
+ * The handler resolver, if present, will be called once for each
+ * proxy or dispatch instance that is created, and the handler chain
+ * returned by the resolver will be set on the instance.
+ *
+ * @param handlerResolver The <code>HandlerResolver</code> to use
+ * for all subsequently created proxy/dispatch objects.
+ *
+ * @see javax.xml.ws.handler.HandlerResolver
+ **/
+ public abstract void setHandlerResolver(HandlerResolver handlerResolver);
+
+ /**
+ * Returns the executor for this <code>Service</code>instance.
+ *
+ * The executor is used for all asynchronous invocations that
+ * require callbacks.
+ *
+ * @return The <code>java.util.concurrent.Executor</code> to be
+ * used to invoke a callback.
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public abstract java.util.concurrent.Executor getExecutor();
+
+ /**
+ * Sets the executor for this <code>Service</code> instance.
+ *
+ * The executor is used for all asynchronous invocations that
+ * require callbacks.
+ *
+ * @param executor The <code>java.util.concurrent.Executor</code>
+ * to be used to invoke a callback.
+ *
+ * @throws SecurityException If the instance does not support
+ * setting an executor for security reasons (e.g. the
+ * necessary permissions are missing).
+ *
+ * @see java.util.concurrent.Executor
+ **/
+ public abstract void setExecutor(java.util.concurrent.Executor executor);
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi;
+
+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.WebServiceFeature;
+import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.WebServiceRefs;
+import javax.xml.ws.RespectBinding;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.MTOM;
+
+/**
+ * Annotation used to identify other annotations
+ * as a <code>WebServiceFeature</code>.
+ * <p>
+ * 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>.
+ * <p>
+ * JAX-WS defines the following
+ * <code>WebServiceFeature</code> annotations (<code>Addressing</code>,
+ * <code>MTOM</code>, <code>RespectBinding</code>), however, an implementation
+ * may define vendors specific annotations for other features.
+ * <p>
+ * Annotations annotated with <code>WebServiceFeatureAnnotation</code> MUST
+ * have the same @Target of {@link WebServiceRef} annotation, so that the resulting
+ * feature annotation can be used in conjunction with the {@link WebServiceRef}
+ * annotation if necessary.
+ * <p>
+ * If a JAX-WS implementation encounters an annotation annotated
+ * with the <code>WebServiceFeatureAnnotation</code> that it does not
+ * recognize/support an error MUST be given.
+ * <p>
+ *
+ * @see Addressing
+ * @see MTOM
+ * @see RespectBinding
+ *
+ * @since JAX-WS 2.1
+ */
+ at Target(ElementType.ANNOTATION_TYPE)
+ at Retention(RetentionPolicy.RUNTIME)
+ at 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();
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpContext.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpContext.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpContext.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi.http;
+
+import javax.xml.ws.Endpoint;
+import java.util.Set;
+
+/**
+ * HttpContext represents a mapping between the root URI path of a web
+ * service to a {@link HttpHandler} which is invoked to handle requests
+ * destined for that path on the associated container.
+ * <p>
+ * Container provides the implementation for this and it matches
+ * web service requests to corresponding HttpContext objects.
+ *
+ * @author Jitendra Kotamraju
+ * @since JAX-WS 2.2
+ */
+public abstract class HttpContext {
+
+ protected HttpHandler handler;
+
+ /**
+ * JAX-WS runtime sets its handler during
+ * {@link Endpoint#publish(HttpContext)} to handle
+ * HTTP requests for this context. Container or its extensions
+ * use this handler to process the requests.
+ *
+ * @param handler the handler to set for this context
+ */
+ public void setHandler(HttpHandler handler) {
+ this.handler = handler;
+ }
+
+ /**
+ * Returns the path for this context. This path uniquely identifies
+ * an endpoint inside an application and the path is relative to
+ * application's context path. Container should give this
+ * path based on how it matches request URIs to this HttpContext object.
+ *
+ * <p>
+ * For servlet container, this is typically a url-pattern for an endpoint.
+ *
+ * <p>
+ * Endpoint's address for this context can be computed as follows:
+ * <pre>
+ * HttpExchange exch = ...;
+ * String endpointAddress =
+ * exch.getScheme() + "://"
+ * + exch.getLocalAddress().getHostName()
+ * + ":" + exch.getLocalAddress().getPort()
+ * + exch.getContextPath() + getPath();
+ * </pre>
+ *
+ * @return this context's path
+ */
+ public abstract String getPath();
+
+ /**
+ * Returns an attribute value for container's configuration
+ * and other data that can be used by jax-ws runtime.
+ *
+ * @param name attribute name
+ * @return attribute value
+ */
+ public abstract Object getAttribute(String name);
+
+ /**
+ * Returns all attribute names for container's configuration
+ * and other data that can be used by jax-ws runtime.
+ *
+ * @return set of all attribute names
+ */
+ public abstract Set<String> getAttributeNames();
+
+}
\ No newline at end of file
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpExchange.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpExchange.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpExchange.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,308 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi.http;
+
+import javax.xml.ws.handler.MessageContext;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.security.Principal;
+
+/**
+ * This class encapsulates a HTTP request received and a
+ * response to be generated in one exchange. It provides methods
+ * for examining the request from the client, and for building and
+ * sending the response.
+ * <p>
+ * A <code>HttpExchange</code> must be closed to free or reuse
+ * underlying resources. The effect of failing to close an exchange
+ * is undefined.
+ *
+ * @author Jitendra Kotamraju
+ * @since JAX-WS 2.2
+ */
+public abstract class HttpExchange {
+
+ /**
+ * Standard property: cipher suite value when the request is received
+ * over HTTPS
+ * <p>Type: String
+ */
+ public static final String REQUEST_CIPHER_SUITE =
+ "javax.xml.ws.spi.http.request.cipher.suite";
+
+ /**
+ * Standard property: bit size of the algorithm when the request is
+ * received over HTTPS
+ * <p>Type: Integer
+ */
+ public static final String REQUEST_KEY_SIZE =
+ "javax.xml.ws.spi.http.request.key.size";
+
+ /**
+ * Standard property: A SSL certificate, if any, associated with the request
+ *
+ * <p>Type: java.security.cert.X509Certificate[]
+ * The order of this array is defined as being in ascending order of trust.
+ * The first certificate in the chain is the one set by the client, the next
+ * is the one used to authenticate the first, and so on.
+ */
+ public static final String REQUEST_X509CERTIFICATE =
+ "javax.xml.ws.spi.http.request.cert.X509Certificate";
+
+ /**
+ * Returns an immutable Map containing the HTTP headers that were
+ * included with this request. The keys in this Map will be the header
+ * names, while the values will be a List of Strings containing each value
+ * that was included (either for a header that was listed several times,
+ * or one that accepts a comma-delimited list of values on a single line).
+ * In either of these cases, the values for the header name will be
+ * presented in the order that they were included in the request.
+ * <p>
+ * The keys in Map are case-insensitive.
+ *
+ * @return an immutable Map which can be used to access request headers
+ */
+ public abstract Map<String, List<String>> getRequestHeaders();
+
+ /**
+ * Returns the value of the specified request header. If the request
+ * did not include a header of the specified name, this method returns
+ * null. If there are multiple headers with the same name, this method
+ * returns the first header in the request. The header name is
+ * case-insensitive. This is a convienence method to get a header
+ * (instead of using the {@link #getRequestHeaders}).
+ *
+ * @param name the name of the request header
+ * @return returns the value of the requested header,
+ * or null if the request does not have a header of that name
+ */
+ public abstract String getRequestHeader(String name);
+
+ /**
+ * Returns a mutable Map into which the HTTP response headers can be stored
+ * and which will be transmitted as part of this response. The keys in the
+ * Map will be the header names, while the values must be a List of Strings
+ * containing each value that should be included multiple times
+ * (in the order that they should be included).
+ * <p>
+ * The keys in Map are case-insensitive.
+ *
+ * @return a mutable Map which can be used to set response headers.
+ */
+ public abstract Map<String, List<String>> getResponseHeaders();
+
+ /**
+ * Adds a response header with the given name and value. This method
+ * allows a response header to have multiple values. This is a
+ * convenience method to add a response header(instead of using the
+ * {link #getResponseHeaders()}).
+ *
+ * @param name the name of the header
+ * @param value the additional header value. If it contains octet string,
+ * it should be encoded according to
+ * RFC 2047 (http://www.ietf.org/rfc/rfc2047.txt)
+ *
+ * @see #getResponseHeaders
+ */
+ public abstract void addResponseHeader(String name, String value);
+
+ /**
+ * Returns the part of the request's URI from the protocol
+ * name up to the query string in the first line of the HTTP request.
+ * Container doesn't decode this string.
+ *
+ * @return the request URI
+ */
+ public abstract String getRequestURI();
+
+ /**
+ * Returns the context path of all the endpoints in an application.
+ * This path is the portion of the request URI that indicates the
+ * context of the request. The context path always comes first in a
+ * request URI. The path starts with a "/" character but does not
+ * end with a "/" character. If this method returns "", the request
+ * is for default context. The container does not decode this string.
+ *
+ * <p>
+ * Context path is used in computing the endpoint address. See
+ * {@link HttpContext#getPath}
+ *
+ * @return context path of all the endpoints in an application
+ * @see HttpContext#getPath
+ */
+ public abstract String getContextPath();
+
+ /**
+ * Get the HTTP request method
+ *
+ * @return the request method
+ */
+ public abstract String getRequestMethod();
+
+ /**
+ * Returns a {@link HttpContext} for this exchange.
+ * Container matches the request with the associated Endpoint's HttpContext
+ *
+ * @return the HttpContext for this exchange
+ */
+ public abstract HttpContext getHttpContext();
+
+ /**
+ * This must be called to end an exchange. Container takes care of
+ * closing request and response streams. This must be called so that
+ * the container can free or reuse underlying resources.
+ *
+ * @throws IOException if any i/o error
+ */
+ public abstract void close() throws IOException;
+
+ /**
+ * Returns a stream from which the request body can be read.
+ * Multiple calls to this method will return the same stream.
+ *
+ * @return the stream from which the request body can be read.
+ * @throws IOException if any i/o error during request processing
+ */
+ public abstract InputStream getRequestBody() throws IOException;
+
+ /**
+ * Returns a stream to which the response body must be
+ * written. {@link #setStatus}) must be called prior to calling
+ * this method. Multiple calls to this method (for the same exchange)
+ * will return the same stream.
+ *
+ * @return the stream to which the response body is written
+ * @throws IOException if any i/o error during response processing
+ */
+ public abstract OutputStream getResponseBody() throws IOException;
+
+ /**
+ * Sets the HTTP status code for the response.
+ *
+ * <p>
+ * This method must be called prior to calling {@link #getResponseBody}.
+ *
+ * @param status the response code to send
+ * @see #getResponseBody
+ */
+ public abstract void setStatus(int status);
+
+ /**
+ * Returns the unresolved address of the remote entity invoking
+ * this request.
+ *
+ * @return the InetSocketAddress of the caller
+ */
+ public abstract InetSocketAddress getRemoteAddress();
+
+ /**
+ * Returns the unresolved local address on which the request was received.
+ *
+ * @return the InetSocketAddress of the local interface
+ */
+ public abstract InetSocketAddress getLocalAddress();
+
+ /**
+ * Returns the protocol string from the request in the form
+ * <i>protocol/majorVersion.minorVersion</i>. For example,
+ * "HTTP/1.1"
+ *
+ * @return the protocol string from the request
+ */
+ public abstract String getProtocol();
+
+ /**
+ * Returns the name of the scheme used to make this request,
+ * for example: http, or https.
+ *
+ * @return name of the scheme used to make this request
+ */
+ public abstract String getScheme();
+
+ /**
+ * Returns the extra path information that follows the web service
+ * path but precedes the query string in the request URI and will start
+ * with a "/" character.
+ *
+ * <p>
+ * This can be used for {@link MessageContext#PATH_INFO}
+ *
+ * @return decoded extra path information of web service.
+ * It is the path that comes
+ * after the web service path but before the query string in the
+ * request URI
+ * <tt>null</tt> if there is no extra path in the request URI
+ */
+ public abstract String getPathInfo();
+
+ /**
+ * Returns the query string that is contained in the request URI
+ * after the path.
+ *
+ * <p>
+ * This can be used for {@link MessageContext#QUERY_STRING}
+ *
+ * @return undecoded query string of request URI, or
+ * <tt>null</tt> if the request URI doesn't have one
+ */
+ public abstract String getQueryString();
+
+ /**
+ * Returns an attribute that is associated with this
+ * <code>HttpExchange</code>. JAX-WS handlers and endpoints may then
+ * access the attribute via {@link MessageContext}.
+ * <p>
+ * Servlet containers must expose {@link MessageContext#SERVLET_CONTEXT},
+ * {@link MessageContext#SERVLET_REQUEST}, and
+ * {@link MessageContext#SERVLET_RESPONSE}
+ * as attributes.
+ *
+ * <p>If the request has been received by the container using HTTPS, the
+ * following information must be exposed as attributes. These attributes
+ * are {@link #REQUEST_CIPHER_SUITE}, and {@link #REQUEST_KEY_SIZE}.
+ * If there is a SSL certificate associated with the request, it must
+ * be exposed using {@link #REQUEST_X509CERTIFICATE}
+ *
+ * @param name attribute name
+ * @return the attribute value, or <tt>null</tt> if the attribute doesn't
+ * exist
+ */
+ public abstract Object getAttribute(String name);
+
+ /**
+ * Gives all the attribute names that are associated with
+ * this <code>HttpExchange</code>.
+ *
+ * @return set of all attribute names
+ * @see #getAttribute(String)
+ */
+ public abstract Set<String> getAttributeNames();
+
+ /**
+ * Returns the {@link Principal} that represents the authenticated
+ * user for this <code>HttpExchange</code>.
+ *
+ * @return Principal for an authenticated user, or
+ * <tt>null</tt> if not authenticated
+ */
+ public abstract Principal getUserPrincipal();
+
+ /**
+ * Indicates whether an authenticated user is included in the specified
+ * logical "role".
+ *
+ * @param role specifies the name of the role
+ * @return <tt>true</tt> if the user making this request belongs to a
+ * given role
+ */
+ public abstract boolean isUserInRole(String role);
+
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpHandler.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpHandler.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/HttpHandler.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.spi.http;
+
+import javax.xml.ws.Endpoint;
+import java.io.IOException;
+
+/**
+ * A handler which is invoked to process HTTP requests.
+ * <p>
+ * JAX-WS runtime provides the implementation for this and sets
+ * it using {@link HttpContext#setHandler(HttpHandler)} during
+ * {@link Endpoint#publish(HttpContext) }
+ *
+ * @author Jitendra Kotamraju
+ * @since JAX-WS 2.2
+ */
+public abstract class HttpHandler {
+ /**
+ * Handles a given request and generates an appropriate response.
+ * See {@link HttpExchange} for a description of the steps
+ * involved in handling an exchange. Container invokes this method
+ * when it receives an incoming request.
+ *
+ * @param exchange the exchange containing the request from the
+ * client and used to send the response
+ * @throws IOException when an I/O error happens during request
+ * handling
+ */
+ public abstract void handle(HttpExchange exchange) throws IOException;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/package-info.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/package-info.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/http/package-info.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ Provides HTTP SPI that is used for portable deployment of JAX-WS
+ web services in containers(for e.g. servlet containers). This SPI
+ is not for end developers but provides a way for the container
+ developers to deploy JAX-WS services portably.
+
+ <p>
+ The portable deployment is done as below:
+ <ol>
+ <li>Container creates {@link javax.xml.ws.Endpoint} objects for an
+ application. The necessary information to create Endpoint objects
+ may be got from web service deployment descriptor files.</li>
+ <li>Container needs to create {@link javax.xml.ws.spi.http.HttpContext}
+ objects for the deployment. For example, a HttpContext could be
+ created using servlet configuration(for e.g url-pattern) for the
+ web service in servlet container case.</li>
+ <li>Then publishes all the endpoints using
+ {@link javax.xml.ws.Endpoint#publish(HttpContext)}. During publish(),
+ JAX-WS runtime registers a {@link javax.xml.ws.spi.http.HttpHandler}
+ callback to handle incoming requests or
+ {@link javax.xml.ws.spi.http.HttpExchange} objects. The HttpExchange
+ object encapsulates a HTTP request and a response.
+ </ol>
+
+ <pre>
+ Container JAX-WS runtime
+ --------- --------------
+ 1. Creates Invoker1, ... InvokerN
+ 2. Provider.createEndpoint(...) --> 3. creates Endpoint1
+ configures Endpoint1
+ ...
+ 4. Provider.createEndpoint(...) --> 5. creates EndpointN
+ configures EndpointN
+ 6. Creates ApplicationContext
+ 7. creates HttpContext1, ... HttpContextN
+ 8. Endpoint1.publish(HttpContext1) --> 9. creates HttpHandler1
+ HttpContext1.setHandler(HttpHandler1)
+ ...
+ 10. EndpointN.publish(HttpContextN) --> 11. creates HttpHandlerN
+ HttpContextN.setHandler(HttpHandlerN)
+
+ </pre>
+
+ The request processing is done as below(for every request):
+ <pre>
+ Container JAX-WS runtime
+ --------- --------------
+ 1. Creates a HttpExchange
+ 2. Gets handler from HttpContext
+ 3. HttpHandler.handle(HttpExchange) --> 4. reads request from HttpExchange
+ <-- 5. Calls Invoker
+ 6. Invokes the actual instance
+ 7. Writes the response to HttpExchange
+ </pre>
+
+ <p>
+ The portable undeployment is done as below:
+ <pre>
+ Container
+ ---------
+ 1. @preDestroy on instances
+ 2. Endpoint1.stop()
+ ...
+ 3. EndpointN.stop()
+ </pre>
+
+ @author Jitendra Kotamraju
+ @since JAX-WS 2.2
+ */
+package javax.xml.ws.spi.http;
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/spi/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines SPIs for JAX-WS.
+</body>
+</html>
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.wsaddressing;
+
+
+import org.w3c.dom.Element;
+
+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.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 java.util.List;
+import java.util.Map;
+
+
+/**
+ * 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
+ at XmlRootElement(name="EndpointReference",namespace=W3CEndpointReference.NS)
+ at XmlType(name="EndpointReferenceType",namespace=W3CEndpointReference.NS)
+public final class W3CEndpointReference extends EndpointReference {
+
+ private final static JAXBContext w3cjc = getW3CJaxbContext();
+
+ 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;
+ this.elements = epr.elements;
+ this.attributes = epr.attributes;
+ } catch (JAXBException e) {
+ throw new WebServiceException("Error unmarshalling W3CEndpointReference " ,e);
+ } catch (ClassCastException e) {
+ throw new WebServiceException("Source did not contain W3CEndpointReference", e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeTo(Result result){
+ try {
+ Marshaller marshaller = w3cjc.createMarshaller();
+ marshaller.marshal(this, result);
+ } catch (JAXBException e) {
+ throw new WebServiceException("Error marshalling W3CEndpointReference. ", e);
+ }
+ }
+
+ private static JAXBContext getW3CJaxbContext() {
+ try {
+ return JAXBContext.newInstance(W3CEndpointReference.class);
+ } catch (JAXBException e) {
+ throw new WebServiceException("Error creating JAXBContext for W3CEndpointReference. ", e);
+ }
+ }
+
+ // 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;
+ // attributes and elements are not private for performance reasons
+ // (JAXB can bypass reflection)
+ @XmlAnyAttribute
+ Map<QName,String> attributes;
+ @XmlAnyElement
+ List<Element> elements;
+
+
+ private static class Address {
+ protected Address() {}
+ @XmlValue
+ String uri;
+ @XmlAnyAttribute
+ Map<QName,String> attributes;
+ }
+
+
+ private static class Elements {
+ protected Elements() {}
+ @XmlAnyElement
+ List<Element> elements;
+ @XmlAnyAttribute
+ Map<QName,String> attributes;
+ }
+
+ protected static final String NS = "http://www.w3.org/2005/08/addressing";
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,336 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+package javax.xml.ws.wsaddressing;
+
+
+import org.w3c.dom.Element;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.spi.Provider;
+
+
+/**
+ * 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 {
+ /**
+ * Creates a new <code>W3CEndpointReferenceBuilder</code> instance.
+ */
+ public W3CEndpointReferenceBuilder() {
+ referenceParameters = new ArrayList<Element>();
+ metadata = new ArrayList<Element>();
+ attributes = new HashMap<QName, String>();
+ elements = 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>interfaceName</code> as the
+ * <code>wsam:InterfaceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
+ * 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
+ *
+ * @param interfaceName The port type name of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>interfaceName</code> as <code>wsam:InterfaceName</code>
+ * element added to the <code>wsa:Metadata</code> element
+ */
+ public W3CEndpointReferenceBuilder interfaceName(QName interfaceName) {
+ this.interfaceName = interfaceName;
+ return this;
+ }
+
+ /**
+ * Sets the <code>serviceName</code> as the
+ * <code>wsam:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
+ * 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
+ *
+ * @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> as <code>wsam: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
+ * <code>wsam:ServiceName/@EndpointName</code> in the
+ * <code>wsa:Metadata</code> element. This method can only be called
+ * after the {@link #serviceName} method has been called.
+ * <p>
+ * See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
+ * 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
+ *
+ * @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> as
+ * <code>wsam:ServiceName/@EndpointName</code> in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @throws IllegalStateException, if the <code>serviceName</code>
+ * has not been set.
+ * @throws IllegalArgumentException, if the <code>endpointName</code>'s
+ * Namespace URI doesn't match <code>serviceName</code>'s Namespace URI
+ *
+ */
+ 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 referenced
+ * as <code>wsa:Metadata/@wsdli:wsdlLocation</code>. The namespace name
+ * for the wsdli:wsdlLocation's value can be taken from the WSDL itself.
+ *
+ * <p>
+ * See <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904/#refmetadatfromepr">
+ * 2.1 Referencing WSDL Metadata from an EPR</a> for more details.
+ *
+ * @param wsdlDocumentLocation The location of the WSDL document to
+ * be referenced 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 referenced.
+ */
+ public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation) {
+ this.wsdlDocumentLocation = 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.");
+ referenceParameters.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;
+ }
+
+ /**
+ * Adds an extension element to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:EndpointReference</code> element.
+ *
+ * @param element The extension element to be added to the
+ * <code>W3CEndpointReference</code>
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the extension <code>element</code> added to the
+ * <code>W3CEndpointReference</code> instance.
+ * @throws java.lang.IllegalArgumentException if <code>element</code>
+ * is <code>null</code>.
+ *
+ * @since JAX-WS 2.2
+ */
+ public W3CEndpointReferenceBuilder element(Element element) {
+ if (element == null) {
+ throw new IllegalArgumentException("The extension element cannot be null.");
+ }
+ elements.add(element);
+ return this;
+ }
+
+ /**
+ * Adds an extension attribute to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:EndpointReference</code> element.
+ *
+ * @param name The name of the extension attribute to be added to the
+ * <code>W3CEndpointReference</code>
+ * @param value extension attribute value
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the extension attribute added to the <code>W3CEndpointReference</code>
+ * instance.
+ * @throws java.lang.IllegalArgumentException if <code>name</code>
+ * or <code>value</code> is <code>null</code>.
+ *
+ * @since JAX-WS 2.2
+ */
+ public W3CEndpointReferenceBuilder attribute(QName name, String value) {
+ if (name == null || value == null) {
+ throw new IllegalArgumentException("The extension attribute name or value cannot be null.");
+ }
+ attributes.put(name, value);
+ 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>java.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 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>
+ * and does not represent a valid WSDL.
+ * </ul>
+ * @throws WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ *
+ */
+ public W3CEndpointReference build() {
+ if (elements.isEmpty() && attributes.isEmpty() && interfaceName == null) {
+ // 2.1 API
+ return Provider.provider().createW3CEndpointReference(address,
+ serviceName, endpointName, metadata, wsdlDocumentLocation,
+ referenceParameters);
+ }
+ return Provider.provider().createW3CEndpointReference(address,
+ interfaceName, serviceName, endpointName, metadata, wsdlDocumentLocation,
+ referenceParameters, elements, attributes);
+ }
+
+ private String address;
+ private List<Element> referenceParameters;
+ private List<Element> metadata;
+ private QName interfaceName;
+ private QName serviceName;
+ private QName endpointName;
+ private String wsdlDocumentLocation;
+ private Map<QName,String> attributes;
+ private List<Element> elements;
+}
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package-info.java
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package-info.java (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package-info.java 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+
+ at javax.xml.bind.annotation.XmlSchema(namespace=W3CEndpointReference.NS,
+ location="http://www.w3.org/2006/03/addressing/ws-addr.xsd")
+package javax.xml.ws.wsaddressing;
Added: projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package.html
===================================================================
--- projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package.html (rev 0)
+++ projects/specs/trunk/jboss-jaxws-api_2.2_spec/src/main/java/javax/xml/ws/wsaddressing/package.html 2010-05-18 01:17:48 UTC (rev 104893)
@@ -0,0 +1,5 @@
+<html>
+<body>
+This package defines APIs related to WS-Addressing.
+</body>
+</html>
More information about the jboss-cvs-commits
mailing list