Author: alessio.soldano(a)jboss.com
Date: 2009-01-23 10:32:14 -0500 (Fri, 23 Jan 2009)
New Revision: 9107
Added:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl
Removed:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/handler/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/soap/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/spi/
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/wsaddressing/
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java
stack/native/trunk/src/main/scripts/assembly-bin-dist.xml
Log:
[JBWS-2441] Merging jaxws21 branch to trunk (svn merge -r 9008:HEAD
https://svn.jboss.org/repos/jbossws/stack/native/branches/jaxws21)
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/FastInfoset.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.feature.FastInfosetFeature;
/**
@@ -37,6 +39,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature( id = FastInfosetFeature.ID)
+@WebServiceFeatureAnnotation(id = FastInfosetFeature.ID, bean =
FastInfosetFeature.class)
public @interface FastInfoset {
/**
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/JsonEncoding.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.feature.JsonEncodingFeature;
/**
@@ -37,6 +39,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature(id = JsonEncodingFeature.ID)
+@WebServiceFeatureAnnotation(id = JsonEncodingFeature.ID, bean =
JsonEncodingFeature.class)
public @interface JsonEncoding {
/**
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/annotation/SchemaValidation.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -26,6 +26,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.jboss.ws.extensions.validation.StrictlyValidErrorHandler;
import org.jboss.ws.feature.SchemaValidationFeature;
@@ -39,6 +41,7 @@
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = { ElementType.TYPE })
@EndpointFeature( id = SchemaValidationFeature.ID)
+@WebServiceFeatureAnnotation(id = SchemaValidationFeature.ID, bean =
SchemaValidationFeature.class)
public @interface SchemaValidation
{
/**
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/CommonBindingProvider.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -23,12 +23,16 @@
import java.util.Observable;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
import org.jboss.logging.Logger;
import org.jboss.ws.core.jaxrpc.SOAP11BindingJAXRPC;
import org.jboss.ws.core.jaxrpc.SOAP12BindingJAXRPC;
+import org.jboss.ws.core.jaxws.binding.EndpointReferenceUtil;
import org.jboss.ws.core.jaxws.binding.HTTPBindingJAXWS;
import org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS;
import org.jboss.ws.core.jaxws.binding.SOAP12BindingJAXWS;
@@ -103,6 +107,42 @@
return binding;
}
+ public EndpointReference getEndpointReference()
+ {
+ if (binding instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get EPR for BindingProvider
instances using the XML/HTTP binding");
+ }
+ return getEndpointReference(W3CEndpointReference.class);
+ }
+
+ public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz)
+ {
+ // Conformance 4.5 (javax.xml.ws.BindingProvider.getEndpointReference): An
implementation
+ // MUST be able to return an javax.xml.ws.EndpointReference for the target endpoint
if a SOAP binding
+ // is being used. If the BindingProvider instance has a binding that is either SOAP
1.1/HTTP or
+ // SOAP 1.2/HTTP, then a W3CEndpointReference MUST be returned. If the binding is
XML/HTTP an
+ // java.lang.UnsupportedOperationExceptionMUST be thrown.
+
+ if (binding instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get epr for BindingProvider
instances using the XML/HTTP binding");
+ }
+ W3CEndpointReferenceBuilder builder = new W3CEndpointReferenceBuilder();
+ if (epMetaData != null)
+ {
+ builder.address(epMetaData.getEndpointAddress());
+ builder.serviceName(epMetaData.getServiceMetaData().getServiceName());
+ builder.endpointName(epMetaData.getPortName());
+ builder.wsdlDocumentLocation(epMetaData.getEndpointAddress() +
"?wsdl");
+ }
+ else
+ {
+ log.warn("Cannot get endpoint reference info from endpoint
metadata!");
+ }
+ return EndpointReferenceUtil.transform(clazz, builder.build());
+ }
+
public void update(Observable observable, Object object)
{
if(log.isDebugEnabled()) log.debug("Update config: " + object);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/DynamicWrapperGenerator.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -41,10 +41,12 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttachmentRef;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
import org.jboss.logging.Logger;
@@ -122,7 +124,7 @@
parameter.getName(), parameter.getVariable(),
parameter.getTypeArguments(),
new boolean[] {parameter.isSwaRef(), parameter.isXop()},
- false
+ false, parameter.isXmlList(), parameter.getAdapter()
);
}
clazz.stopPruning(!prune);
@@ -159,7 +161,7 @@
addProperty(
clazz, prop.getReturnType().getName(),
new QName(prop.getName()), prop.getName(), null,
- new boolean[] {false, false}, prop.isTransientAnnotated()
+ new boolean[] {false, false}, prop.isTransientAnnotated(), false, null
);
clazz.stopPruning(!prune);
@@ -216,7 +218,7 @@
private void addProperty(CtClass clazz, String typeName,
QName name, String variable, String[] typeArguments,
- boolean[] attachments, boolean xmlTransient)
+ boolean[] attachments, boolean xmlTransient, boolean xmlList,
String adapter)
throws CannotCompileException, NotFoundException
{
ConstPool constPool = clazz.getClassFile().getConstPool();
@@ -232,6 +234,12 @@
JavassistUtils.addSignature(field, typeSignature);
}
+
+ // Conformance 3.14 (use of JAXB annotations): An implementation MUST honor any
JAXB annotation that
+ // exists on an SEI method or parameter to assure that the proper XML infoset is
used when marshalling/
+ // unmarshalling the the return value or parameters of the method. The set of JAXB
annotations that MUST be
+ // supported are:
javax.xml.bind.annotation.XmlAttachementRef,javax.xml.bind.annotation.XmlList,
+ // javax.xml.bind.XmlMimeType and
javax.xml.bind.annotation.adapters.Xml.JavaTypeAdapter
JavassistUtils.Annotation annotation;
// Add @XmlElement
if (!xmlTransient)
@@ -261,6 +269,19 @@
annotation = JavassistUtils.createAnnotation(XmlTransient.class, constPool);
annotation.markField(field);
}
+ //@XmlList
+ if(xmlList)
+ {
+ annotation = JavassistUtils.createAnnotation(XmlList.class, constPool);
+ annotation.markField(field);
+ }
+ //@XmlJavaTypeAdapter
+ if (adapter != null)
+ {
+ annotation = JavassistUtils.createAnnotation(XmlJavaTypeAdapter.class,
constPool);
+ annotation.addClassParameter("value", adapter);
+ annotation.markField(field);
+ }
clazz.addField(field);
// Add accessor methods
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingExt.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -23,7 +23,7 @@
import java.util.List;
-import javax.xml.ws.Binding21;
+import javax.xml.ws.Binding;
import javax.xml.ws.handler.Handler;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
@@ -34,7 +34,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public interface BindingExt extends Binding21
+public interface BindingExt extends Binding
{
/** Get the handler chain for a given type */
List<Handler> getHandlerChain(HandlerType handlerType);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/BindingProviderImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -25,13 +25,11 @@
import java.util.Map;
import javax.xml.ws.Binding;
-import javax.xml.ws.EndpointReference;
+import javax.xml.ws.BindingProvider;
import javax.xml.ws.WebServiceException;
-import javax.xml.ws.wsaddressing.BindingProvider21;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.http.HTTPBinding;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.core.CommonBindingProvider;
import org.jboss.ws.metadata.umdm.EndpointMetaData;
import org.jboss.ws.metadata.umdm.EndpointMetaData.Type;
@@ -43,7 +41,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 04-Jul-2006
*/
-public class BindingProviderImpl extends CommonBindingProvider implements
BindingProvider21
+public class BindingProviderImpl extends CommonBindingProvider implements
BindingProvider
{
private Map<String, Object> requestContext = new HashMap<String,
Object>();
private Map<String, Object> responseContext = new HashMap<String,
Object>();
@@ -94,14 +92,4 @@
{
return (Binding)binding;
}
-
- public EndpointReference getEndpointReference()
- {
- throw new NotImplementedException();
- }
-
- public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz)
- {
- throw new NotImplementedException();
- }
}
Copied:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java
(from rev 9105,
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java)
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java
(rev 0)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/binding/EndpointReferenceUtil.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ws.core.jaxws.binding;
+
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+/**
+ * Transforms an EPR to an instance of a given EndpointReference class
+ *
+ * @since 12-Jan-2009
+ * @author alessio.soldano(a)jboss.com
+ *
+ */
+public class EndpointReferenceUtil {
+
+ public static <T extends EndpointReference> T transform(Class<T> clazz,
EndpointReference epr) {
+ assert epr != null;
+ if (clazz.isAssignableFrom(W3CEndpointReference.class)) {
+ if (epr instanceof W3CEndpointReference) {
+ return (T) epr;
+ }
+ else
+ {
+ throw new WebServiceException("Unsupported EndpointReference: " +
epr);
+ }
+ }
+ //transformations from different types of EndpointReference could be supported in
future...
+
+ throw new WebServiceException("EndpointReference of type " + clazz +
" not supported.");
+ }
+}
Copied:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
(from rev 9105,
stack/native/branches/jaxws21/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java)
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java
(rev 0)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientFeatureProcessor.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,182 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.ws.core.jaxws.client;
+
+import java.util.List;
+
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.core.jaxws.binding.BindingExt;
+import org.jboss.ws.extensions.addressing.jaxws.WSAddressingClientHandler;
+import org.jboss.ws.feature.FastInfosetFeature;
+import org.jboss.ws.feature.JsonEncodingFeature;
+import org.jboss.ws.feature.SchemaValidationFeature;
+import org.jboss.ws.metadata.umdm.EndpointMetaData;
+import org.jboss.ws.metadata.umdm.FeatureSet;
+import org.jboss.ws.metadata.umdm.ServiceMetaData;
+import org.jboss.ws.metadata.wsdl.Extendable;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.wsf.common.DOMWriter;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
+
+/**
+ * Process WebServiceFeature provided on client side
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 14-Jan-2009
+ *
+ */
+public class ClientFeatureProcessor
+{
+ private static Logger log = Logger.getLogger(ClientFeatureProcessor.class);
+
+ private static FeatureSet supportedFeatures = new FeatureSet();
+ static
+ {
+ supportedFeatures.addFeature(new FastInfosetFeature());
+ supportedFeatures.addFeature(new JsonEncodingFeature());
+ supportedFeatures.addFeature(new SchemaValidationFeature());
+ supportedFeatures.addFeature(new AddressingFeature());
+ supportedFeatures.addFeature(new MTOMFeature());
+ supportedFeatures.addFeature(new RespectBindingFeature());
+ }
+
+ public static <T> void processFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ {
+ if (!supportedFeatures.hasFeature(feature.getClass()))
+ {
+ throw new IllegalArgumentException("Unsupported feature: " +
feature);
+ }
+ processAddressingFeature(feature, epMetaData, stub);
+ processMTOMFeature(feature, epMetaData, stub);
+ processRespectBindingFeature(feature, epMetaData, stub);
+ epMetaData.addFeature(feature);
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an
AddressingFeature or not.
+ * In the former case, addressing is setup.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private static <T> void processAddressingFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof AddressingFeature && feature.isEnabled())
+ {
+ BindingExt bindingExt = (BindingExt)((BindingProvider)stub).getBinding();
+ List<Handler> handlers = bindingExt.getHandlerChain(HandlerType.POST);
+ handlers.add(new WSAddressingClientHandler());
+ bindingExt.setHandlerChain(handlers, HandlerType.POST);
+ }
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an
MTOMFeature or not.
+ * In the former case, mtom is setup.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ private static <T> void processMTOMFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof MTOMFeature)
+ {
+ SOAPBinding binding = (SOAPBinding)((BindingProvider)stub).getBinding();
+ binding.setMTOMEnabled(feature.isEnabled());
+ }
+ }
+
+ /**
+ * Returns true or false depending on the provided WebServiceFeature being an
RespectBindingFeature or not.
+ * In the former case, the respect binding checks are performed.
+ *
+ * @param <T>
+ * @param feature
+ * @param epMetaData
+ * @param stub
+ * @return
+ */
+ private static <T> void processRespectBindingFeature(WebServiceFeature feature,
EndpointMetaData epMetaData, T stub)
+ {
+ if (feature instanceof RespectBindingFeature && feature.isEnabled())
+ {
+ ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+ WSDLDefinitions wsdlDefinitions = serviceMetaData.getWsdlDefinitions();
+
+ WSDLService wsdlService =
wsdlDefinitions.getService(serviceMetaData.getServiceName());
+ if (wsdlService != null)
+ {
+ WSDLEndpoint wsdlEndpoint =
wsdlService.getEndpoint(epMetaData.getPortName());
+ if (wsdlEndpoint != null)
+ {
+ // Conformance 6.11 (javax.xml.ws.RespectBindingFeature): When the
javax.xml.ws.RespectBindingFeature
+ // is enabled, a JAX-WS implementation MUST inspect the wsdl:binding at
runtime to determine
+ // result and parameter bindings as well as any wsdl:extensions that have
the required=true attribute.
+ // All required wsdl:extensions MUST be supported and honored by a JAX-WS
implementation unless a
+ // specific wsdl:extension has be explicitly disabled via a
WebServiceFeature.
+ checkNotUnderstoodExtElements(wsdlEndpoint, epMetaData);
+ WSDLBinding wsdlBinding =
wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ checkNotUnderstoodExtElements(wsdlBinding, epMetaData);
+ }
+ else
+ {
+ log.warn("Cannot find port " + epMetaData.getPortName());
+ }
+ }
+ }
+ }
+
+ private static void checkNotUnderstoodExtElements(Extendable extendable,
EndpointMetaData epMetaData)
+ {
+ List<WSDLExtensibilityElement> notUnderstoodList =
extendable.getNotUnderstoodExtElements();
+ for (WSDLExtensibilityElement el : notUnderstoodList)
+ {
+ boolean disabledByFeature = false; //TODO [JBWS-2459]
+ if (el.isRequired() && !disabledByFeature)
+ {
+ String s = DOMWriter.printNode(el.getElement(), true);
+ throw new WebServiceException("RespectBindingFeature enabled and a
required not understood element was found: " + s);
+ }
+ }
+ }
+
+}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -48,7 +48,6 @@
import javax.xml.ws.http.HTTPException;
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.soap.SOAPFaultException;
-import javax.xml.ws.wsaddressing.BindingProvider21;
import org.jboss.remoting.transport.http.HTTPMetadataConstants;
import org.jboss.util.NotImplementedException;
@@ -87,7 +86,7 @@
* @author Thomas.Diesler(a)jboss.org
* @since 04-Jul-2006
*/
-public class ClientImpl extends CommonClient implements
org.jboss.ws.extensions.wsrm.api.RMProvider, BindingProvider21
+public class ClientImpl extends CommonClient implements
org.jboss.ws.extensions.wsrm.api.RMProvider, BindingProvider
{
// the associated endpoint meta data
@@ -454,12 +453,12 @@
public EndpointReference getEndpointReference()
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference();
}
public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz)
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference(clazz);
}
public EndpointConfigMetaData getEndpointConfigMetaData()
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/DispatchImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -38,7 +38,6 @@
import javax.xml.transform.Source;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Binding;
-import javax.xml.ws.Binding21;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.EndpointReference;
@@ -306,7 +305,7 @@
private RemoteConnection getRemotingConnection()
{
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -433,7 +432,7 @@
}
}
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -455,7 +454,7 @@
private Object getReturnObject(MessageAbstraction resMsg)
{
- String bindingID = ((Binding21)bindingProvider.getBinding()).getBindingID();
+ String bindingID = bindingProvider.getBinding().getBindingID();
if (EndpointMetaData.SUPPORTED_BINDINGS.contains(bindingID) == false)
throw new IllegalStateException("Unsupported binding: " + bindingID);
@@ -535,12 +534,12 @@
public EndpointReference getEndpointReference()
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference();
}
public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz)
{
- throw new NotImplementedException();
+ return bindingProvider.getEndpointReference(clazz);
}
public String getConfigFile()
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/EndpointImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -21,37 +21,43 @@
*/
package org.jboss.ws.core.jaxws.spi;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.concurrent.Executor;
+
+import javax.xml.transform.Source;
+import javax.xml.ws.Binding;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServicePermission;
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
+
import org.jboss.logging.Logger;
-import org.jboss.util.NotImplementedException;
import org.jboss.ws.core.jaxws.binding.BindingProviderImpl;
+import org.jboss.ws.core.jaxws.binding.EndpointReferenceUtil;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.http.HttpContext;
import org.jboss.wsf.spi.http.HttpServer;
import org.jboss.wsf.spi.http.HttpServerFactory;
+import org.jboss.wsf.spi.management.ServerConfig;
+import org.jboss.wsf.spi.management.ServerConfigFactory;
import org.w3c.dom.Element;
-import javax.xml.transform.Source;
-import javax.xml.ws.Binding;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.Endpoint21;
-import javax.xml.ws.EndpointReference;
-import javax.xml.ws.WebServicePermission;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.concurrent.Executor;
-
/**
* A Web service endpoint implementation.
*
* @author Thomas.Diesler(a)jboss.com
* @since 07-Jul-2006
*/
-public class EndpointImpl extends Endpoint21
+public class EndpointImpl extends Endpoint
{
// provide logging
private final Logger log = Logger.getLogger(EndpointImpl.class);
@@ -62,11 +68,12 @@
private Object implementor;
private Executor executor;
private List<Source> metadata;
- private BindingProvider bindingProvider;
+ private BindingProviderImpl bindingProvider;
private Map<String, Object> properties = new HashMap<String, Object>();
private HttpContext serverContext;
private boolean isPublished;
private boolean isDestroyed;
+ private URI address;
public EndpointImpl(String bindingId, Object implementor)
{
@@ -99,18 +106,17 @@
* @param address specifying the address to use. The address must be compatible with
the binding specified at the time the endpoint was created.
*/
@Override
- public void publish(String address)
+ public void publish(String addr)
{
- log.debug("publish: " + address);
+ log.debug("publish: " + addr);
- URI addrURI;
try
{
- addrURI = new URI(address);
+ this.address = new URI(addr);
}
catch (URISyntaxException e)
{
- throw new IllegalArgumentException("Invalid address: " + address);
+ throw new IllegalArgumentException("Invalid address: " + addr);
}
// Check with the security manger
@@ -122,7 +128,7 @@
httpServer.setProperties(properties);
httpServer.start();
- String path = addrURI.getPath();
+ String path = address.getPath();
String contextRoot = "/" + new StringTokenizer(path,
"/").nextToken();
HttpContext context = httpServer.createContext(contextRoot);
@@ -168,11 +174,30 @@
if (context instanceof HttpContext)
{
serverContext = (HttpContext)context;
+ address = getAddressFromConfigAndContext(serverContext);
HttpServer httpServer = serverContext.getHttpServer();
httpServer.publish(serverContext, this);
isPublished = true;
}
}
+
+ private static URI getAddressFromConfigAndContext(HttpContext context)
+ {
+ try
+ {
+ SPIProvider provider = SPIProviderResolver.getInstance().getProvider();
+ ServerConfigFactory spi = provider.getSPI(ServerConfigFactory.class);
+ ServerConfig serverConfig = spi.getServerConfig();
+ String host = serverConfig.getWebServiceHost();
+ int port = serverConfig.getWebServicePort();
+ String hostAndPort = host + (port > 0 ? ":" + port : "");
+ return new URI("http://" + hostAndPort + context.getContextRoot());
+ }
+ catch (URISyntaxException e)
+ {
+ throw new WebServiceException("Error while getting endpoint address from
context!", e);
+ }
+ }
@Override
public void stop()
@@ -261,12 +286,27 @@
@Override
public EndpointReference getEndpointReference(Element... referenceParameters)
{
- throw new NotImplementedException();
+ return getEndpointReference(W3CEndpointReference.class, referenceParameters);
}
@Override
public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz, Element... referenceParameters)
{
- throw new NotImplementedException();
+ if (isDestroyed || !isPublished)
+ throw new WebServiceException("Cannot get EPR for an unpubblished or
already destroyed endpoint!");
+ if (getBinding() instanceof HTTPBinding )
+ {
+ throw new UnsupportedOperationException("Cannot get epr when using the
XML/HTTP binding");
+ }
+ W3CEndpointReferenceBuilder builder = new W3CEndpointReferenceBuilder();
+ builder.address(address.toString());
+ builder.wsdlDocumentLocation(address.toString() + "?wsdl");
+ //TODO set other parameters in the builder
+ if (referenceParameters != null &&
W3CEndpointReference.class.getName().equals(clazz.getName()))
+ {
+ for (Element el : referenceParameters)
+ builder.referenceParameter(el);
+ }
+ return EndpointReferenceUtil.transform(clazz, builder.build());
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ProviderImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -30,15 +30,14 @@
import javax.xml.ws.Endpoint;
import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceException;
import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.soap.SOAPBinding;
-import javax.xml.ws.spi.Provider21;
+import javax.xml.ws.spi.Provider;
import javax.xml.ws.spi.ServiceDelegate;
-import javax.xml.ws.spi.ServiceDelegate21;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
-import org.jboss.util.NotImplementedException;
import org.jboss.wsf.common.DOMUtils;
import org.w3c.dom.Element;
@@ -48,7 +47,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 03-May-2006
*/
-public class ProviderImpl extends Provider21
+public class ProviderImpl extends Provider
{
// 6.2 Conformance (Concrete javax.xml.ws.spi.Provider required): An implementation
MUST provide
// a concrete class that extends javax.xml.ws.spi.Provider. Such a class MUST have a
public constructor
@@ -110,13 +109,6 @@
}
@Override
- public <T extends EndpointReference> T createEndpointReference(Class<T>
clazz, QName serviceName, QName portName, Source wsdlDocumentLocation,
- Element... referenceParameters)
- {
- throw new NotImplementedException();
- }
-
- @Override
public W3CEndpointReference createW3CEndpointReference(String address, QName
serviceName, QName portName, List<Element> metadata, String wsdlDocumentLocation,
List<Element> referenceParameters)
{
@@ -140,13 +132,23 @@
wsdlLocation = w3c.getWsdlLocation();
serviceName = w3c.getServiceName();
}
- ServiceDelegate21 delegate = (ServiceDelegate21)createServiceDelegate(wsdlLocation,
serviceName, Service.class);
+ ServiceDelegate delegate = createServiceDelegate(wsdlLocation, serviceName,
Service.class);
return delegate.getPort(epr, sei, features);
}
@Override
public EndpointReference readEndpointReference(Source eprInfoset)
{
- throw new NotImplementedException();
+ if (eprInfoset == null)
+ throw new NullPointerException("Provided eprInfoset cannot be null");
+ try
+ {
+ //we currently support W3CEndpointReference only
+ return new W3CEndpointReference(eprInfoset);
+ }
+ catch (Exception e)
+ {
+ throw new WebServiceException(e);
+ }
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/spi/ServiceDelegateImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -49,11 +49,12 @@
import javax.xml.ws.addressing.JAXWSAConstants;
import javax.xml.ws.addressing.ReferenceParameters;
import javax.xml.ws.handler.HandlerResolver;
-import javax.xml.ws.spi.ServiceDelegate21;
+import javax.xml.ws.spi.ServiceDelegate;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import org.jboss.logging.Logger;
import org.jboss.ws.core.StubExt;
+import org.jboss.ws.core.jaxws.client.ClientFeatureProcessor;
import org.jboss.ws.core.jaxws.client.ClientImpl;
import org.jboss.ws.core.jaxws.client.ClientProxy;
import org.jboss.ws.core.jaxws.client.DispatchImpl;
@@ -89,7 +90,7 @@
* @author Thomas.Diesler(a)jboss.com
* @since 03-May-2006
*/
-public class ServiceDelegateImpl extends ServiceDelegate21
+public class ServiceDelegateImpl extends ServiceDelegate
{
// provide logging
private final Logger log = Logger.getLogger(ServiceDelegateImpl.class);
@@ -461,9 +462,6 @@
@Override
public <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
Dispatch<T> dispatch = createDispatch(portName, type, mode);
initWebserviceFeatures(dispatch, features);
return dispatch;
@@ -472,9 +470,6 @@
@Override
public <T> Dispatch<T> createDispatch(EndpointReference epr,
Class<T> type, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
QName portName = null;
if (epr instanceof W3CEndpointReference)
{
@@ -491,9 +486,6 @@
@Override
public Dispatch<Object> createDispatch(QName portName, JAXBContext context, Mode
mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
Dispatch<Object> dispatch = createDispatch(portName, context, mode);
initWebserviceFeatures(dispatch, features);
return dispatch;
@@ -502,9 +494,6 @@
@Override
public Dispatch<Object> createDispatch(EndpointReference epr, JAXBContext
context, Mode mode, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
QName portName = null;
if (epr instanceof W3CEndpointReference)
{
@@ -521,9 +510,6 @@
@Override
public <T> T getPort(QName portName, Class<T> sei, WebServiceFeature...
features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(portName, sei);
initWebserviceFeatures(port, features);
return port;
@@ -532,9 +518,6 @@
@Override
public <T> T getPort(EndpointReference epr, Class<T> sei,
WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(sei);
initAddressingProperties((BindingProvider)port, epr);
initWebserviceFeatures(port, features);
@@ -544,9 +527,6 @@
@Override
public <T> T getPort(Class<T> sei, WebServiceFeature... features)
{
- if (features != null)
- log.warn("WebServiceFeature not implemented");
-
T port = getPort(sei);
initWebserviceFeatures(port, features);
return port;
@@ -559,7 +539,7 @@
EndpointMetaData epMetaData = ((StubExt)stub).getEndpointMetaData();
for (WebServiceFeature feature : features)
{
- epMetaData.addFeature(feature);
+ ClientFeatureProcessor.processFeature(feature, epMetaData, stub);
}
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/utils/JavassistUtils.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -31,6 +31,7 @@
import javassist.bytecode.MethodInfo;
import javassist.bytecode.SignatureAttribute;
import javassist.bytecode.annotation.ArrayMemberValue;
+import javassist.bytecode.annotation.ClassMemberValue;
import javassist.bytecode.annotation.EnumMemberValue;
import javassist.bytecode.annotation.StringMemberValue;
@@ -105,6 +106,12 @@
enumValue.setValue(value.name());
annotation.addMemberValue(name, enumValue);
}
+
+ public void addClassParameter(String name, String value)
+ {
+ ClassMemberValue classValue = new ClassMemberValue(value, constPool);
+ annotation.addMemberValue(name, classValue);
+ }
public void addParameter(String name, String[] values)
{
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingClientHandler.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -27,6 +27,7 @@
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.ws.core.CommonMessageContext;
import org.jboss.wsf.common.handler.GenericSOAPHandler;
+import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
@@ -43,6 +44,8 @@
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
/**
@@ -131,6 +134,8 @@
msgContext.setScope(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES,
Scope.APPLICATION);
msgContext.put(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND,
addrProps);
msgContext.setScope(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_INBOUND,
Scope.APPLICATION);
+ msgContext.put(MessageContext.REFERENCE_PARAMETERS,
convertToElementList(addrProps.getReferenceParameters().getElements()));
+ msgContext.setScope(MessageContext.REFERENCE_PARAMETERS, Scope.APPLICATION);
}
}
catch (SOAPException ex)
@@ -140,4 +145,18 @@
return true;
}
+
+ private static List<Element> convertToElementList(List<Object> objects)
+ {
+ if (objects == null) return null;
+ List<Element> elements = new LinkedList<Element>();
+ for (Object o : objects)
+ {
+ if (o instanceof Element)
+ {
+ elements.add((Element)o);
+ }
+ }
+ return elements;
+ }
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/addressing/jaxws/WSAddressingServerHandler.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -27,6 +27,7 @@
import org.jboss.ws.extensions.addressing.metadata.AddressingOpMetaExt;
import org.jboss.ws.metadata.umdm.OperationMetaData;
import org.jboss.wsf.common.handler.GenericSOAPHandler;
+import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
@@ -40,6 +41,8 @@
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
/**
@@ -82,9 +85,24 @@
addrProps.readHeaders(soapMessage);
msgContext.put(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND, addrProps);
msgContext.setScope(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND,
Scope.APPLICATION);
-
+ msgContext.put(MessageContext.REFERENCE_PARAMETERS,
convertToElementList(addrProps.getReferenceParameters().getElements()));
+ msgContext.setScope(MessageContext.REFERENCE_PARAMETERS, Scope.APPLICATION);
return true;
}
+
+ private static List<Element> convertToElementList(List<Object> objects)
+ {
+ if (objects == null) return null;
+ List<Element> elements = new LinkedList<Element>();
+ for (Object o : objects)
+ {
+ if (o instanceof Element)
+ {
+ elements.add((Element)o);
+ }
+ }
+ return elements;
+ }
protected boolean handleOutbound(MessageContext msgContext)
{
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/eventing/jaxws/EventingService.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -27,7 +27,7 @@
import javax.xml.namespace.QName;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
/**
@@ -37,8 +37,7 @@
*
*/
@WebServiceClient(name = "EventingService", targetNamespace =
"http://schemas.xmlsoap.org/ws/2004/08/eventing", wsdlLocation =
"wind.wsdl")
-public class EventingService
- extends Service21
+public class EventingService extends Service
{
private final static URL WSDL_LOCATION;
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/EndpointFeatureProcessor.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -24,17 +24,41 @@
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.net.URL;
+import java.util.List;
+import javax.xml.ws.RespectBinding;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.MTOMFeature;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+import org.jboss.logging.Logger;
import org.jboss.ws.WSException;
import org.jboss.ws.annotation.FastInfoset;
import org.jboss.ws.annotation.JsonEncoding;
import org.jboss.ws.annotation.SchemaValidation;
+import org.jboss.ws.extensions.addressing.jaxws.WSAddressingServerHandler;
import org.jboss.ws.feature.FastInfosetFeature;
import org.jboss.ws.feature.JsonEncodingFeature;
import org.jboss.ws.feature.SchemaValidationFeature;
+import org.jboss.ws.metadata.umdm.HandlerMetaDataJAXWS;
import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
+import org.jboss.ws.metadata.umdm.ServiceMetaData;
+import org.jboss.ws.metadata.wsdl.Extendable;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.wsf.common.DOMUtils;
+import org.jboss.wsf.common.DOMWriter;
import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData.HandlerType;
import org.xml.sax.ErrorHandler;
/**
@@ -45,28 +69,143 @@
*/
public class EndpointFeatureProcessor
{
+ private static final Logger log = Logger.getLogger(EndpointFeatureProcessor.class);
+
protected void processEndpointFeatures(Deployment dep, ServerEndpointMetaData
sepMetaData, Class<?> sepClass)
{
for (Annotation an : sepClass.getAnnotations())
{
- if (an.annotationType() == SchemaValidation.class)
+ WebServiceFeatureAnnotation wsfa =
an.annotationType().getAnnotation(WebServiceFeatureAnnotation.class);
+ if (wsfa != null)
{
- processSchemaValidation(dep, sepMetaData, sepClass);
+ if (an.annotationType() == Addressing.class)
+ {
+ Addressing anFeature = sepClass.getAnnotation(Addressing.class);
+ AddressingFeature feature = new AddressingFeature(anFeature.enabled(),
anFeature.required());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == MTOM.class)
+ {
+ MTOM anFeature = sepClass.getAnnotation(MTOM.class);
+ MTOMFeature feature = new MTOMFeature(anFeature.enabled(),
anFeature.threshold());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == SchemaValidation.class)
+ {
+ processSchemaValidation(dep, sepMetaData, sepClass);
+ }
+ else if (an.annotationType() == FastInfoset.class)
+ {
+ FastInfoset anFeature = sepClass.getAnnotation(FastInfoset.class);
+ FastInfosetFeature feature = new FastInfosetFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == JsonEncoding.class)
+ {
+ JsonEncoding anFeature = sepClass.getAnnotation(JsonEncoding.class);
+ JsonEncodingFeature feature = new
JsonEncodingFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else if (an.annotationType() == RespectBinding.class)
+ {
+ RespectBinding anFeature = sepClass.getAnnotation(RespectBinding.class);
+ RespectBindingFeature feature = new
RespectBindingFeature(anFeature.enabled());
+ sepMetaData.addFeature(feature);
+ }
+ else
+ {
+ throw new WebServiceException("Unsupported feature: " +
wsfa.bean());
+ }
}
- else if (an.annotationType() == FastInfoset.class)
+ }
+ }
+
+ protected void setupEndpointFeatures(ServerEndpointMetaData sepMetaData)
+ {
+ setupAddressingFeature(sepMetaData);
+ setupMTOMFeature(sepMetaData);
+ setupRespectBindingFeature(sepMetaData); //this need to be processed last
+ }
+
+ private static void setupAddressingFeature(ServerEndpointMetaData sepMetaData)
+ {
+ AddressingFeature addressingFeature =
sepMetaData.getFeature(AddressingFeature.class);
+ if (addressingFeature != null && addressingFeature.isEnabled())
+ {
+ log.debug("AddressingFeature found, installing WS-Addressing
post-handler");
+ HandlerMetaDataJAXWS hmd = new HandlerMetaDataJAXWS(HandlerType.POST);
+ hmd.setEndpointMetaData(sepMetaData);
+ hmd.setHandlerClassName(WSAddressingServerHandler.class.getName());
+ hmd.setHandlerName("WSAddressing Handler");
+ hmd.setProtocolBindings("##SOAP11_HTTP ##SOAP12_HTTP ##SOAP11_HTTP_MTOM
##SOAP12_HTTP_MTOM");
+ sepMetaData.addHandler(hmd);
+ }
+ }
+
+ private static void setupMTOMFeature(ServerEndpointMetaData sepMetaData)
+ {
+ MTOMFeature mtomFeature = sepMetaData.getFeature(MTOMFeature.class);
+ if (mtomFeature != null && mtomFeature.isEnabled())
+ {
+ String bindingId = sepMetaData.getBindingId();
+ if (SOAPBinding.SOAP11HTTP_BINDING.equals(bindingId))
{
- FastInfoset anFeature = sepClass.getAnnotation(FastInfoset.class);
- FastInfosetFeature feature = new FastInfosetFeature(anFeature.enabled());
- sepMetaData.addFeature(feature);
+ log.debug("MTOMFeature found, setting binding to " +
SOAPBinding.SOAP11HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP11HTTP_MTOM_BINDING);
}
- else if (an.annotationType() == JsonEncoding.class)
+ else if (SOAPBinding.SOAP12HTTP_BINDING.equals(bindingId))
{
- JsonEncoding anFeature = sepClass.getAnnotation(JsonEncoding.class);
- JsonEncodingFeature feature = new JsonEncodingFeature(anFeature.enabled());
- sepMetaData.addFeature(feature);
+ log.debug("MTOMFeature found, setting binding to " +
SOAPBinding.SOAP12HTTP_MTOM_BINDING);
+ sepMetaData.setBindingId(SOAPBinding.SOAP12HTTP_MTOM_BINDING);
}
}
}
+
+ private static void setupRespectBindingFeature(ServerEndpointMetaData sepMetaData)
+ {
+ RespectBindingFeature respectBindingFeature =
sepMetaData.getFeature(RespectBindingFeature.class);
+ if (respectBindingFeature != null && respectBindingFeature.isEnabled())
+ {
+ log.debug("RespectBindingFeature found, looking for required not understood
extensibility elements...");
+ ServiceMetaData serviceMetaData = sepMetaData.getServiceMetaData();
+ WSDLDefinitions wsdlDefinitions = serviceMetaData.getWsdlDefinitions();
+
+ WSDLService wsdlService =
wsdlDefinitions.getService(serviceMetaData.getServiceName());
+ if (wsdlService != null)
+ {
+ WSDLEndpoint wsdlEndpoint =
wsdlService.getEndpoint(sepMetaData.getPortName());
+ if (wsdlEndpoint != null)
+ {
+ // Conformance 6.11 (javax.xml.ws.RespectBindingFeature): When the
javax.xml.ws.RespectBindingFeature
+ // is enabled, a JAX-WS implementation MUST inspect the wsdl:binding at
runtime to determine
+ // result and parameter bindings as well as any wsdl:extensions that have
the required=true attribute.
+ // All required wsdl:extensions MUST be supported and honored by a JAX-WS
implementation unless a
+ // specific wsdl:extension has be explicitly disabled via a
WebServiceFeature.
+ checkNotUnderstoodExtElements(wsdlEndpoint, sepMetaData);
+ WSDLBinding wsdlBinding =
wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ checkNotUnderstoodExtElements(wsdlBinding, sepMetaData);
+ }
+ else
+ {
+ log.warn("Cannot find port " + sepMetaData.getPortName());
+ }
+ }
+ }
+ }
+
+ private static void checkNotUnderstoodExtElements(Extendable extendable,
ServerEndpointMetaData sepMetaData)
+ {
+ List<WSDLExtensibilityElement> notUnderstoodList =
extendable.getNotUnderstoodExtElements();
+ for (WSDLExtensibilityElement el : notUnderstoodList)
+ {
+ boolean disabledByFeature = false; //TODO [JBWS-2459]
+ if (el.isRequired() && !disabledByFeature)
+ {
+ String s = DOMWriter.printNode(el.getElement(), true);
+ throw new WebServiceException("RespectBindingFeature enabled and a
required not understood element was found: " + s);
+ }
+ }
+ }
private void processSchemaValidation(Deployment dep, ServerEndpointMetaData
sepMetaData, Class<?> sepClass)
{
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSMetaDataBuilder.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -43,7 +43,9 @@
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPMessageHandlers;
import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.xml.bind.annotation.XmlList;
import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.ws.BindingType;
@@ -447,12 +449,16 @@
return HolderUtils.isHolderType(javaType) ? ParameterMode.INOUT :
ParameterMode.IN;
}
- private WebParam getWebParamAnnotation(Method method, int pos)
+ @SuppressWarnings("unchecked")
+ private <T extends Annotation> T getAnnotation(Class<T> annotation, Method
method, int pos)
{
- for (Annotation annotation : method.getParameterAnnotations()[pos])
- if (annotation instanceof WebParam)
- return (WebParam)annotation;
-
+ for (Annotation an : method.getParameterAnnotations()[pos])
+ {
+ if (annotation.isAssignableFrom(an.annotationType()))
+ {
+ return (T)an;
+ }
+ }
return null;
}
@@ -637,7 +643,7 @@
Class<?> javaType = parameterTypes[i];
Type genericType = genericTypes[i];
String javaTypeName = javaType.getName();
- WebParam anWebParam = getWebParamAnnotation(method, i);
+ WebParam anWebParam = getAnnotation(WebParam.class, method, i);
boolean isHeader = anWebParam != null && anWebParam.header();
boolean isWrapped = opMetaData.isDocumentWrapped() && !isHeader;
ParameterMode mode = getParameterMode(anWebParam, javaType);
@@ -660,6 +666,13 @@
WrappedParameter wrappedParameter = new WrappedParameter(wrappedElementName,
javaTypeName, variable, i);
wrappedParameter.setTypeArguments(convertTypeArguments(javaType,
genericType));
+ wrappedParameter.setXmlList(getAnnotation(XmlList.class, method, i) !=
null);
+ XmlJavaTypeAdapter xmlJavaTypeAdapter =
getAnnotation(XmlJavaTypeAdapter.class, method, i);
+ if (xmlJavaTypeAdapter != null)
+ {
+ //XmlJavaTypeAdapter.type() is for package only
+ wrappedParameter.setAdapter(xmlJavaTypeAdapter.value().getName());
+ }
if (mode != ParameterMode.OUT)
wrappedParameters.add(wrappedParameter);
@@ -727,6 +740,13 @@
{
WrappedParameter wrapped = new WrappedParameter(xmlName, returnTypeName,
convertToVariable(xmlName.getLocalPart()), -1);
wrapped.setTypeArguments(convertTypeArguments(returnType,
genericReturnType));
+ wrapped.setXmlList(method.getAnnotation(XmlList.class) != null);
+ XmlJavaTypeAdapter xmlJavaTypeAdapter =
method.getAnnotation(XmlJavaTypeAdapter.class);
+ if (xmlJavaTypeAdapter != null)
+ {
+ //XmlJavaTypeAdapter.type() is for package only
+ wrapped.setAdapter(xmlJavaTypeAdapter.value().getName());
+ }
// insert at the beginning just for prettiness
wrappedOutputParameters.add(0, wrapped);
@@ -795,8 +815,15 @@
// Add faults
for (Class<?> exClass : method.getExceptionTypes())
- if (!RemoteException.class.isAssignableFrom(exClass))
+ {
+ // Conformance 3.25 (java.lang.RuntimeExceptions and
java.rmi.RemoteExceptions):
+ // java.lang.RuntimeException and java.rmi.RemoteException and their subclasses
+ // MUST NOT be treated as service specific exceptions and MUST NOT be mapped to
WSDL.
+ if (!RemoteException.class.isAssignableFrom(exClass) &&
!RuntimeException.class.isAssignableFrom(exClass))
+ {
addFault(opMetaData, exClass);
+ }
+ }
// process operation meta data extension
processMetaExtensions(method, epMetaData, opMetaData);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/builder/jaxws/JAXWSWebServiceMetaDataBuilder.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -186,6 +186,9 @@
processHandlerChain(sepMetaData, sepClass);
else if (seiClass.isAnnotationPresent(HandlerChain.class))
processHandlerChain(sepMetaData, seiClass);
+
+ //setup web service feature contributions
+ epFeatureProcessor.setupEndpointFeatures(sepMetaData);
// process webservices.xml contributions
processWSDDContribution(sepMetaData);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/config/binding/OMFactoryJAXWS.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -41,7 +41,7 @@
import org.jboss.ws.extensions.wsrm.config.RMPortConfig;
/**
- * ObjectModelFactory for JAXRPC configurations.
+ * ObjectModelFactory for JAXWS configurations.
*
* @author Thomas.Diesler(a)jboss.org
* @author Heiko.Braun(a)jboss.org
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/umdm/WrappedParameter.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -43,6 +43,8 @@
private Accessor accessor;
private boolean swaRef;
private boolean xop;
+ private boolean xmlList;
+ private String adapter = null;
public WrappedParameter(WrappedParameter wrapped)
{
@@ -153,6 +155,26 @@
this.xop = xop;
}
+ public boolean isXmlList()
+ {
+ return xmlList;
+ }
+
+ public void setXmlList(boolean xmlList)
+ {
+ this.xmlList = xmlList;
+ }
+
+ public String getAdapter()
+ {
+ return adapter;
+ }
+
+ public void setAdapter(String adapter)
+ {
+ this.adapter = adapter;
+ }
+
public String toString()
{
return "[name = " + getName() + ", type = " + getType() +
", typeArgs = " + JavaUtils.printArray(getTypeArguments()) + ", variable =
" + getVariable()
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/metadata/wsdl/Extendable.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -44,6 +44,7 @@
private Map features = new LinkedHashMap();
private Map properties = new LinkedHashMap();
private Map<String,List<WSDLExtensibilityElement>> extElements = new
LinkedHashMap<String,List<WSDLExtensibilityElement>>();
+ private List<WSDLExtensibilityElement> notUnderstoodExtElements = new
LinkedList<WSDLExtensibilityElement>();
public WSDLFeature[] getFeatures()
{
@@ -113,4 +114,19 @@
}
return list;
}
+
+ public List<WSDLExtensibilityElement> getNotUnderstoodExtElements()
+ {
+ return notUnderstoodExtElements;
+ }
+
+ public void setNotUnderstoodExtElements(List<WSDLExtensibilityElement>
notUnderstoodExtElement)
+ {
+ this.notUnderstoodExtElements = notUnderstoodExtElement;
+ }
+
+ public void addNotUnderstoodExtElement(WSDLExtensibilityElement element)
+ {
+ notUnderstoodExtElements.add(element);
+ }
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SourceWrapperGenerator.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -21,14 +21,23 @@
*/
package org.jboss.ws.tools.jaxws.impl;
-import com.sun.codemodel.JAnnotationUse;
-import com.sun.codemodel.JAnnotationArrayMember;
-import com.sun.codemodel.JCodeModel;
-import com.sun.codemodel.JDefinedClass;
-import com.sun.codemodel.JExpr;
-import com.sun.codemodel.JFieldVar;
-import com.sun.codemodel.JMethod;
-import com.sun.codemodel.JMod;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.SortedMap;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlList;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
import org.jboss.logging.Logger;
import org.jboss.ws.WSException;
import org.jboss.ws.core.jaxws.AbstractWrapperGenerator;
@@ -37,19 +46,17 @@
import org.jboss.ws.metadata.umdm.ParameterMetaData;
import org.jboss.ws.metadata.umdm.WrappedParameter;
import org.jboss.wsf.common.JavaUtils;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.namespace.QName;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.List;
-import java.util.SortedMap;
+import com.sun.codemodel.JAnnotationArrayMember;
+import com.sun.codemodel.JAnnotationUse;
+import com.sun.codemodel.JClass;
+import com.sun.codemodel.JCodeModel;
+import com.sun.codemodel.JDefinedClass;
+import com.sun.codemodel.JExpr;
+import com.sun.codemodel.JFieldVar;
+import com.sun.codemodel.JMethod;
+import com.sun.codemodel.JMod;
+
/**
* Generates source for wrapper beans
*
@@ -105,7 +112,7 @@
addClassAnnotations(clazz, parameterMD.getXmlName(), parameterMD.getXmlType(),
null);
for (WrappedParameter wrapped : wrappedParameters)
{
- addProperty(clazz, wrapped.getType(), wrapped.getName(),
wrapped.getVariable(), false, loader);
+ addProperty(clazz, wrapped.getType(), wrapped.getName(),
wrapped.getVariable(), wrapped.getTypeArguments(), false, wrapped.isXmlList(),
wrapped.getAdapter(), loader);
}
}
catch (Exception e)
@@ -130,7 +137,7 @@
for (String property : propertyOrder)
{
ExceptionProperty p = properties.get(property);
- addProperty(clazz, p.getReturnType().getName(), new QName(property),
property, p.isTransientAnnotated(), loader);
+ addProperty(clazz, p.getReturnType().getName(), new QName(property),
property, null, p.isTransientAnnotated(), false, null, loader);
}
}
catch (Exception e)
@@ -143,15 +150,39 @@
{
return (Boolean.TYPE == type || Boolean.class == type) ? "is" :
"get";
}
+
+ private void addProperty(JDefinedClass clazz, String typeName, QName name, String
variable, String[] typeArguments, boolean xmlTransient, boolean xmlList, String adapter,
ClassLoader loader)
+ throws Exception
+ {
+ // define variable
+ Class<?> javaType = JavaUtils.loadJavaType(typeName, loader);
+ if (JavaUtils.isPrimitive(javaType))
+ {
+ addPrimitiveProperty(clazz, javaType, name, variable, xmlTransient);
+ }
+ else
+ {
+ addProperty(clazz, javaType, name, variable, typeArguments, xmlTransient,
xmlList, adapter, codeModel);
+ }
+ }
- private static void addProperty(JDefinedClass clazz, String typeName, QName name,
String variable, boolean xmlTransient, ClassLoader loader)
- throws ClassNotFoundException
+ private static void addProperty(JDefinedClass clazz, Class<?> javaType, QName
name, String variable, String[] typeArguments, boolean xmlTransient, boolean xmlList,
+ String adapter, JCodeModel codeModel) throws Exception
{
// be careful about reserved keywords when generating variable names
String realVariableName = JavaUtils.isReservedKeyword(variable) ? "_" +
variable : variable;
- // define variable
- Class<?> type = JavaUtils.loadJavaType(typeName, loader);
+ //use narrow() for generics:
http://forums.java.net/jive/thread.jspa?messageID=209333𳆵
+ JClass type = codeModel.ref(javaType);
+ if (typeArguments != null)
+ {
+ LinkedList<JClass> jclasses = new LinkedList<JClass>();
+ for (String tp : typeArguments)
+ {
+ jclasses.add(codeModel.ref(tp));
+ }
+ type = type.narrow(jclasses);
+ }
JFieldVar field = clazz.field(JMod.PRIVATE, type, realVariableName);
if (xmlTransient == false)
@@ -169,16 +200,59 @@
//XmlTransient
field.annotate(XmlTransient.class);
}
+
+ if (xmlList)
+ {
+ field.annotate(XmlList.class);
+ }
+
+ if (adapter != null)
+ {
+ JAnnotationUse xmlJavaTypeAdapter = field.annotate(XmlJavaTypeAdapter.class);
+ xmlJavaTypeAdapter.param("value", codeModel.ref(adapter));
+ }
// generate acessor get method for variable
- JMethod method = clazz.method(JMod.PUBLIC, type, getterPrefix(type) +
JavaUtils.capitalize(variable));
+ JMethod method = clazz.method(JMod.PUBLIC, type, getterPrefix(javaType) +
JavaUtils.capitalize(variable));
method.body()._return(JExpr._this().ref(realVariableName));
// generate acessor set method for variable
method = clazz.method(JMod.PUBLIC, void.class, "set" +
JavaUtils.capitalize(variable));
method.body().assign(JExpr._this().ref(realVariableName), method.param(type,
realVariableName));
}
+
+ private static void addPrimitiveProperty(JDefinedClass clazz, Class<?> javaType,
QName name, String variable, boolean xmlTransient)
+ {
+ // be careful about reserved keywords when generating variable names
+ String realVariableName = JavaUtils.isReservedKeyword(variable) ? "_" +
variable : variable;
+
+ JFieldVar field = clazz.field(JMod.PRIVATE, javaType, realVariableName);
+
+ if (xmlTransient == false)
+ {
+ // define XmlElement annotation for variable
+ JAnnotationUse annotation = field.annotate(XmlElement.class);
+ annotation.param("name", name.getLocalPart());
+ if (name.getNamespaceURI() != null)
+ {
+ annotation.param("namespace", name.getNamespaceURI());
+ }
+ }
+ else
+ {
+ //XmlTransient
+ field.annotate(XmlTransient.class);
+ }
+ // generate acessor get method for variable
+ JMethod method = clazz.method(JMod.PUBLIC, javaType, getterPrefix(javaType) +
JavaUtils.capitalize(variable));
+ method.body()._return(JExpr._this().ref(realVariableName));
+
+ // generate acessor set method for variable
+ method = clazz.method(JMod.PUBLIC, void.class, "set" +
JavaUtils.capitalize(variable));
+ method.body().assign(JExpr._this().ref(realVariableName), method.param(javaType,
realVariableName));
+ }
+
private static void addClassAnnotations(JDefinedClass clazz, QName xmlName, QName
xmlType, String[] propertyOrder)
{
// define XmlRootElement class annotation
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/jaxws/impl/SunRIConsumerImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -198,8 +198,8 @@
args.add(outputDir.getAbsolutePath());
// Always set the target
- if(!target.equals("2.0"))
- throw new IllegalArgumentException("WSConsume (native) only supports JAX-WS
2.0");
+ if(!target.equals("2.0") && !target.equals("2.1"))
+ throw new IllegalArgumentException("WSConsume (native) only supports JAX-WS
2.0 and 2.1");
args.add("-target");
args.add(target);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/tools/wsdl/WSDL11Reader.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -313,33 +313,78 @@
for (int i = 0; i < extElements.size(); i++)
{
ExtensibilityElement extElement = (ExtensibilityElement)extElements.get(i);
- processPolicyElements(extElement, dest);
- //add processing of further extensibility element types below
+ if (extElement instanceof UnknownExtensibilityElement)
+ {
+ UnknownExtensibilityElement uee = (UnknownExtensibilityElement)extElement;
+ boolean understood = false;
+ understood = understood || processPolicyElements(uee, dest);
+ understood = understood || processUseAddressing(uee, dest);
+ //add processing of further extensibility element types below
+
+ if (!understood)
+ {
+ processNotUnderstoodExtesibilityElement(uee, dest);
+ }
+ }
}
}
- private void processPolicyElements(ExtensibilityElement extElement, Extendable dest)
+ /**
+ * Process the provided extensibility element looking for policies or policy
references.
+ * Returns true if the provided element is policy related, false otherwise.
+ *
+ * @param extElement
+ * @param dest
+ * @return
+ */
+ private boolean processPolicyElements(UnknownExtensibilityElement extElement,
Extendable dest)
{
- if (extElement instanceof UnknownExtensibilityElement)
+ boolean result = false;
+ Element srcElement = extElement.getElement();
+ if (Constants.URI_WS_POLICY.equals(srcElement.getNamespaceURI()))
{
- Element srcElement = ((UnknownExtensibilityElement)extElement).getElement();
- if (Constants.URI_WS_POLICY.equals(srcElement.getNamespaceURI()))
+ //copy missing namespaces from the source element to our element
+ Element element = (Element)srcElement.cloneNode(true);
+ copyMissingNamespaceDeclarations(element, srcElement);
+ if (element.getLocalName().equals("Policy"))
{
- //copy missing namespaces from the source element to our element
- Element element = (Element)srcElement.cloneNode(true);
- copyMissingNamespaceDeclarations(element, srcElement);
- if (element.getLocalName().equals("Policy"))
- {
- dest.addExtensibilityElement(new
WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICY, element));
- }
- else if (element.getLocalName().equals("PolicyReference"))
- {
- dest.addExtensibilityElement(new
WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICYREFERENCE, element));
- }
-
+ WSDLExtensibilityElement el = new
WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICY, element);
+
el.setRequired("true".equalsIgnoreCase(element.getAttribute("required")));
+ dest.addExtensibilityElement(el);
+ result = true;
}
+ else if (element.getLocalName().equals("PolicyReference"))
+ {
+ WSDLExtensibilityElement el = new
WSDLExtensibilityElement(Constants.WSDL_ELEMENT_POLICYREFERENCE, element);
+
el.setRequired("true".equalsIgnoreCase(element.getAttribute("required")));
+ dest.addExtensibilityElement(el);
+ result = true;
+ }
}
+ return result;
}
+
+ /**
+ * Process the provided extensibility element looking for UsingAddressing.
+ * Returns true if the provided element is UsingAddressing, false otherwise.
+ *
+ * @param extElement
+ * @param dest
+ * @return
+ */
+ private boolean processUseAddressing(UnknownExtensibilityElement extElement,
Extendable dest)
+ {
+ log.warn("UsingAddressing extensibility element not supported yet.");
+ return false;
+ }
+
+ private void processNotUnderstoodExtesibilityElement(UnknownExtensibilityElement
extElement, Extendable dest)
+ {
+ Element element = (Element)extElement.getElement().cloneNode(true);
+ WSDLExtensibilityElement notUnderstoodElement = new
WSDLExtensibilityElement("notUnderstoodExtensibilityElement", element);
+
notUnderstoodElement.setRequired("true".equalsIgnoreCase(element.getAttributeNS(Constants.NS_WSDL11,
"required")));
+ dest.addNotUnderstoodExtElement(notUnderstoodElement);
+ }
private void processTypes(Definition srcWsdl, URL wsdlLoc) throws IOException,
WSDLException
{
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java (from rev
9105, stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/Action.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java
(rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Action.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The <code>Action</code> annotation allows explicit association of
<code>Action</code>
+ * message addressing property with <code>input</code>,
<code>output</code>, and
+ * <code>fault</code> messages of the mapped WSDL operation.
+ * <p>
+ * This annotation can be specified on each method of a service endpoint interface.
+ * For such a method, the mapped operation in the generated WSDL
+ * contains explicit <code>wsaw:Action</code> attribute on the WSDL
<code>input</code>,
+ * <code>output</code> and <code>fault</code> messages of the
WSDL <code>operation</code>
+ * based upon which attributes of the <code>Action</code> annotation have
been specified.
+ * <p>
+ * <b>Example 1</b>: Specify explicit values for
<code>Action</code> message addressing property
+ * for <code>input</code> and <code>output</code> messages.
+ *
+ * <pre>
+ * @javax.jws.WebService
+ * public class AddNumbersImpl {
+ * @javax.xml.ws.Action(
+ *
input="http://example.com/inputAction",
+ *
output="http://example.com/outputAction")
+ * public int addNumbers(int number1, int number2) {
+ * return number1 + number2;
+ * }
+ * }
+ * </pre>
+ *
+ * The generated WSDL looks like:
+ * <pre>
+ * <definitions
targetNamespace="http://example.com/numbers"
...>
+ * ...
+ * <portType name="AddNumbersPortType">
+ * <operation name="AddNumbers">
+ * <input message="tns:AddNumbersInput"
name="Parameters"
+ *
wsaw:Action="http://example.com/inputAction"/>
+ * <output message="tns:AddNumbersOutput"
name="Result"
+ *
wsaw:Action="http://example.com/outputAction"/>
+ * </operation>
+ * <portType>
+ * ...
+ * <definitions>
+ * </pre>
+ *
+ * <p>
+ * <b>Example 2</b>: Specify explicit value for
<code>Action</code> message addressing property
+ * for only the <code>input</code> message. The default values are used for
the
+ * <code>output</code> message.
+ *
+ * <pre>
+ * @javax.jws.WebService
+ * public class AddNumbersImpl {
+ *
@javax.xml.ws.Action(input="http://example.com/inputAction")
+ * public int addNumbers(int number1, int number2) {
+ * return number1 + number2;
+ * }
+ * }
+ * </pre>
+ *
+ * The generated WSDL looks like:
+ *
+ * <pre>
+ * <definitions
targetNamespace="http://example.com/numbers"
...>
+ * ...
+ * <portType name="AddNumbersPortType">
+ * <operation name="AddNumbers">
+ * <input message="tns:AddNumbersInput"
name="Parameters"
+ *
wsaw:Action="http://example.com/inputAction"/>
+ * <output message="tns:AddNumbersOutput"
name="Result"/>
+ * </operation>
+ * <portType>
+ * ...
+ * <definitions>
+ * </pre>
+ *
+ * It is legitimate to specify an explicit value for <code>Action</code>
message addressing property for
+ * <code>output</code> message only. In this case, a default value of
<code>wsaw:Action</code> is used
+ * for the <code>input</code> message.
+ *
+ * <p>
+ * <b>Example 3</b>: See <a
href="FaultAction.html">FaultAction</a> annotation for an example of
+ * how to specify an explicit value for <code>Action</code> message
addressing property for the
+ * <code>fault</code> message.
+ *
+ * @see FaultAction
+ *
+ * @since JAX-WS 2.1
+ */
+
+@Documented
+(a)Retention(RetentionPolicy.RUNTIME)
+(a)Target(ElementType.METHOD)
+public @interface Action {
+ /**
+ * Explicit value of <code>Action</code> message addressing property for
the <code>input</code>
+ * message of the operation. If the value is "", then no
<code>wsaw:Action</code>
+ * is generated.
+ */
+ String input() default "";
+
+ /**
+ * Explicit value of <code>Action</code> message addressing property for
the <code>output</code>
+ * message of the operation. If the value is "", then no
<code>wsaw:Action</code>
+ * is generated.
+ */
+ String output() default "";
+
+ /**
+ * Explicit value of <code>Action</code> message addressing property for
the <code>fault</code>
+ * message(s) of the operation. Each exception that is mapped to a fault and requires
explicit
+ * <code>Action</code> message addressing property, need to be specified
as a value in this property
+ * using <a href="FaultAction.html">FaultAction</a> annotation.
+ */
+ FaultAction[] fault() default {};
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java 2009-01-23
15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Binding.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -28,7 +28,6 @@
**/
public interface Binding
{
-
/**
* Gets a copy of the handler chain for a protocol binding instance.
* If the returned chain is modified a call to
<code>setHandlerChain</code>
@@ -50,4 +49,14 @@
* chain.
*/
public void setHandlerChain(java.util.List<javax.xml.ws.handler.Handler>
chain);
+
+ /**
+ * Get the URI for this binding instance.
+ *
+ * @return String The binding identifier for the port.
+ * Never returns <code>null</code>
+ *
+ * @since JAX-WS 2.1
+ */
+ String getBindingID();
}
Modified:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/BindingProvider.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -23,6 +23,8 @@
import java.util.Map;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
/** The <code>BindingProvider</code> interface provides access to the
* protocol binding and associated context objects for request and
* response message processing.
@@ -104,4 +106,69 @@
* @return The Binding for this binding provider.
**/
Binding getBinding();
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>BindingProvider</code> instance.
+ * <p>
+ * If the Binding for this <code>bindingProvider</code> is
+ * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
+ * <code>W3CEndpointReference</code> MUST be returned.
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @return EndpointReference of the target endpoint associated with this
+ * <code>BindingProvider</code> instance.
+ *
+ * @throws java.lang.UnsupportedOperationException If this
+ * <code>BindingProvider</code> uses the XML/HTTP binding.
+ *
+ * @see W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ */
+ public EndpointReference getEndpointReference();
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>BindingProvider</code> instance. The instance
+ * returned will be of type <code>clazz</code>.
+ * <p>
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param clazz Specifies the type of <code>EndpointReference</code>
+ * that MUST be returned.
+
+ * @return EndpointReference of the target endpoint associated with this
+ * <code>BindingProvider</code> instance. MUST be of type
+ * <code>clazz</code>.
+
+ * @throws javax.xml.ws.WebServiceException If the Class
<code>clazz</code>
+ * is not supported by this implementation.
+ * @throws java.lang.UnsupportedOperationException If this
+ * <code>BindingProvider</code> uses the XML/HTTP binding.
+ *
+ * @since JAX-WS 2.1
+ */
+ public <T extends EndpointReference> T getEndpointReference(Class<T>
clazz);
+
}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java 2009-01-23
15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Endpoint.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -23,6 +23,9 @@
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.spi.Provider;
+
+import org.w3c.dom.Element;
+
import java.util.List;
import java.util.Map;
@@ -291,5 +294,79 @@
* this instance.
**/
public abstract void setProperties(Map<String, Object> properties);
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>Endpoint</code> instance.
+ * <p>
+ * If the Binding for this <code>bindingProvider</code> is
+ * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
+ * <code>W3CEndpointReference</code> MUST be returned.
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of this <code>Endpoint</code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>EndpointReference</code> or if the
<code>Endpoint</code> is
+ * not in the published state.
+ * @throws UnsupportedOperationException If this
<code>BindingProvider</code>
+ * uses the XML/HTTP binding.
+ *
+ * @see javax.xml.ws.wsaddressing.W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract EndpointReference getEndpointReference(Element...
referenceParameters);
+
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this <code>Endpoint</code> instance.
+ * <p>
+ * If the returned <code>EndpointReference</code> is a
+ * <code>W3CEndpointReference</code> it MUST contain
+ * the <code>wsaw:ServiceName</code> element and the
+ * <code>wsaw:EndpointName</code> attribute on the
+ * <code>wsaw:ServiceName</code>. It SHOULD contain
+ * the embedded WSDL in the <code>wsa:Metadata</code> element
+ * if there is an associated WSDL. The
+ * <code>wsaw:InterfaceName</code> MAY also be present.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
+ * WS-Addressing - WSDL 1.0</a>.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of type <code>clazz</code> of this
+ * <code>Endpoint<code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+
+ * @throws WebServiceException If any error in the creation of
+ * the <code>EndpointReference</code> or if the
<code>Endpoint</code> is
+ * not in the published state or if the <code>clazz</code> is not a
supported
+ * <code>EndpointReference</code> type.
+ * @throws UnsupportedOperationException If this
<code>BindingProvider</code>
+ * uses the XML/HTTP binding.
+ *
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T extends EndpointReference> T
getEndpointReference(Class<T> clazz, Element... referenceParameters);
+
}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,186 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.io.StringWriter;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.ws.spi.Provider;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+/**
+ * This class represents an WS-Addressing EndpointReference
+ * which is a remote reference to a web service endpoint.
+ * See <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
+ * WS-Addressing</a>
+ * for more information on WS-Addressing EndpointReferences.
+ * <p>
+ * This class is immutable as the typical web service developer
+ * need not be concerned with its contents. The web service
+ * developer should use this class strictly as a mechanism to
+ * reference a remote web service endpoint. See the {@link Service} APIs
+ * that clients can use to that utilize an <code>EndpointReference</code>.
+ * See the {@link javax.xml.ws.Endpoint}, and
+ * {@link javax.xml.ws.BindingProvider} APIs on how
+ * <code>EndpointReferences</code> can be created for published
+ * endpoints.
+ * <p>
+ * Concrete implementations of this class will represent
+ * an <code>EndpointReference</code> for a particular version of Addressing.
+ * For example the {@link W3CEndpointReference} is for use
+ * with W3C WS-Addressing 1.0 - Core Recommendation.
+ * If JAX-WS implementors need to support different versions
+ * of addressing, they should write their own
+ * <code>EndpointReference</code> subclass for that version.
+ * This will allow a JAX-WS implementation to createEndpointReference
+ * vendor specific <code>EndpointReferences</code> that that
+ * vendor can use to flag a different version of
+ * addressing.
+ * <p>
+ * Web service developers that wish to pass or return
+ * <code>EndpointReferences</code> in Java methods in an
+ * SEI should use
+ * concrete instances of an <code>EndpointReference</code> such
+ * as the <code>W3CEndpointReferendce</code>. This way the
+ * schema mapped from the SEI will be more descriptive of the
+ * type of endpoint reference being passed.
+ * <p>
+ * JAX-WS implementors are expected to extract the XML infoset
+ * from an <CODE>EndpointReferece</CODE> using the
+ * <code>{@link EndpointReference#writeTo}</code>
+ * method.
+ * <p>
+ * JAXB will bind this class to xs:anyType. If a better binding
+ * is desired, web services developers should use a concrete
+ * subclass such as {@link W3CEndpointReference}.
+ *
+ * @see W3CEndpointReference
+ * @see Service
+ * @since JAX-WS 2.1
+ */
+//@XmlTransient // to treat this class like Object as far as databinding is concerned
(proposed JAXB 2.1 feature)
+public abstract class EndpointReference
+{
+ //
+ //Default constructor to be only called by derived types.
+ //
+ protected EndpointReference()
+ {
+ };
+
+ /**
+ * Factory method to read an EndpointReference from the infoset contained in
+ * <code>eprInfoset</code>. This method delegates to the vendor specific
+ * implementation of the {@link javax.xml.ws.spi.Provider#readEndpointReference}
method.
+ *
+ * @param eprInfoset The <code>EndpointReference<code> infoset to be
unmarshalled
+ *
+ * @return the EndpointReference unmarshalled from
<code>eprInfoset</code>
+ * never <code>null</code>
+ * @throws WebServiceException
+ * if an error occurs while creating the
+ * <code>EndpointReference</code> from the
<CODE>eprInfoset</CODE>
+ * @throws java.lang.IllegalArgumentException
+ * if the null <code>eprInfoset</tt> value is given.
+ */
+ public static EndpointReference readFrom(Source eprInfoset)
+ {
+ return Provider.provider().readEndpointReference(eprInfoset);
+ }
+
+ /**
+ * write this EndpointReference to the specified infoset format
+ * @throws WebServiceException
+ * if there is an error writing the
+ * EndpointReference to the specified <code>result</code>.
+ *
+ * @throws java.lang.IllegalArgumentException
+ * If the null <code>result</tt> value is given.
+ */
+ public abstract void writeTo(Result result);
+
+ /**
+ * The getPort method returns a proxy. If there
+ * are any reference parameters in the
+ * <code>EndpointReference</code> instance, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * The <code>EndpointReference</code> instance specifies the
+ * endpoint that will be invoked by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL Metadata from this <code>EndpointReference</code> or from
+ * annotations on the <code>serviceEndpointInterface</code>.
+ * <p>
+ * Because this port is not created from a Service object, handlers
+ * will not automatically be configured, and the HandlerResolver
+ * and Executor cannot be get or set for this port. The
+ * <code>BindingProvider().getBinding().setHandlerChain()</code>
+ * method can be used to manually configure handlers for this port.
+ *
+ *
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If this
+ * <code>endpointReference</code>
+ * is invalid
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If feature is enabled that is not compatible with
+ * this port or is unsupported.
+ * </UL>
+ *
+ * @see java.lang.reflect.Proxy
+ * @see WebServiceFeature
+ **/
+ public <T> T getPort(Class<T> serviceEndpointInterface,
WebServiceFeature... features)
+ {
+ return Provider.provider().getPort(this, serviceEndpointInterface, features);
+ }
+
+ /**
+ * Displays EPR infoset for debugging convenience.
+ */
+ public String toString()
+ {
+ StringWriter w = new StringWriter();
+ writeTo(new StreamResult(w));
+ return w.toString();
+ }
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java (from
rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The <code>FaultAction</code> annotation is used inside an <a
href="Action.html">
+ * Action</a> annotation to allow an explicit association of
<code>Action</code> message
+ * addressing property with the <code>fault</code> messages of the WSDL
operation mapped from
+ * the exception class.
+ * <p>
+ * In this version of JAX-WS there is no standard way to specify Action values in a WSDL
and
+ * there is no standard default value. It is intended that, after the W3C WG on
WS-Addressing
+ * has defined these items in a recommendation, a future version of JAX-WS will require
the
+ * new standards.
+ *
+ * @since JAX-WS 2.1
+ */
+
+@Documented
+(a)Retention(RetentionPolicy.RUNTIME)
+(a)Target(ElementType.METHOD)
+public @interface FaultAction {
+ /**
+ * Name of the exception class
+ */
+ Class className();
+
+ /**
+ * Value of <code>Action</code> message addressing property for the
exception
+ */
+ String value() default "";
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature clarifies the use of the <code>wsdl:binding</code>
+ * in a JAX-WS runtime.
+ * <p>
+ * This feature is only useful with web services that have an
+ * associated WSDL. Enabling this feature requires that a JAX-WS
+ * implementation inspect the <code>wsdl:binding</code> for an
+ * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
+ * that have the <code>required</code> attribute set to
<code>true</code>
+ * are understood and are being used.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
+ * required <code>wsdl:binding</code> extensions are either understood
+ * and used by the runtime, or explicitly disabled by the web service
+ * application. A web service application can disable a particular
+ * extension that has a know <code>WebServiceFeature</code> using
+ * either the {@link BindingType#features} element on the server
+ * or one of the following methods on the client:
+ * <ul>
+ * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,Class,
+ * Service.Mode mode,WebServiceFeature...)}
+ * <li>{@link Service21#createDispatch(EndpointReference,
+ * Class,Service.Mode,
+ * WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(EndpointReference,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
+ * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code>
methods on a
+ * generated <code>Service</code>.
+ * </ul>
+ * The runtime MUST also make sure that binding of
+ * SEI parameters/return values respect the <code>wsdl:binding</code>.
+ * With this feature enabled, if a required
+ * <code>wsdl:binding</code> extension is in the WSDL and it is not
+ * supported by a JAX-WS runtime and it has not
+ * been explicitly turned off by the web service developer, then
+ * that JAX-WS runtime MUST behave appropriately based on whether it is
+ * on the client or server:
+ * <UL>
+ * <li>Client: runtime MUST throw a
+ * <code>WebServiceException</code> no sooner than when one of the methods
+ * above is invoked but no later than the first invocation of an endpoint
+ * operation.
+ * <li>throw a WebServiceException and the endpoint MUST fail to start
+ * </ul>
+ * <li> DISABLED: In this Mode, an implementation may choose whether
+ * to inspect the <code>wsdl:binding<code> or not and to what degree
+ * the <code>wsdl:binding</code> will be inspected. For example,
+ * one implementation may choose to behave as if this feature is enabled,
+ * another implementation may only choose to verify the SEI's
+ * parameter/return type bindings.
+ * </ul>
+ *
+ * @see javax.xml.ws.RespectBindingFeature
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+@WebServiceFeatureAnnotation(id = RespectBindingFeature.ID, bean =
RespectBindingFeature.class)
+public @interface RespectBinding {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+}
Copied:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java)
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,126 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature clarifies the use of the <code>wsdl:binding</code>
+ * in a JAX-WS runtime.
+ * <p>
+ * This feature is only useful with web services that have an
+ * associated WSDL. Enabling this feature requires that a JAX-WS
+ * implementation inspect the <code>wsdl:binding</code> for an
+ * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
+ * that have the <code>required</code> attribute set to
<code>true</code>
+ * are understood and are being used.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
+ * required <code>wsdl:binding</code> extensions are either understood
+ and used by the runtime, or explicitly disabled by the web service
+ * application. A web service application can disable a particular
+ * extension that has a know <code>WebServiceFeature</code> using
+ * either the {@link BindingType#features} element on the server
+ * or one of the following methods on the client:
+ * <ul>
+ * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(Class,WebServiceFeature...)}
+ * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,Class,
+ * Service.Mode mode,WebServiceFeature...)}
+ * <li>{@link Service21#createDispatch(EndpointReference,
+ * Class,Service.Mode,
+ * WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(QName,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link Service#createDispatch(EndpointReference,
+ * JAXBContext, Service.Mode, WebServiceFeature...)}
+ * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
+ * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code>
methods on a
+ * generated <code>Service</code>.
+ * </ul>
+ * The runtime MUST also make sure that binding of
+ * SEI parameters/return values respect the <code>wsdl:binding</code>.
+ * With this feature enabled, if a required
+ * <code>wsdl:binding</code> extension is in the WSDL and it is not
+ * supported by a JAX-WS runtime and it has not
+ * been explicitly turned off by the web service developer, then
+ * that JAX-WS runtime MUST behave appropriately based on whether it is
+ * on the client or server:
+ * <UL>
+ * <li>Client: runtime MUST throw a
+ * <code>WebServiceException</code> no sooner than when one of the methods
+ * above is invoked but no later than the first invocation of an endpoint
+ * operation.
+ * <li>throw a WebServiceException and the endpoint MUST fail to start
+ * </ul>
+ * <li> DISABLED: In this Mode, an implementation may choose whether
+ * to inspect the <code>wsdl:binding<code> or not and to what degree
+ * the <code>wsdl:binding</code> will be inspected. For example,
+ * one implementation may choose to behave as if this feature is enabled,
+ * another implementation may only choose to verify the SEI's
+ * parameter/return type bindings.
+ * </ul>
+ *
+ * @see javax.xml.ws.soap.AddressingFeature
+ *
+ * @since JAX-WS 2.1
+ */
+public final class RespectBindingFeature extends WebServiceFeature
+{
+ /**
+ *
+ * Constant value identifying the RespectBindingFeature
+ */
+ public static final String ID = "javax.xml.ws.InspectBindingFeature";
+
+ /**
+ * Create an <code>RespectBindingFeature</code>.
+ * The instance created will be enabled.
+ */
+ public RespectBindingFeature()
+ {
+ this.enabled = true;
+ }
+
+ /**
+ * Create an RespectBindingFeature
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ */
+ public RespectBindingFeature(boolean enabled)
+ {
+ this.enabled = enabled;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID()
+ {
+ return ID;
+ }
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java 2009-01-23
15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/Service.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -342,4 +342,395 @@
{
delegate.setExecutor(executor);
}
+
+
+
+
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, type, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param type The class of object used to messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code>
element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does
not
+ * match the <code>serviceName</code> of this
instance.
+ * <li>If the <code>wsaw:EndpointName</code> does
not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature;
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> Dispatch<T> createDispatch(EndpointReference endpointReference,
Class<T> type, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(endpointReference, type, mode,
features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, context, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws WebServiceException
+ * @throws WebServiceException
+ * <UL>
+ * <li>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code>
element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does
not
+ * match the <code>serviceName</code> of this instance.
+ * <li>If the <code>wsaw:EndpointName</code> does
not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public Dispatch<Object> createDispatch(EndpointReference endpointReference,
JAXBContext context, Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(endpointReference, context, mode,
features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param type The class of object used for messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(portName, type, mode, features);
+ }
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance.
+ * @throws WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public Dispatch<Object> createDispatch(QName portName, JAXBContext context,
Service.Mode mode, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).createDispatch(portName, context, mode,
features);
+ }
+
+ /**
+ * The getPort method returns a proxy. The parameter
+ * <code>serviceEndpointInterface</code> specifies the service
+ * endpoint interface that is supported by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly.
+ * The returned proxy should not be reconfigured by the client.
+ *
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object instance that supports the
+ * specified service endpoint interface.
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(Class<T> serviceEndpointInterface,
WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(serviceEndpointInterface, features);
+ }
+
+ /**
+ * The getPort method returns a proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * The returned proxy should not be reconfigured by the client.
+ * If this <code>Service</code> instance has a known proxy
+ * port that matches the information contained in
+ * the WSDL,
+ * then that proxy is returned, otherwise a WebServiceException
+ * is thrown.
+ * <p>
+ * Calling this method has the same behavior as the following
+ * <pre>
+ * port = service.getPort(portName, serviceEndpointInterface);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpontName</code> attribute of the
+ * <code>wsaw:ServiceName</code> element in the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface.
+ * @throws WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If the <code>wsaw:EndpointName</code> is
+ * missing from the <code>endpointReference</code>
+ * or does not match a wsdl:Port
+ * in the WSDL metadata.
+ * <LI>If the <code>wsaw:ServiceName</code> in the
+ * <code>endpointReference</code> metadata does not
+ * match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If an invalid
+ * <code>endpointReference</code>
+ * is specified.
+ * <LI>If an invalid
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(EndpointReference endpointReference, Class<T>
serviceEndpointInterface, WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(endpointReference,
serviceEndpointInterface, features);
+ }
+
+ /**
+ * The getPort method returns a proxy. A service client
+ * uses this proxy to invoke operations on the target
+ * service endpoint. The <code>serviceEndpointInterface</code>
+ * specifies the service endpoint interface that is supported by
+ * the created dynamic proxy instance.
+ *
+ * @param portName Qualified name of the service endpoint in
+ * the WSDL service description.
+ * @param serviceEndpointInterface Service endpoint interface
+ * supported by the dynamic proxy instance.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that
+ * supports the specified service endpoint
+ * interface.
+ * @throws WebServiceException This exception is thrown in the
+ * following cases:
+ * <UL>
+ * <LI>If there is an error in creation of
+ * the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * or <code>portName</code> is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public <T> T getPort(QName portName, Class<T> serviceEndpointInterface,
WebServiceFeature... features)
+ {
+ return ((ServiceDelegate)delegate).getPort(portName, serviceEndpointInterface,
features);
+ }
+
}
Modified:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceContext.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -22,6 +22,9 @@
package javax.xml.ws;
import javax.xml.ws.handler.MessageContext;
+
+import org.w3c.dom.Element;
+
import java.security.Principal;
/**
@@ -91,5 +94,52 @@
* being serviced.
**/
public boolean isUserInRole(String role);
+
+ /**
+ * Returns the <code>WEndpointReference</code> for this
+ * endpoint.
+ *
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of the endpoint associated with this
+ * <code>WebServiceContext</code>.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ *
+ * @see javax.xml.ws.wsaddressing.W3CEndpointReference
+ *
+ * @since JAX-WS 2.1
+ */
+ public EndpointReference getEndpointReference(Element... referenceParameters);
+ /**
+ * Returns the <code>EndpointReference</code> associated with
+ * this endpoint.
+ * <p>
+ *
+ * @param clazz The type of <code>EndpointReference</code> that
+ * MUST be returned.
+ * @param referenceParameters Reference parameters to be associated with the
+ * returned <code>EndpointReference</code> instance.
+ * @return EndpointReference of type <code>clazz</code> of the endpoint
+ * associated with this <code>WebServiceContext</code> instance.
+ * If the returned <code>EndpointReference</code> is of type
+ * <code>W3CEndpointReference</code> then it MUST contain the
+ * the specified <code>referenceParameters</code>.
+ *
+ * @throws IllegalStateException This exception is thrown
+ * if the method is called while no request is
+ * being serviced.
+ * @throws WebServiceException If the <code>clazz</code> type of
+ * <code>EndpointReference</code> is not supported.
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T extends EndpointReference> T
getEndpointReference(Class<T> clazz, Element... referenceParameters);
+
}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,77 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws;
+
+/**
+ * A WebServiceFeature is used to represent a feature that can be
+ * enabled or disabled for a web service.
+ * <p>
+ * The JAX-WS specification will define some standard features and
+ * JAX-WS implementors are free to define additional features if
+ * necessary. Vendor specific features may not be portable so
+ * caution should be used when using them. Each Feature definition
+ * MUST define a <code>public static final String ID</code>
+ * that can be used in the Feature annotation to refer
+ * to the feature. This ID MUST be unique across all features
+ * of all vendors. When defining a vendor specific feature ID,
+ * use a vendor specific namespace in the ID string.
+ *
+ * @see javax.xml.ws.RespectBindingFeature
+ * @see javax.xml.ws.soap.AddressingFeature
+ * @see javax.xml.ws.soap.MTOMFeature
+ *
+ * @since 2.1
+ */
+public abstract class WebServiceFeature
+{
+ /**
+ * Each Feature definition MUST define a public static final
+ * String ID that can be used in the Feature annotation to refer
+ * to the feature.
+ */
+ // public static final String ID = "some unique feature Identifier";
+ /**
+ * Get the unique identifier for this WebServiceFeature.
+ *
+ * @return the unique identifier for this feature.
+ */
+ public abstract String getID();
+
+ /**
+ * Specifies if the feature is enabled or disabled
+ */
+ protected boolean enabled = false;
+
+ protected WebServiceFeature()
+ {
+ }
+
+ /**
+ * Returns <code>true</code> if this feature is enabled.
+ *
+ * @return <code>true</code> if and only if the feature is enabled .
+ */
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+}
Modified:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/handler/MessageContext.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -144,6 +144,16 @@
public static final String PATH_INFO =
"javax.xml.ws.http.request.pathinfo";
/**
+ * Standard property: WS Addressing Reference Parameters.
+ * The list MUST include all SOAP headers marked with the
+ * wsa:IsReferenceParameter="true" attribute.
+ * <p>Type: List<Element>
+ *
+ * @since JAX-WS 2.1
+ */
+ public static final String REFERENCE_PARAMETERS =
"javax.xml.ws.reference.parameters";
+
+ /**
* Property scope. Properties scoped as <code>APPLICATION</code> are
* visible to handlers,
* client applications and service endpoints; properties scoped as
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/Addressing.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature represents the use of WS-Addressing with either
+ * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this feature
+ * with any other binding is NOT required.
+ * <p>
+ * Enabling this feature will result in the
+ * <code>wsaw:UsingAddressing</code> element being added to the
+ * <code>wsdl:Binding</code> for
+ * the endpoint and in the runtime being capable of responding to
+ * WS-Addressing headers.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, Addressing will be enabled.
+ * If there is not a WSDL associated with the Endpoint and
+ * a WSDL is to be generated, it MUST be generated with the
+ * wsaw:UsingAddressing element. At runtime, Addressing headers
+ * MUST be consumed by the receiver and generated by the
+ * sender even if the WSDL declares otherwise. The
+ * mustUnderstand="0" attribute MUST be used on the Addressing
+ * headers.
+ * <li> DISABLED: In this Mode, Addressing will be disabled
+ * even if an associated WSDL specifies otherwise. At runtime,
+ * Addressing headers MUST NOT be used.
+ * </ul>
+ * <p>
+ * The {@link #required} property can be used to
+ * specify if the <code>required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element should
+ * be <code>true</code> or <code>false</code>. By default the
+ * <code>wsdl:required</code> parameter is <code>false</code>.
+ *
+ * See <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">...
+ * for more information on WS-Addressing.
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a> for more information on <code>wsaw:UsingAddressing</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+(a)WebServiceFeatureAnnotation(id=AddressingFeature.ID,bean=AddressingFeature.class)
+public @interface Addressing {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+
+ /**
+ * Property to determine the value of the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element in the WSDL.
+ */
+ boolean required() default false;
+}
Copied:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java)
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/AddressingFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,141 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature represents the use of WS-Addressing with either
+ * the SOAP 1.1/HTTP or SOAP 1.2/HTTP binding. Using this feature
+ * with any other binding is NOT required.
+ * <p>
+ * Enabling this feature on the server will result in the
+ * <code>wsaw:UsingAddressing</code> element being added to the
+ * <code>wsdl:Binding</code> for
+ * the endpoint and in the runtime being capable of responding to
+ * WS-Addressing headers.
+ * <p>
+ * Enabling this feature on the client will cause the JAX-WS runtime
+ * to include WS-Addressing headers in SOAP messages.
+ * <p>
+ * If the web service developer has not explicitly enabled this feature,
+ * it may be automatically enabled if the associated WSDL enables
+ * WS-Addressing via the <code>wsaw:UsingAddressing</code> element with
+ * the <code>wsdl:required</code> attribute set to
<code>true</code>.
+ * <br>
+ * See {@link javax.xml.ws.RespectBindingFeature} for more information
+ * on required WSDL extensions.
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to be enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, Addressing will be enabled.
+ * If there is not a WSDL associated with the Endpoint and
+ * a WSDL is to be generated, it MUST be generated with the
+ * wsaw:UsingAddressing element. At runtime, Addressing headers
+ * MUST be consumed by the receiver and generated by the
+ * sender even if the WSDL declares otherwise. The
+ * mustUnderstand="0" attribute MUST be used on the Addressing
+ * headers.
+ * <li> DISABLED: In this Mode, Addressing will be disabled
+ * even if an associated WSDL specifies otherwise. At runtime,
+ * Addressing headers MUST NOT be used.
+ * </ul>
+ * <p>
+ * The {@link #required} property can be used to
+ * specify if the <code>required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element should
+ * be <code>true</code> or <code>false</code>. By default the
+ * <code>wsdl:required</code> parameter is <code>false</code>.
+ *
+ * See <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">...
+ * for more information on WS-Addressing.
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a> for more information on <code>wsaw:UsingAddressing</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class AddressingFeature extends WebServiceFeature {
+ /**
+ * Constant value identifying the AddressingFeature
+ */
+ public static final String ID =
"http://www.w3.org/2005/08/addressing/module";
+
+ /**
+ * Property for <code>required</code> feature parameter. When Addressing
+ * is enabled, the value of this property will be set to the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element in the WSDL.
+ */
+ protected boolean required = false;
+
+ /**
+ * Create an <code>AddressingFeature</code>.
+ * The instance created will be enabled.
+ */
+ public AddressingFeature() {
+ this.enabled = true;
+ }
+
+ /**
+ * Create an <code>AddressingFeature</code>
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ */
+ public AddressingFeature(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ /**
+ * Create an <code>AddressingFeature</code>
+ *
+ * @param enabled specifies whether this feature should
+ * be enabled or not.
+ * @param required specifies the value that will be used
+ * for the <code>wsdl:required</code> attribute on the
+ * <code>wsaw:UsingAddressing</code> element.
+ */
+ public AddressingFeature(boolean enabled, boolean required) {
+ this.enabled = enabled;
+ this.required = required;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID() {
+ return ID;
+ }
+
+ /**
+ * Gets the boolean value used to set the
+ * <code>wsdl:required</code> attribute on
+ * <code>wsaw:UsingAddressing</code> element
+ * in the WSDL.
+ *
+ * @return the current required value
+ */
+ public boolean isRequired() {
+ return required;
+ }
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java (from
rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java
(rev 0)
+++ stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOM.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ *
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to being enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, MTOM will be enabled.
+ * <li> DISABLED: In this Mode, MTOM will be disabled
+ * </ul>
+ * <p>
+ * The {@link #threshold} property can be used to set the threshold
+ * value used to determine when binary data should be XOP encoded.
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+(a)WebServiceFeatureAnnotation(id=MTOMFeature.ID,bean=MTOMFeature.class)
+public @interface MTOM {
+ /**
+ * Specifies if this feature is enabled or disabled.
+ */
+ boolean enabled() default true;
+
+ /**
+ * Property for MTOM threshold value. When MTOM is enabled, binary data above this
+ * size in bytes will be XOP encoded or sent as attachment. The value of this
property
+ * MUST always be >= 0. Default value is 0.
+ */
+ int threshold() default 0;
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java)
===================================================================
--- stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/soap/MTOMFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,126 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.soap;
+
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * This feature represents the use of MTOM with a
+ * web service.
+ *
+ * <p>
+ * The following describes the affects of this feature with respect
+ * to being enabled or disabled:
+ * <ul>
+ * <li> ENABLED: In this Mode, MTOM will be enabled.
+ * <li> DISABLED: In this Mode, MTOM will be disabled
+ * </ul>
+ * <p>
+ * The {@link #threshold} property can be used to set the threshold
+ * value used to determine when binary data should be XOP encoded.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class MTOMFeature extends WebServiceFeature {
+ /**
+ * Constant value identifying the MTOMFeature
+ */
+ public static final String ID =
"http://www.w3.org/2004/08/soap/features/http-optimization";
+
+
+ /**
+ * Property for MTOM threshold value. This property serves as a hint when
+ * MTOM is enabled, binary data above this size in bytes SHOULD be sent
+ * as attachment.
+ * The value of this property MUST always be >= 0. Default value is 0.
+ */
+ protected int threshold = 0;
+
+
+ /**
+ * Create an <code>MTOMFeature</code>.
+ * The instance created will be enabled.
+ */
+ public MTOMFeature() {
+ this.enabled = true;
+ }
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ *
+ * @param enabled specifies if this feature should be enabled or not
+ */
+ public MTOMFeature(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ * The instance created will be enabled.
+ *
+ * @param threshold the size in bytes that binary data SHOULD be before
+ * being sent as an attachment.
+ *
+ * @throws WebServiceException if threshold is < 0
+ */
+ public MTOMFeature(int threshold) {
+ if (threshold < 0)
+ throw new WebServiceException("MTOMFeature.threshold must be >= 0,
actual value: "+threshold);
+ this.enabled = true;
+ this.threshold = threshold;
+ }
+
+ /**
+ * Creates an <code>MTOMFeature</code>.
+ *
+ * @param enabled specifies if this feature should be enabled or not
+ * @param threshold the size in bytes that binary data SHOULD be before
+ * being sent as an attachment.
+ *
+ * @throws WebServiceException if threshold is < 0
+ */
+ public MTOMFeature(boolean enabled, int threshold) {
+ if (threshold < 0)
+ throw new WebServiceException("MTOMFeature.threshold must be >= 0,
actual value: "+threshold);
+ this.enabled = enabled;
+ this.threshold = threshold;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getID() {
+ return ID;
+ }
+
+ /**
+ * Gets the threshold value used to determine when binary data
+ * should be sent as an attachment.
+ *
+ * @return the current threshold size in bytes
+ */
+ public int getThreshold() {
+ return threshold;
+ }
+}
Modified: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/Provider.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -21,10 +21,17 @@
*/
package javax.xml.ws.spi;
+import java.util.List;
+
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.w3c.dom.Element;
+
/**
* Service provider for ServiceDelegate and Endpoint objects.
*
@@ -132,4 +139,128 @@
*/
public abstract Endpoint createAndPublishEndpoint(String address, Object
implementor);
+ /**
+ * The getPort method returns a proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL Metadata from the <code>EndpointReference</code>.
+ *
+ *
+ * @param endpointReference the EndpointReference that will
+ * be invoked by the returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If this
+ * <code>endpointReference</code>
+ * is illegal
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If feature is enabled that is not compatible with
+ * this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.ws.WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(EndpointReference endpointReference,
Class<T> serviceEndpointInterface, WebServiceFeature... features);
+
+ /**
+ * Factory method to create a <code>W3CEndpointReference</code>.
+ *
+ * <p>
+ * This method can be used to create a <code>W3CEndpointReference</code>
+ * for any endpoint by specifying the <code>address</code> property along
+ * with any other desired properties. This method
+ * can also be used to create a <code>W3CEndpointReference</code> for
+ * an endpoint that is published by the same Java EE application.
+ * To do so the <code>address</code> property can be provided or this
+ * method can automatically determine the <code>address</code> of
+ * an endpoint that is published by the same Java EE application and is
+ * identified by the <code>serviceName</code> and
+ * <code>portName</code> propeties. If the
<code>address</code> is
+ * <code>null</code> and the <code>serviceName</code> and
+ * <code>portName</code> do not identify an endpoint published by the
+ * same Java EE application, a
+ * <code>javax.lang.IllegalArgumentException</code> MUST be thrown.
+ *
+ * @param address Specifies the address of the target endpoint
+ * @param serviceName Qualified name of the service in the WSDL.
+ * @param portName Qualified name of the endpoint in the WSDL.
+ * @param metadata A list of elements that should be added to the
+ * <code>W3CEndpointReference</code> instances
<code>wsa:metadata</code>
+ * element.
+ * @param wsdlDocumentLocation URL for the WSDL document location for
+ * the service.
+ * @param referenceParameters Reference parameters to be associated
+ * with the returned <code>EndpointReference</code> instance.
+ *
+ * @return the <code>W3CEndpointReference<code> created from
+ * <code>serviceName</code>, <code>portName</code>,
+ * <code>metadata</code>,
<code>wsdlDocumentLocation</code>
+ * and <code>referenceParameters</code>. This method
+ * never returns <code>null</code>.
+ *
+ * @throws javax.lang.IllegalArgumentException
+ * <ul>
+ * <li>If the <code>address</code>,
<code>serviceName</code> and
+ * <code>portName</code> are all
<code>null</code>.
+ * <li>If the <code>serviceName</code> service is
<code>null</code> and the
+ * <code>portName> is NOT <code>null</code>.
+ * <li>If the <code>address</code> property is
<code>null</code> and
+ * the <code>serviceName</code> and
<code>portName</code> do not
+ * specify a valid endpoint published by the same Java EE
+ * application.
+ * <li>If the <code>serviceName</code>is NOT
<code>null</code>
+ * and is not present in the specified WSDL.
+ * <li>If the <code>portName</code> port is not
<code>null<code> and it
+ * is not present in <code>serviceName</code> service in the
WSDL.
+ * <li>If the <code>wsdlDocumentLocation</code> is NOT
<code>null</code>
+ * and does not represent a valid WSDL.
+ * </ul>
+ * @throws javax.xml.ws.WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ *
+ * @since JAX-WS 2.1
+ */
+ public abstract W3CEndpointReference createW3CEndpointReference(String address, QName
serviceName, QName portName, List<Element> metadata,
+ String
wsdlDocumentLocation, List<Element> referenceParameters);
+
+ /**
+ * read an EndpointReference from the infoset contained in
+ * <code>eprInfoset</code>.
+ *
+ * @returns the <code>EndpointReference</code> unmarshalled from
+ * <code>eprInfoset</code>. This method never returns
<code>null</code>.
+ *
+ * @throws javax.xml.ws.WebServiceException If there is an error creating the
+ * <code>EndpointReference</code> from the specified
<code>eprInfoset</code>.
+ *
+ * @throws NullPointerException If the <code>null</code>
+ * <code>eprInfoset</code> value is given.
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract EndpointReference readEndpointReference(javax.xml.transform.Source
eprInfoset);
}
Modified:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/ServiceDelegate.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -26,8 +26,10 @@
import javax.xml.bind.JAXBContext;
import javax.xml.namespace.QName;
import javax.xml.ws.Dispatch;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.handler.HandlerResolver;
/**
@@ -105,6 +107,163 @@
public abstract <T> T getPort(Class<T> serviceEndpointInterface);
/**
+ * The getPort method returns a proxy. A service client
+ * uses this proxy to invoke operations on the target
+ * service endpoint. The <code>serviceEndpointInterface</code>
+ * specifies the service endpoint interface that is supported by
+ * the created dynamic proxy instance.
+ *
+ * @param portName Qualified name of the service endpoint in
+ * the WSDL service description
+ * @param serviceEndpointInterface Service endpoint interface
+ * supported by the dynamic proxy or instance
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that
+ * supports the specified service endpoint
+ * interface
+ * @throws javax.xml.ws.WebServiceException This exception is thrown in the
+ * following cases:
+ * <UL>
+ * <LI>If there is an error in creation of
+ * the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * or <code>portName</code> is specified
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ * @see java.lang.reflect.Proxy
+ * @see java.lang.reflect.InvocationHandler
+ * @see javax.xml.ws.WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(QName portName,
+ Class<T> serviceEndpointInterface,
WebServiceFeature... features);
+
+ /**
+ * The getPort method returns a proxy.
+ * The parameter <code>endpointReference</code> specifies the
+ * endpoint that will be invoked by the returned proxy. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * The parameter <code>serviceEndpointInterface</code> specifies
+ * the service endpoint interface that is supported by the
+ * returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * The returned proxy should not be reconfigured by the client.
+ * If this <code>Service</code> instance has a known proxy
+ * port that matches the information contained in
+ * the WSDL,
+ * then that proxy is returned, otherwise a WebServiceException
+ * is thrown.
+ * <p>
+ * Calling this method has the same behavior as the following
+ * <pre>
+ * port = service.getPort(portName, serviceEndpointInterface);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpontName</code> attribute of the
+ * <code>wsaw:ServiceName</code> element in the
+ * metadata of the <code>endpointReference</code> or from the
+ * <code>serviceEndpointInterface</code> and the WSDL
+ * associated with this <code>Service</code> instance.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned proxy.
+ * @param serviceEndpointInterface Service endpoint interface.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object Proxy instance that supports the
+ * specified service endpoint interface.
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy.
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <LI>If the <code>wsaw:EndpointName</code> is
+ * missing from the <code>endpointReference</code>
+ * or does not match a wsdl:Port
+ * in the WSDL metadata.
+ * <LI>If the <code>wsaw:ServiceName</code> in the
+ * <code>endpointReference</code> metadata does not
+ * match the <code>serviceName</code> of this
+ * <code>Service</code> instance.
+ * <LI>If an invalid
+ * <code>endpointReference</code>
+ * is specified.
+ * <LI>If an invalid
+ * <code>serviceEndpointInterface</code>
+ * is specified.
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(EndpointReference endpointReference,
+ Class<T> serviceEndpointInterface,
WebServiceFeature... features);
+
+ /**
+ * The getPort method returns a proxy. The parameter
+ * <code>serviceEndpointInterface</code> specifies the service
+ * endpoint interface that is supported by the returned proxy.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the proxy accordingly.
+ * The returned proxy should not be reconfigured by the client.
+ *
+ * @param serviceEndpointInterface Service endpoint interface
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ * @return Object instance that supports the
+ * specified service endpoint interface
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is an error during creation
+ * of the proxy
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method
+ * <LI>If an illegal
+ * <code>serviceEndpointInterface</code>
+ * is specified
+ * <LI>If a feature is enabled that is not compatible
+ * with this port or is unsupported.
+ * </UL>
+ *
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> T getPort(Class<T> serviceEndpointInterface,
+ WebServiceFeature... features);
+
+ /**
* Creates a new port for the service. Ports created in this way contain
* no WSDL port type information and can only be used for creating
* <code>Dispatch</code>instances.
@@ -166,6 +325,223 @@
public abstract Dispatch<Object> createDispatch(QName portName, JAXBContext
context, Service.Mode mode);
/**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param type The class of object used for messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> Dispatch<T> createDispatch(QName portName,
Class<T> type,
+ Service.Mode mode, WebServiceFeature...
features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with objects of
+ * the users choosing. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behaves the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, type, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param type The class of object used to messages or message
+ * payloads. Implementations are required to support
+ * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
+ * when type is SOAPMessage.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <LI>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code>
element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does
not
+ * match the <code>serviceName</code> of this
instance.
+ * <li>If the <code>wsaw:EndpointName</code> does
not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.transform.Source
+ * @see javax.xml.soap.SOAPMessage
+ * @see WebServiceFeature;
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract <T> Dispatch<T> createDispatch(EndpointReference
endpointReference,
+ Class<T> type, Service.Mode
mode,
+ WebServiceFeature... features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects.
+ *
+ * @param portName Qualified name for the target service endpoint
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features A list of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException If any error in the creation of
+ * the <code>Dispatch</code> object or if a
+ * feature is enabled that is not compatible with
+ * this port or is unsupported.
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract Dispatch<Object> createDispatch(QName portName,
+ JAXBContext context, Service.Mode
mode, WebServiceFeature... features);
+
+ /**
+ * Creates a <code>Dispatch</code> instance for use with JAXB
+ * generated objects. If there
+ * are any reference parameters in the
+ * <code>endpointReference</code>, then those reference
+ * parameters MUST appear as SOAP headers, indicating them to be
+ * reference parameters, on all messages sent to the endpoint.
+ * The <code>endpointReference's</code> address MUST be used
+ * for invocations on the endpoint.
+ * In the implementation of this method, the JAX-WS
+ * runtime system takes the responsibility of selecting a protocol
+ * binding (and a port) and configuring the dispatch accordingly from
+ * the WSDL associated with this <code>Service</code> instance or
+ * from the WSDL Metadata from the <code>endpointReference</code>.
+ * If this <code>Service</code> instance has a WSDL and
+ * the <code>endpointReference</code>
+ * also has a WSDL, then the WSDL from this instance will be used.
+ * If this <code>Service</code> instance does not have a WSDL and
+ * the <code>endpointReference</code> does have a WSDL, then the
+ * WSDL from the <code>endpointReference</code> will be used.
+ * <p>
+ * This method behavies the same as calling
+ * <pre>
+ * dispatch = service.createDispatch(portName, context, mode, features);
+ * </pre>
+ * where the <code>portName</code> is retrieved from the
+ * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
+ * element in the
+ * metadata of the <code>endpointReference</code>.
+ * <br>
+ * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
+ * </a>.
+ *
+ * @param endpointReference The <code>EndpointReference</code>
+ * for the target service endpoint that will be invoked by the
+ * returned <code>Dispatch</code> object.
+ * @param context The JAXB context used to marshall and unmarshall
+ * messages or message payloads.
+ * @param mode Controls whether the created dispatch instance is message
+ * or payload oriented, i.e. whether the user will work with complete
+ * protocol messages or message payloads. E.g. when using the SOAP
+ * protocol, this parameter controls whether the user will work with
+ * SOAP messages or the contents of a SOAP body.
+ * @param features An array of WebServiceFeatures to configure on the
+ * proxy. Supported features not in the <code>features
+ * </code> parameter will have their default values.
+ *
+ * @return Dispatch instance
+ * @throws javax.xml.ws.WebServiceException
+ * @throws javax.xml.ws.WebServiceException
+ * <UL>
+ * <li>If there is any missing WSDL metadata
+ * as required by this method.
+ * <li>If the <code>wsaw:ServiceName</code>
element
+ * or the <code>wsaw:EndpointName</code> attribute
+ * is missing in the metdata of the
+ * <code>endpointReference</code>.
+ * <li>If the <code>wsaw:ServiceName</code> does
not
+ * match the <code>serviceName</code> of this
instance.
+ * <li>If the <code>wsaw:EndpointName</code> does
not
+ * match a valid wsdl:Port in the WSDL metadata.
+ * <li>If any error in the creation of
+ * the <code>Dispatch</code> object.
+ * <li>if a feature is enabled that is not
+ * compatible with this port or is unsupported.
+ * </UL>
+ *
+ * @see javax.xml.bind.JAXBContext
+ * @see WebServiceFeature
+ *
+ * @since JAX-WS 2.1
+ **/
+ public abstract Dispatch<Object> createDispatch(EndpointReference
endpointReference,
+ JAXBContext context, Service.Mode
mode,
+ WebServiceFeature... features);
+
+ /**
* Gets the name of this service.
* @return Qualified name of this service
**/
Copied:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java)
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/spi/WebServiceFeatureAnnotation.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.spi;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * Annotation used to identify other annotations
+ * as a <code>WebServiceFeature</code>.
+ *
+ * Each <code>WebServiceFeature</code> annotation annotated with
+ * this annotation MUST contain an
+ * <code>enabled</code> property of type
+ * <code>boolean</code> with a default value of
<code>true</code>.
+ * JAX-WS defines the following
+ * <code>WebServiceFeature</code> annotations, however, an implementation
+ * may define vendors specific annotations for other features.
+ * If a JAX-WS implementation encounters an annotation annotated
+ * with the <code>WebServiceFeatureAnnotation</code> that is does not
+ * recognize/support an error MUST be given.
+ *
+ * @see javax.xml.ws.soap.WSAddressing
+ * @see javax.xml.ws.soap.MTOM
+ * @see javax.xml.ws.RespectBinding
+ *
+ * @since JAX-WS 2.1
+ */
+(a)Target(ElementType.ANNOTATION_TYPE)
+(a)Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface WebServiceFeatureAnnotation {
+ /**
+ * Unique identifier for the WebServiceFeature. This
+ * identifier MUST be unique across all implementations
+ * of JAX-WS.
+ */
+ String id();
+
+ /**
+ * The <code>WebServiceFeature</code> bean that is associated
+ * with the <code>WebServiceFeature</code> annotation
+ */
+ Class<? extends WebServiceFeature> bean();
+}
Copied: stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing (from rev
9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing)
Deleted:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
===================================================================
---
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23
10:52:49 UTC (rev 9105)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,306 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws.wsaddressing;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.annotation.XmlAnyAttribute;
-import javax.xml.bind.annotation.XmlAnyElement;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.namespace.QName;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.ws.EndpointReference;
-import javax.xml.ws.WebServiceException;
-
-import org.w3c.dom.Element;
-
-/**
- * This class represents a W3C Addressing EndpointReferece which is
- * a remote reference to a web service endpoint that supports the
- * W3C WS-Addressing 1.0 - Core Recommendation.
- * <p>
- * Developers should use this class in their SEIs if they want to
- * pass/return endpoint references that represent the W3C WS-Addressing
- * recommendation.
- * <p>
- * JAXB will use the JAXB annotations and bind this class to XML infoset
- * that is consistent with that defined by WS-Addressing. See
- * <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
- * WS-Addressing</a>
- * for more information on WS-Addressing EndpointReferences.
- *
- * @since JAX-WS 2.1
- */
-
-// XmlRootElement allows this class to be marshalled on its own
-@XmlRootElement(name = "EndpointReference", namespace =
W3CEndpointReference.NS)
-@XmlType(name = "EndpointReferenceType", namespace = W3CEndpointReference.NS)
-public final class W3CEndpointReference extends EndpointReference
-{
- protected static final String NS = "http://www.w3.org/2005/08/addressing";
-
- private final static JAXBContext w3cjc = getW3CJaxbContext();
-
- // private but necessary properties for databinding
- @XmlElement(name = "Address", namespace = NS)
- private Address address;
- @XmlElement(name = "ReferenceParameters", namespace = NS)
- private Elements referenceParameters;
- @XmlElement(name = "Metadata", namespace = NS)
- private Elements metadata;
- @XmlAnyAttribute
- Map<QName, String> attributes;
- @XmlAnyElement
- List<Element> elements;
-
- // not marshalled
- private QName serviceName;
- private QName endpointName;
- private URL wsdlLocation;
-
- protected W3CEndpointReference()
- {
- }
-
- /**
- * Creates an EPR from infoset representation
- *
- * @param source A source object containing valid XmlInfoset
- * instance consistent with the W3C WS-Addressing Core
- * recommendation.
- *
- * @throws WebServiceException
- * If the source does NOT contain a valid W3C WS-Addressing
- * EndpointReference.
- * @throws NullPointerException
- * If the <code>null</code> <code>source</code> value is
given
- */
- public W3CEndpointReference(Source source)
- {
- try
- {
- W3CEndpointReference epr = w3cjc.createUnmarshaller().unmarshal(source,
W3CEndpointReference.class).getValue();
- this.address = epr.address;
- this.metadata = epr.metadata;
- this.referenceParameters = epr.referenceParameters;
- }
- catch (JAXBException e)
- {
- throw new WebServiceException("Error unmarshalling W3CEndpointReference
", e);
- }
- catch (ClassCastException e)
- {
- throw new WebServiceException("Source did not contain
W3CEndpointReference", e);
- }
- }
-
- @XmlTransient
- public String getAddress()
- {
- return address != null ? address.getUri() : null;
- }
-
- void setAddress(String address)
- {
- this.address = new Address(address);
- }
-
- @XmlTransient
- public QName getServiceName()
- {
- return serviceName;
- }
-
- public void setServiceName(QName serviceName)
- {
- this.serviceName = serviceName;
- }
-
- @XmlTransient
- public QName getEndpointName()
- {
- return endpointName;
- }
-
- public void setEndpointName(QName endpointName)
- {
- this.endpointName = endpointName;
- }
-
- @XmlTransient
- public List<Element> getMetadata()
- {
- return metadata != null ? metadata.getElements() : null;
- }
-
- public void setMetadata(List<Element> metadata)
- {
- this.metadata = new Elements(metadata);
- }
-
- @XmlTransient
- public URL getWsdlLocation()
- {
- return wsdlLocation;
- }
-
- public void setWsdlLocation(String wsdlLocation)
- {
- try
- {
- this.wsdlLocation = wsdlLocation != null ? new URL(wsdlLocation) : null;
- }
- catch (MalformedURLException e)
- {
- throw new IllegalArgumentException("Invalid URL: " + wsdlLocation);
- }
- }
-
- @XmlTransient
- public List<Element> getReferenceParameters()
- {
- return referenceParameters != null ? referenceParameters.getElements() : null;
- }
-
- public void setReferenceParameters(List<Element> metadata)
- {
- this.referenceParameters = new Elements(metadata);
- }
-
- /**
- * {@inheritDoc}
- */
- public void writeTo(Result result)
- {
- try
- {
- Marshaller marshaller = w3cjc.createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
- marshaller.marshal(this, result);
- }
- catch (JAXBException e)
- {
- throw new WebServiceException("Error marshalling W3CEndpointReference.
", e);
- }
- }
-
- private static JAXBContext getW3CJaxbContext()
- {
- try
- {
- return JAXBContext.newInstance(new Class[] { W3CEndpointReference.class });
- }
- catch (JAXBException ex)
- {
- throw new WebServiceException("Cannot obtain JAXB context", ex);
- }
- }
-
- private static class Address
- {
- @XmlValue
- String uri;
- @XmlAnyAttribute
- Map<QName, String> attributes;
-
- protected Address()
- {
- }
-
- public Address(String uri)
- {
- this.uri = uri;
- }
-
- @XmlTransient
- public String getUri()
- {
- return uri;
- }
-
- public void setUri(String uri)
- {
- this.uri = uri;
- }
-
- @XmlTransient
- public Map<QName, String> getAttributes()
- {
- return attributes;
- }
-
- public void setAttributes(Map<QName, String> attributes)
- {
- this.attributes = attributes;
- }
- }
-
- private static class Elements
- {
- @XmlAnyElement
- List<Element> elements;
- @XmlAnyAttribute
- Map<QName, String> attributes;
-
- protected Elements()
- {
- }
-
- public Elements(List<Element> elements)
- {
- this.elements = elements;
- }
-
- @XmlTransient
- public List<Element> getElements()
- {
- return elements;
- }
-
- public void setElements(List<Element> elements)
- {
- this.elements = elements;
- }
-
- @XmlTransient
- public Map<QName, String> getAttributes()
- {
- return attributes;
- }
-
- public void setAttributes(Map<QName, String> attributes)
- {
- this.attributes = attributes;
- }
- }
-}
Copied:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java)
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReference.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,306 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.wsaddressing;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.ws.EndpointReference;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Element;
+
+/**
+ * This class represents a W3C Addressing EndpointReferece which is
+ * a remote reference to a web service endpoint that supports the
+ * W3C WS-Addressing 1.0 - Core Recommendation.
+ * <p>
+ * Developers should use this class in their SEIs if they want to
+ * pass/return endpoint references that represent the W3C WS-Addressing
+ * recommendation.
+ * <p>
+ * JAXB will use the JAXB annotations and bind this class to XML infoset
+ * that is consistent with that defined by WS-Addressing. See
+ * <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
+ * WS-Addressing</a>
+ * for more information on WS-Addressing EndpointReferences.
+ *
+ * @since JAX-WS 2.1
+ */
+
+// XmlRootElement allows this class to be marshalled on its own
+@XmlRootElement(name = "EndpointReference", namespace =
W3CEndpointReference.NS)
+@XmlType(name = "EndpointReferenceType", namespace = W3CEndpointReference.NS)
+public final class W3CEndpointReference extends EndpointReference
+{
+ protected static final String NS = "http://www.w3.org/2005/08/addressing";
+
+ private final static JAXBContext w3cjc = getW3CJaxbContext();
+
+ // private but necessary properties for databinding
+ @XmlElement(name = "Address", namespace = NS)
+ private Address address;
+ @XmlElement(name = "ReferenceParameters", namespace = NS)
+ private Elements referenceParameters;
+ @XmlElement(name = "Metadata", namespace = NS)
+ private Elements metadata;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+ @XmlAnyElement
+ List<Element> elements;
+
+ // not marshalled
+ private QName serviceName;
+ private QName endpointName;
+ private URL wsdlLocation;
+
+ protected W3CEndpointReference()
+ {
+ }
+
+ /**
+ * Creates an EPR from infoset representation
+ *
+ * @param source A source object containing valid XmlInfoset
+ * instance consistent with the W3C WS-Addressing Core
+ * recommendation.
+ *
+ * @throws WebServiceException
+ * If the source does NOT contain a valid W3C WS-Addressing
+ * EndpointReference.
+ * @throws NullPointerException
+ * If the <code>null</code> <code>source</code> value is
given
+ */
+ public W3CEndpointReference(Source source)
+ {
+ try
+ {
+ W3CEndpointReference epr = w3cjc.createUnmarshaller().unmarshal(source,
W3CEndpointReference.class).getValue();
+ this.address = epr.address;
+ this.metadata = epr.metadata;
+ this.referenceParameters = epr.referenceParameters;
+ }
+ catch (JAXBException e)
+ {
+ throw new WebServiceException("Error unmarshalling W3CEndpointReference
", e);
+ }
+ catch (ClassCastException e)
+ {
+ throw new WebServiceException("Source did not contain
W3CEndpointReference", e);
+ }
+ }
+
+ @XmlTransient
+ public String getAddress()
+ {
+ return address != null ? address.getUri() : null;
+ }
+
+ void setAddress(String address)
+ {
+ this.address = new Address(address);
+ }
+
+ @XmlTransient
+ public QName getServiceName()
+ {
+ return serviceName;
+ }
+
+ public void setServiceName(QName serviceName)
+ {
+ this.serviceName = serviceName;
+ }
+
+ @XmlTransient
+ public QName getEndpointName()
+ {
+ return endpointName;
+ }
+
+ public void setEndpointName(QName endpointName)
+ {
+ this.endpointName = endpointName;
+ }
+
+ @XmlTransient
+ public List<Element> getMetadata()
+ {
+ return metadata != null ? metadata.getElements() : null;
+ }
+
+ public void setMetadata(List<Element> metadata)
+ {
+ this.metadata = new Elements(metadata);
+ }
+
+ @XmlTransient
+ public URL getWsdlLocation()
+ {
+ return wsdlLocation;
+ }
+
+ public void setWsdlLocation(String wsdlLocation)
+ {
+ try
+ {
+ this.wsdlLocation = wsdlLocation != null ? new URL(wsdlLocation) : null;
+ }
+ catch (MalformedURLException e)
+ {
+ throw new IllegalArgumentException("Invalid URL: " + wsdlLocation);
+ }
+ }
+
+ @XmlTransient
+ public List<Element> getReferenceParameters()
+ {
+ return referenceParameters != null ? referenceParameters.getElements() : null;
+ }
+
+ public void setReferenceParameters(List<Element> metadata)
+ {
+ this.referenceParameters = new Elements(metadata);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeTo(Result result)
+ {
+ try
+ {
+ Marshaller marshaller = w3cjc.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
+ marshaller.marshal(this, result);
+ }
+ catch (JAXBException e)
+ {
+ throw new WebServiceException("Error marshalling W3CEndpointReference.
", e);
+ }
+ }
+
+ private static JAXBContext getW3CJaxbContext()
+ {
+ try
+ {
+ return JAXBContext.newInstance(new Class[] { W3CEndpointReference.class });
+ }
+ catch (JAXBException ex)
+ {
+ throw new WebServiceException("Cannot obtain JAXB context", ex);
+ }
+ }
+
+ private static class Address
+ {
+ @XmlValue
+ String uri;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+
+ protected Address()
+ {
+ }
+
+ public Address(String uri)
+ {
+ this.uri = uri;
+ }
+
+ @XmlTransient
+ public String getUri()
+ {
+ return uri;
+ }
+
+ public void setUri(String uri)
+ {
+ this.uri = uri;
+ }
+
+ @XmlTransient
+ public Map<QName, String> getAttributes()
+ {
+ return attributes;
+ }
+
+ public void setAttributes(Map<QName, String> attributes)
+ {
+ this.attributes = attributes;
+ }
+ }
+
+ private static class Elements
+ {
+ @XmlAnyElement
+ List<Element> elements;
+ @XmlAnyAttribute
+ Map<QName, String> attributes;
+
+ protected Elements()
+ {
+ }
+
+ public Elements(List<Element> elements)
+ {
+ this.elements = elements;
+ }
+
+ @XmlTransient
+ public List<Element> getElements()
+ {
+ return elements;
+ }
+
+ public void setElements(List<Element> elements)
+ {
+ this.elements = elements;
+ }
+
+ @XmlTransient
+ public Map<QName, String> getAttributes()
+ {
+ return attributes;
+ }
+
+ public void setAttributes(Map<QName, String> attributes)
+ {
+ this.attributes = attributes;
+ }
+ }
+}
Deleted:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
===================================================================
---
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23
10:52:49 UTC (rev 9105)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,272 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws.wsaddressing;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.WebServiceException;
-
-import org.w3c.dom.Element;
-
-/**
- * This class is used to build <code>W3CEndpointReference</code>
- * instances. The intended use of this clsss is for
- * an application component, for example a factory component,
- * to create an <code>W3CEndpointReference</code> for a
- * web service endpoint published by the same
- * Java EE application. It can also be used to create
- * <code>W3CEndpointReferences</code> for an Java SE based
- * endpoint by providing the <code>address</code> property.
- * <p>
- * When creating a <code>W3CEndpointReference</code> for an
- * endpoint that is not published by the same Java EE application,
- * the <code>address</code> property MUST be specified.
- * <p>
- * When creating a <code>W3CEndpointReference</code> for an endpoint
- * published by the same Java EE application, the <code>address</code>
- * property MAY be <code>null</code> but then the
<code>serviceName</code>
- * and <code>endpointName</code> MUST specify an endpoint published by
- * the same Java EE application.
- * <p>
- * When the <code>wsdlDocumentLocation</code> is specified it MUST refer
- * to a valid WSDL document and the <code>serviceName</code> and
- * <code>endpointName</code> (if specified) MUST match a service and port
- * in the WSDL document.
- *
- * @since JAX-WS 2.1
- */
-public final class W3CEndpointReferenceBuilder
-{
-
- private String address;
- private List<Element> parameters;
- private List<Element> metadata;
- private QName serviceName;
- private QName endpointName;
- private String wsdlLocation;
-
- public W3CEndpointReferenceBuilder()
- {
- parameters = new ArrayList<Element>();
- metadata = new ArrayList<Element>();
- }
-
- /**
- * Sets the <code>address</code> to the
- * <code>W3CEndpointReference</code> instance's
- * <code>wsa:Address</code>.
- * <p>
- * The <code>address</code> MUST be set to a
non-<code>null</code>
- * value when building a <code>W3CEndpointReference</code> for a
- * web service endpoint that is not published by the same
- * Java EE application or when running on Java SE.
- *
- * @param address The address of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>address</code> set to the
<code>wsa:Address</code>.
- */
- public W3CEndpointReferenceBuilder address(String address)
- {
- this.address = address;
- return this;
- }
-
- /**
- * Sets the <code>serviceName</code> as the
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element.
- *
- * @param serviceName The service name of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>. This property
- * may also be used with the <code>endpointName</code> (portName)
- * property to lookup the <code>address</code> of a web service
- * endpoint that is published by the same Java EE application.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>serviceName</code> element added to the
- * <code>wsa:Metadata</code> element.
- *
- */
- public W3CEndpointReferenceBuilder serviceName(QName serviceName)
- {
- this.serviceName = serviceName;
- return this;
- }
-
- /**
- * Sets the <code>endpointName</code> as and attribute on
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element. This method can only
- * be called after the {@link #serviceName} method has been called.
- *
- * @param endpointName The name of the endpoint to be targeted
- * by the returned <code>W3CEndpointReference<code>. The
- * <code>endpointName</code> (portName) property may also be
- * used with the <code>serviceName</code> property to lookup
- * the <code>address</code> of a web service
- * endpoint published by the same Java EE application.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>endpointName</code> atrribute added to the
- * <code>wsaw:ServiceName</code> element in the
- * <code>wsa:Metadata</code> element.
- *
- * @throws javax.lang.IllegalStateException If the
<code>serviceName</code> has not
- * been set.
- */
- public W3CEndpointReferenceBuilder endpointName(QName endpointName)
- {
- if (serviceName == null)
- {
- throw new IllegalStateException("The W3CEndpointReferenceBuilder's
serviceName must be set before setting the endpointName: " + endpointName);
- }
-
- this.endpointName = endpointName;
- return this;
- }
-
- /**
- * Sets the <code>wsdlDocumentLocation</code> that will be inlined
- * in the <code>W3CEndpointReferenc</code> instance's
- * <code>wsa:Metadata</code>.
- *
- * @param wsdlDocumentLocation The location of the WSDL document to
- * be inlined in the <code>wsa:Metadata</code> of the
- * <code>W3CEndpointReference<code>.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>wsdlDocumentLocation</code> that is to be inlined.
- *
- */
- public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation)
- {
- this.wsdlLocation = wsdlDocumentLocation;
- return this;
- }
-
- /**
- * Adds the <code>referenceParameter</code> to the
- * <code>W3CEndpointReference</code> instance
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @param referenceParameter The element to be added to the
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>referenceParameter</code> added to the
- * <code>wsa:ReferenceParameters</code> element.
- *
- * @throws java.lang.IllegalArgumentException if
<code>referenceParameter</code>
- * is <code>null</code>.
- */
- public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter)
- {
- if (referenceParameter == null)
- throw new java.lang.IllegalArgumentException("The referenceParameter cannot
be null.");
- parameters.add(referenceParameter);
- return this;
- }
-
- /**
- * Adds the <code>metadataElement</code> to the
- * <code>W3CEndpointReference</code> instance's
- * <code>wsa:Metadata</code> element.
- *
- * @param metadataElement The element to be added to the
- * <code>wsa:Metadata</code> element.
- *
- * @return A <code>W3CEndpointReferenceBuilder</code> instance with
- * the <code>metadataElement</code> added to the
- * <code>wsa:Metadata</code> element.
- *
- * @throws java.lang.IllegalArgumentException if
<code>metadataElement</code>
- * is <code>null</code>.
- */
- public W3CEndpointReferenceBuilder metadata(Element metadataElement)
- {
- if (metadataElement == null)
- throw new java.lang.IllegalArgumentException("The metadataElement cannot be
null.");
- metadata.add(metadataElement);
- return this;
- }
-
- /**
- * Builds a <code>W3CEndpointReference</code> from the accumulated
- * properties set on this <code>W3CEndpointReferenceBuilder</code>
- * instance.
- * <p>
- * This method can be used to create a <code>W3CEndpointReference</code>
- * for any endpoint by specifying the <code>address</code> property along
- * with any other desired properties. This method
- * can also be used to create a <code>W3CEndpointReference</code> for
- * an endpoint that is published by the same Java EE application.
- * This method can automatically determine the <code>address</code> of
- * an endpoint published by the same Java EE application that is identified by the
- * <code>serviceName</code> and
- * <code>endpointName</code> properties. If the
<code>address</code> is
- * <code>null</code> and the <code>serviceName</code> and
- * <code>endpointName</code>
- * do not identify an endpoint published by the same Java EE application, a
- * <code>javax.lang.IllegalStateException</code> MUST be thrown.
- *
- *
- * @return <code>W3CEndpointReference</code> from the accumulated
- * properties set on this <code>W3CEndpointReferenceBuilder</code>
- * instance. This method never returns <code>null</code>.
- *
- * @throws javax.lang.IllegalStateException
- * <ul>
- * <li>If the <code>address</code>,
<code>serviceName</code> and
- * <code>endpointName</code> are all
<code>null</code>.
- * <li>If the <code>serviceName</code> service is
<code>null</code> and the
- * <code>endpointName</code> is NOT
<code>null</code>.
- * <li>If the <code>address</code> property is
<code>null</code> and
- * the <code>serviceName</code> and
<code>endpointName</code> do not
- * specify a valid endpoint published by the same Java EE
- * application.
- * <li>If the <code>serviceName</code>is NOT
<code>null</code>
- * and is not present in the specified WSDL.
- * <li>If the <code>endpointName</code> port is not
<code>null<code> and it
- * is not present in <code>serviceName</code> service in the
WSDL.
- * <li>If the <code>wsdlDocumentLocation</code> is NOT
<code>null</code> Pr
- * and does not represent a valid WSDL.
- * </ul>
- * @throws WebServiceException If an error occurs while creating the
- * <code>W3CEndpointReference</code>.
- *
- */
- public W3CEndpointReference build()
- {
- W3CEndpointReference epr = new W3CEndpointReference();
- epr.setAddress(address);
- epr.setServiceName(serviceName);
- epr.setEndpointName(endpointName);
- epr.setMetadata(metadata);
- epr.setWsdlLocation(wsdlLocation);
- epr.setReferenceParameters(parameters);
- return epr;
- }
-}
Copied:
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
(from rev 9105,
stack/native/branches/jaxws21/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java)
===================================================================
---
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java
(rev 0)
+++
stack/native/trunk/modules/jaxws/src/main/java/javax/xml/ws/wsaddressing/W3CEndpointReferenceBuilder.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,272 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package javax.xml.ws.wsaddressing;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceException;
+
+import org.w3c.dom.Element;
+
+/**
+ * This class is used to build <code>W3CEndpointReference</code>
+ * instances. The intended use of this clsss is for
+ * an application component, for example a factory component,
+ * to create an <code>W3CEndpointReference</code> for a
+ * web service endpoint published by the same
+ * Java EE application. It can also be used to create
+ * <code>W3CEndpointReferences</code> for an Java SE based
+ * endpoint by providing the <code>address</code> property.
+ * <p>
+ * When creating a <code>W3CEndpointReference</code> for an
+ * endpoint that is not published by the same Java EE application,
+ * the <code>address</code> property MUST be specified.
+ * <p>
+ * When creating a <code>W3CEndpointReference</code> for an endpoint
+ * published by the same Java EE application, the <code>address</code>
+ * property MAY be <code>null</code> but then the
<code>serviceName</code>
+ * and <code>endpointName</code> MUST specify an endpoint published by
+ * the same Java EE application.
+ * <p>
+ * When the <code>wsdlDocumentLocation</code> is specified it MUST refer
+ * to a valid WSDL document and the <code>serviceName</code> and
+ * <code>endpointName</code> (if specified) MUST match a service and port
+ * in the WSDL document.
+ *
+ * @since JAX-WS 2.1
+ */
+public final class W3CEndpointReferenceBuilder
+{
+
+ private String address;
+ private List<Element> parameters;
+ private List<Element> metadata;
+ private QName serviceName;
+ private QName endpointName;
+ private String wsdlLocation;
+
+ public W3CEndpointReferenceBuilder()
+ {
+ parameters = new ArrayList<Element>();
+ metadata = new ArrayList<Element>();
+ }
+
+ /**
+ * Sets the <code>address</code> to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:Address</code>.
+ * <p>
+ * The <code>address</code> MUST be set to a
non-<code>null</code>
+ * value when building a <code>W3CEndpointReference</code> for a
+ * web service endpoint that is not published by the same
+ * Java EE application or when running on Java SE.
+ *
+ * @param address The address of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>address</code> set to the
<code>wsa:Address</code>.
+ */
+ public W3CEndpointReferenceBuilder address(String address)
+ {
+ this.address = address;
+ return this;
+ }
+
+ /**
+ * Sets the <code>serviceName</code> as the
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @param serviceName The service name of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>. This property
+ * may also be used with the <code>endpointName</code> (portName)
+ * property to lookup the <code>address</code> of a web service
+ * endpoint that is published by the same Java EE application.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>serviceName</code> element added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ */
+ public W3CEndpointReferenceBuilder serviceName(QName serviceName)
+ {
+ this.serviceName = serviceName;
+ return this;
+ }
+
+ /**
+ * Sets the <code>endpointName</code> as and attribute on
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element. This method can only
+ * be called after the {@link #serviceName} method has been called.
+ *
+ * @param endpointName The name of the endpoint to be targeted
+ * by the returned <code>W3CEndpointReference<code>. The
+ * <code>endpointName</code> (portName) property may also be
+ * used with the <code>serviceName</code> property to lookup
+ * the <code>address</code> of a web service
+ * endpoint published by the same Java EE application.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>endpointName</code> atrribute added to the
+ * <code>wsaw:ServiceName</code> element in the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @throws javax.lang.IllegalStateException If the
<code>serviceName</code> has not
+ * been set.
+ */
+ public W3CEndpointReferenceBuilder endpointName(QName endpointName)
+ {
+ if (serviceName == null)
+ {
+ throw new IllegalStateException("The W3CEndpointReferenceBuilder's
serviceName must be set before setting the endpointName: " + endpointName);
+ }
+
+ this.endpointName = endpointName;
+ return this;
+ }
+
+ /**
+ * Sets the <code>wsdlDocumentLocation</code> that will be inlined
+ * in the <code>W3CEndpointReferenc</code> instance's
+ * <code>wsa:Metadata</code>.
+ *
+ * @param wsdlDocumentLocation The location of the WSDL document to
+ * be inlined in the <code>wsa:Metadata</code> of the
+ * <code>W3CEndpointReference<code>.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>wsdlDocumentLocation</code> that is to be inlined.
+ *
+ */
+ public W3CEndpointReferenceBuilder wsdlDocumentLocation(String wsdlDocumentLocation)
+ {
+ this.wsdlLocation = wsdlDocumentLocation;
+ return this;
+ }
+
+ /**
+ * Adds the <code>referenceParameter</code> to the
+ * <code>W3CEndpointReference</code> instance
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @param referenceParameter The element to be added to the
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>referenceParameter</code> added to the
+ * <code>wsa:ReferenceParameters</code> element.
+ *
+ * @throws java.lang.IllegalArgumentException if
<code>referenceParameter</code>
+ * is <code>null</code>.
+ */
+ public W3CEndpointReferenceBuilder referenceParameter(Element referenceParameter)
+ {
+ if (referenceParameter == null)
+ throw new java.lang.IllegalArgumentException("The referenceParameter cannot
be null.");
+ parameters.add(referenceParameter);
+ return this;
+ }
+
+ /**
+ * Adds the <code>metadataElement</code> to the
+ * <code>W3CEndpointReference</code> instance's
+ * <code>wsa:Metadata</code> element.
+ *
+ * @param metadataElement The element to be added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @return A <code>W3CEndpointReferenceBuilder</code> instance with
+ * the <code>metadataElement</code> added to the
+ * <code>wsa:Metadata</code> element.
+ *
+ * @throws java.lang.IllegalArgumentException if
<code>metadataElement</code>
+ * is <code>null</code>.
+ */
+ public W3CEndpointReferenceBuilder metadata(Element metadataElement)
+ {
+ if (metadataElement == null)
+ throw new java.lang.IllegalArgumentException("The metadataElement cannot be
null.");
+ metadata.add(metadataElement);
+ return this;
+ }
+
+ /**
+ * Builds a <code>W3CEndpointReference</code> from the accumulated
+ * properties set on this <code>W3CEndpointReferenceBuilder</code>
+ * instance.
+ * <p>
+ * This method can be used to create a <code>W3CEndpointReference</code>
+ * for any endpoint by specifying the <code>address</code> property along
+ * with any other desired properties. This method
+ * can also be used to create a <code>W3CEndpointReference</code> for
+ * an endpoint that is published by the same Java EE application.
+ * This method can automatically determine the <code>address</code> of
+ * an endpoint published by the same Java EE application that is identified by the
+ * <code>serviceName</code> and
+ * <code>endpointName</code> properties. If the
<code>address</code> is
+ * <code>null</code> and the <code>serviceName</code> and
+ * <code>endpointName</code>
+ * do not identify an endpoint published by the same Java EE application, a
+ * <code>javax.lang.IllegalStateException</code> MUST be thrown.
+ *
+ *
+ * @return <code>W3CEndpointReference</code> from the accumulated
+ * properties set on this <code>W3CEndpointReferenceBuilder</code>
+ * instance. This method never returns <code>null</code>.
+ *
+ * @throws javax.lang.IllegalStateException
+ * <ul>
+ * <li>If the <code>address</code>,
<code>serviceName</code> and
+ * <code>endpointName</code> are all
<code>null</code>.
+ * <li>If the <code>serviceName</code> service is
<code>null</code> and the
+ * <code>endpointName</code> is NOT
<code>null</code>.
+ * <li>If the <code>address</code> property is
<code>null</code> and
+ * the <code>serviceName</code> and
<code>endpointName</code> do not
+ * specify a valid endpoint published by the same Java EE
+ * application.
+ * <li>If the <code>serviceName</code>is NOT
<code>null</code>
+ * and is not present in the specified WSDL.
+ * <li>If the <code>endpointName</code> port is not
<code>null<code> and it
+ * is not present in <code>serviceName</code> service in the
WSDL.
+ * <li>If the <code>wsdlDocumentLocation</code> is NOT
<code>null</code> Pr
+ * and does not represent a valid WSDL.
+ * </ul>
+ * @throws WebServiceException If an error occurs while creating the
+ * <code>W3CEndpointReference</code>.
+ *
+ */
+ public W3CEndpointReference build()
+ {
+ W3CEndpointReference epr = new W3CEndpointReference();
+ epr.setAddress(address);
+ epr.setServiceName(serviceName);
+ epr.setEndpointName(endpointName);
+ epr.setMetadata(metadata);
+ epr.setWsdlLocation(wsdlLocation);
+ epr.setReferenceParameters(parameters);
+ return epr;
+ }
+}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java
===================================================================
--- stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java 2009-01-23
15:18:55 UTC (rev 9106)
+++ stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Action.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,142 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * The <code>Action</code> annotation allows explicit association of
<code>Action</code>
- * message addressing property with <code>input</code>,
<code>output</code>, and
- * <code>fault</code> messages of the mapped WSDL operation.
- * <p>
- * This annotation can be specified on each method of a service endpoint interface.
- * For such a method, the mapped operation in the generated WSDL
- * contains explicit <code>wsaw:Action</code> attribute on the WSDL
<code>input</code>,
- * <code>output</code> and <code>fault</code> messages of the
WSDL <code>operation</code>
- * based upon which attributes of the <code>Action</code> annotation have
been specified.
- * <p>
- * <b>Example 1</b>: Specify explicit values for
<code>Action</code> message addressing property
- * for <code>input</code> and <code>output</code> messages.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- *
input="http://example.com/inputAction",
- *
output="http://example.com/outputAction")
- * public int addNumbers(int number1, int number2) {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- * <pre>
- * <definitions
targetNamespace="http://example.com/numbers"
...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput"
name="Parameters"
- *
wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput"
name="Result"
- *
wsaw:Action="http://example.com/outputAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * <b>Example 2</b>: Specify explicit value for
<code>Action</code> message addressing property
- * for only the <code>input</code> message. The default values are used for
the
- * <code>output</code> message.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- *
@javax.xml.ws.Action(input="http://example.com/inputAction")
- * public int addNumbers(int number1, int number2) {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions
targetNamespace="http://example.com/numbers"
...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput"
name="Parameters"
- *
wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput"
name="Result"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * It is legitimate to specify an explicit value for <code>Action</code>
message addressing property for
- * <code>output</code> message only. In this case, a default value of
<code>wsaw:Action</code> is used
- * for the <code>input</code> message.
- *
- * <p>
- * <b>Example 3</b>: See <a
href="FaultAction.html">FaultAction</a> annotation for an example of
- * how to specify an explicit value for <code>Action</code> message
addressing property for the
- * <code>fault</code> message.
- *
- * @see FaultAction
- *
- * @since JAX-WS 2.1
- */
-
-@Documented
-(a)Retention(RetentionPolicy.RUNTIME)
-(a)Target(ElementType.METHOD)
-public @interface Action {
- /**
- * Explicit value of <code>Action</code> message addressing property for
the <code>input</code>
- * message of the operation. If the value is "", then no
<code>wsaw:Action</code>
- * is generated.
- */
- String input() default "";
-
- /**
- * Explicit value of <code>Action</code> message addressing property for
the <code>output</code>
- * message of the operation. If the value is "", then no
<code>wsaw:Action</code>
- * is generated.
- */
- String output() default "";
-
- /**
- * Explicit value of <code>Action</code> message addressing property for
the <code>fault</code>
- * message(s) of the operation. Each exception that is mapped to a fault and requires
explicit
- * <code>Action</code> message addressing property, need to be specified
as a value in this property
- * using <a href="FaultAction.html">FaultAction</a> annotation.
- */
- FaultAction[] fault() default {};
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Binding21.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,38 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public interface Binding21 extends Binding
-{
- /**
- * Get the URI for this binding instance.
- *
- * @return String The binding identifier for the port.
- * Never returns <code>null</code>
- *
- * @since JAX-WS 2.1
- */
- String getBindingID();
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Endpoint21.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,104 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import org.w3c.dom.Element;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public abstract class Endpoint21 extends Endpoint
-{
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this <code>Endpoint</code> instance.
- * <p>
- * If the Binding for this <code>bindingProvider</code> is
- * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
- * <code>W3CEndpointReference</code> MUST be returned.
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of this <code>Endpoint</code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
-
- * @throws WebServiceException If any error in the creation of
- * the <code>EndpointReference</code> or if the
<code>Endpoint</code> is
- * not in the published state.
- * @throws UnsupportedOperationException If this
<code>BindingProvider</code>
- * uses the XML/HTTP binding.
- *
- * @see javax.xml.ws.wsaddressing.W3CEndpointReference
- *
- * @since JAX-WS 2.1
- **/
- public abstract EndpointReference getEndpointReference(Element...
referenceParameters);
-
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this <code>Endpoint</code> instance.
- * <p>
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of type <code>clazz</code> of this
- * <code>Endpoint<code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
-
- * @throws WebServiceException If any error in the creation of
- * the <code>EndpointReference</code> or if the
<code>Endpoint</code> is
- * not in the published state or if the <code>clazz</code> is not a
supported
- * <code>EndpointReference</code> type.
- * @throws UnsupportedOperationException If this
<code>BindingProvider</code>
- * uses the XML/HTTP binding.
- *
- *
- * @since JAX-WS 2.1
- **/
- public abstract <T extends EndpointReference> T
getEndpointReference(Class<T> clazz, Element... referenceParameters);
-}
Deleted:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/EndpointReference.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,187 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.io.StringWriter;
-
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.ws.spi.Provider;
-import javax.xml.ws.spi.Provider21;
-import javax.xml.ws.wsaddressing.W3CEndpointReference;
-
-/**
- * This class represents an WS-Addressing EndpointReference
- * which is a remote reference to a web service endpoint.
- * See <a
href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/">
- * WS-Addressing</a>
- * for more information on WS-Addressing EndpointReferences.
- * <p>
- * This class is immutable as the typical web service developer
- * need not be concerned with its contents. The web service
- * developer should use this class strictly as a mechanism to
- * reference a remote web service endpoint. See the {@link Service} APIs
- * that clients can use to that utilize an <code>EndpointReference</code>.
- * See the {@link javax.xml.ws.Endpoint}, and
- * {@link javax.xml.ws.BindingProvider} APIs on how
- * <code>EndpointReferences</code> can be created for published
- * endpoints.
- * <p>
- * Concrete implementations of this class will represent
- * an <code>EndpointReference</code> for a particular version of Addressing.
- * For example the {@link W3CEndpointReference} is for use
- * with W3C WS-Addressing 1.0 - Core Recommendation.
- * If JAX-WS implementors need to support different versions
- * of addressing, they should write their own
- * <code>EndpointReference</code> subclass for that version.
- * This will allow a JAX-WS implementation to createEndpointReference
- * vendor specific <code>EndpointReferences</code> that that
- * vendor can use to flag a different version of
- * addressing.
- * <p>
- * Web service developers that wish to pass or return
- * <code>EndpointReferences</code> in Java methods in an
- * SEI should use
- * concrete instances of an <code>EndpointReference</code> such
- * as the <code>W3CEndpointReferendce</code>. This way the
- * schema mapped from the SEI will be more descriptive of the
- * type of endpoint reference being passed.
- * <p>
- * JAX-WS implementors are expected to extract the XML infoset
- * from an <CODE>EndpointReferece</CODE> using the
- * <code>{@link EndpointReference#writeTo}</code>
- * method.
- * <p>
- * JAXB will bind this class to xs:anyType. If a better binding
- * is desired, web services developers should use a concrete
- * subclass such as {@link W3CEndpointReference}.
- *
- * @see W3CEndpointReference
- * @see Service
- * @since JAX-WS 2.1
- */
-//@XmlTransient // to treat this class like Object as far as databinding is concerned
(proposed JAXB 2.1 feature)
-public abstract class EndpointReference
-{
- //
- //Default constructor to be only called by derived types.
- //
- protected EndpointReference()
- {
- };
-
- /**
- * Factory method to read an EndpointReference from the infoset contained in
- * <code>eprInfoset</code>. This method delegates to the vendor specific
- * implementation of the {@link javax.xml.ws.spi.Provider#readEndpointReference}
method.
- *
- * @param eprInfoset The <code>EndpointReference<code> infoset to be
unmarshalled
- *
- * @return the EndpointReference unmarshalled from
<code>eprInfoset</code>
- * never <code>null</code>
- * @throws WebServiceException
- * if an error occurs while creating the
- * <code>EndpointReference</code> from the
<CODE>eprInfoset</CODE>
- * @throws java.lang.IllegalArgumentException
- * if the null <code>eprInfoset</tt> value is given.
- */
- public static EndpointReference readFrom(Source eprInfoset)
- {
- return ((Provider21)Provider.provider()).readEndpointReference(eprInfoset);
- }
-
- /**
- * write this EndpointReference to the specified infoset format
- * @throws WebServiceException
- * if there is an error writing the
- * EndpointReference to the specified <code>result</code>.
- *
- * @throws java.lang.IllegalArgumentException
- * If the null <code>result</tt> value is given.
- */
- public abstract void writeTo(Result result);
-
- /**
- * The getPort method returns a proxy. If there
- * are any reference parameters in the
- * <code>EndpointReference</code> instance, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The parameter <code>serviceEndpointInterface</code> specifies
- * the service endpoint interface that is supported by the
- * returned proxy.
- * The <code>EndpointReference</code> instance specifies the
- * endpoint that will be invoked by the returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly from
- * the WSDL Metadata from this <code>EndpointReference</code> or from
- * annotations on the <code>serviceEndpointInterface</code>.
- * <p>
- * Because this port is not created from a Service object, handlers
- * will not automatically be configured, and the HandlerResolver
- * and Executor cannot be get or set for this port. The
- * <code>BindingProvider().getBinding().setHandlerChain()</code>
- * method can be used to manually configure handlers for this port.
- *
- *
- * @param serviceEndpointInterface Service endpoint interface
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that supports the
- * specified service endpoint interface
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy
- * <LI>If there is any missing WSDL metadata
- * as required by this method
- * <LI>If this
- * <code>endpointReference</code>
- * is invalid
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * is specified
- * <LI>If feature is enabled that is not compatible with
- * this port or is unsupported.
- * </UL>
- *
- * @see java.lang.reflect.Proxy
- * @see WebServiceFeature
- **/
- public <T> T getPort(Class<T> serviceEndpointInterface,
WebServiceFeature... features)
- {
- return ((Provider21)Provider.provider()).getPort(this, serviceEndpointInterface,
features);
- }
-
- /**
- * Displays EPR infoset for debugging convenience.
- */
- public String toString()
- {
- StringWriter w = new StringWriter();
- writeTo(new StreamResult(w));
- return w.toString();
- }
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/FaultAction.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,169 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * The <code>FaultAction</code> annotation is used inside an <a
href="Action.html">
- * Action</a> annotation to allow an explicit association of
<code>Action</code> message
- * addressing property with the <code>fault</code> messages of the WSDL
operation mapped from
- * the exception class.
- * <p>
- * The <code>fault</code> message in the generated WSDL operation mapped for
<code>className</code>
- * class contains explicit <code>wsaw:Action</code> attribute.
- *
- * <p>
- * <b>Example 1</b>: Specify explicit values for
<code>Action</code> message addressing
- * property for the <code>input</code>, <code>output</code> and
<code>fault</code> message
- * if the Java method throws only one service specific exception.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- *
input="http://example.com/inputAction",
- *
output="http://example.com/outputAction",
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class,
value="http://example.com/faultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions
targetNamespace="http://example.com/numbers"
...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput"
name="Parameters"
- *
wsaw:Action="http://example.com/inputAction"/>
- * <output message="tns:AddNumbersOutput"
name="Result"
- *
wsaw:Action="http://example.com/outputAction"/>
- * <fault message="tns:AddNumbersException"
name="AddNumbersException"
- *
wsaw:Action="http://example.com/faultAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * Example 2: Here is an example that shows how to specify explicit values for
<code>Action</code>
- * message addressing property if the Java method throws only one service specific
exception,
- * without specifying the values for <code>input</code> and
<code>output</code> messages.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class,
value="http://example.com/faultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions
targetNamespace="http://example.com/numbers"
...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput"
name="Parameters"/>
- * <output message="tns:AddNumbersOutput"
name="Result"/>
- * <fault message="tns:addNumbersFault"
name="InvalidNumbers"
- *
wsa:Action="http://example.com/addnumbers/fault"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * <p>
- * Example 3: Here is an example that shows how to specify explicit values for
<code>Action</code>
- * message addressing property if the Java method throws more than one service specific
exception.
- *
- * <pre>
- * @javax.jws.WebService
- * public class AddNumbersImpl {
- * @javax.xml.ws.Action(
- * fault = {
- * @javax.xml.ws.FaultAction(className=AddNumbersException.class,
value="http://example.com/addFaultAction")
- * @javax.xml.ws.FaultAction(className=TooBigNumbersException.class,
value="http://example.com/toobigFaultAction")
- * })
- * public int addNumbers(int number1, int number2)
- * throws AddNumbersException, TooBigNumbersException {
- * return number1 + number2;
- * }
- * }
- * </pre>
- *
- * The generated WSDL looks like:
- *
- * <pre>
- * <definitions
targetNamespace="http://example.com/numbers"
...>
- * ...
- * <portType name="AddNumbersPortType">
- * <operation name="AddNumbers">
- * <input message="tns:AddNumbersInput"
name="Parameters"/>
- * <output message="tns:AddNumbersOutput"
name="Result"/>
- * <fault message="tns:addNumbersFault"
name="AddNumbersException"
- *
wsa:Action="http://example.com/addnumbers/fault"/>
- * <fault message="tns:tooBigNumbersFault"
name="TooBigNumbersException"
- *
wsa:Action="http://example.com/toobigFaultAction"/>
- * </operation>
- * <portType>
- * ...
- * <definitions>
- * </pre>
- *
- * @since JAX-WS 2.1
- */
-
-@Documented
-(a)Retention(RetentionPolicy.RUNTIME)
-(a)Target(ElementType.METHOD)
-public @interface FaultAction {
- /**
- * Name of the exception class
- */
- Class className();
-
- /**
- * Value of <code>Action</code> message addressing property for the
exception
- */
- String value() default "";
-}
Deleted:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBinding.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,105 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import javax.xml.ws.spi.WebServiceFeatureAnnotation;
-
-/**
- * This feature clarifies the use of the <code>wsdl:binding</code>
- * in a JAX-WS runtime.
- * <p>
- * This feature is only useful with web services that have an
- * associated WSDL. Enabling this feature requires that a JAX-WS
- * implementation inspect the <code>wsdl:binding</code> for an
- * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
- * that have the <code>required</code> attribute set to
<code>true</code>
- * are understood and are being used.
- * <p>
- * The following describes the affects of this feature with respect
- * to be enabled or disabled:
- * <ul>
- * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
- * required <code>wsdl:binding</code> extensions are either understood
- * and used by the runtime, or explicitly disabled by the web service
- * application. A web service application can disable a particular
- * extension that has a know <code>WebServiceFeature</code> using
- * either the {@link BindingType#features} element on the server
- * or one of the following methods on the client:
- * <ul>
- * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,Class,
- * Service.Mode mode,WebServiceFeature...)}
- * <li>{@link Service21#createDispatch(EndpointReference,
- * Class,Service.Mode,
- * WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link Service#createDispatch(EndpointReference,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
- * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code>
methods on a
- * generated <code>Service</code>.
- * </ul>
- * The runtime MUST also make sure that binding of
- * SEI parameters/return values respect the <code>wsdl:binding</code>.
- * With this feature enabled, if a required
- * <code>wsdl:binding</code> extension is in the WSDL and it is not
- * supported by a JAX-WS runtime and it has not
- * been explicitly turned off by the web service developer, then
- * that JAX-WS runtime MUST behave appropriately based on whether it is
- * on the client or server:
- * <UL>
- * <li>Client: runtime MUST throw a
- * <code>WebServiceException</code> no sooner than when one of the methods
- * above is invoked but no later than the first invocation of an endpoint
- * operation.
- * <li>throw a WebServiceException and the endpoint MUST fail to start
- * </ul>
- * <li> DISABLED: In this Mode, an implementation may choose whether
- * to inspect the <code>wsdl:binding<code> or not and to what degree
- * the <code>wsdl:binding</code> will be inspected. For example,
- * one implementation may choose to behave as if this feature is enabled,
- * another implementation may only choose to verify the SEI's
- * parameter/return type bindings.
- * </ul>
- *
- * @see javax.xml.ws.RespectBindingFeature
- *
- * @since JAX-WS 2.1
- */
-(a)Target(ElementType.TYPE)
-(a)Retention(RetentionPolicy.RUNTIME)
-@Documented
-@WebServiceFeatureAnnotation(id = RespectBindingFeature.ID, bean =
RespectBindingFeature.class)
-public @interface RespectBinding {
- /**
- * Specifies if this feature is enabled or disabled.
- */
- boolean enabled() default true;
-}
Deleted:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/RespectBindingFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,126 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import javax.xml.ws.WebServiceFeature;
-
-/**
- * This feature clarifies the use of the <code>wsdl:binding</code>
- * in a JAX-WS runtime.
- * <p>
- * This feature is only useful with web services that have an
- * associated WSDL. Enabling this feature requires that a JAX-WS
- * implementation inspect the <code>wsdl:binding</code> for an
- * endpoint at runtime to make sure that all <code>wsdl:extensions</code>
- * that have the <code>required</code> attribute set to
<code>true</code>
- * are understood and are being used.
- * <p>
- * The following describes the affects of this feature with respect
- * to be enabled or disabled:
- * <ul>
- * <li> ENABLED: In this Mode, a JAX-WS runtime MUST assure that all
- * required <code>wsdl:binding</code> extensions are either understood
- and used by the runtime, or explicitly disabled by the web service
- * application. A web service application can disable a particular
- * extension that has a know <code>WebServiceFeature</code> using
- * either the {@link BindingType#features} element on the server
- * or one of the following methods on the client:
- * <ul>
- * <li>{@link Service#getPort(QName,Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(Class,WebServiceFeature...)}
- * <li>{@link Service#getPort(EndpointReference,Class,WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,Class,
- * Service.Mode mode,WebServiceFeature...)}
- * <li>{@link Service21#createDispatch(EndpointReference,
- * Class,Service.Mode,
- * WebServiceFeature...)}
- * <li>{@link Service#createDispatch(QName,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link Service#createDispatch(EndpointReference,
- * JAXBContext, Service.Mode, WebServiceFeature...)}
- * <li>{@link EndpointReference#getPort(Class,WebServiceFeature...)}
- * <li>One of the <code>getXXXPort(WebServiceFeatures...)</code>
methods on a
- * generated <code>Service</code>.
- * </ul>
- * The runtime MUST also make sure that binding of
- * SEI parameters/return values respect the <code>wsdl:binding</code>.
- * With this feature enabled, if a required
- * <code>wsdl:binding</code> extension is in the WSDL and it is not
- * supported by a JAX-WS runtime and it has not
- * been explicitly turned off by the web service developer, then
- * that JAX-WS runtime MUST behave appropriately based on whether it is
- * on the client or server:
- * <UL>
- * <li>Client: runtime MUST throw a
- * <code>WebServiceException</code> no sooner than when one of the methods
- * above is invoked but no later than the first invocation of an endpoint
- * operation.
- * <li>throw a WebServiceException and the endpoint MUST fail to start
- * </ul>
- * <li> DISABLED: In this Mode, an implementation may choose whether
- * to inspect the <code>wsdl:binding<code> or not and to what degree
- * the <code>wsdl:binding</code> will be inspected. For example,
- * one implementation may choose to behave as if this feature is enabled,
- * another implementation may only choose to verify the SEI's
- * parameter/return type bindings.
- * </ul>
- *
- * @see javax.xml.ws.soap.AddressingFeature
- *
- * @since JAX-WS 2.1
- */
-public final class RespectBindingFeature extends WebServiceFeature
-{
- /**
- *
- * Constant value identifying the RespectBindingFeature
- */
- public static final String ID = "javax.xml.ws.InspectBindingFeature";
-
- /**
- * Create an <code>RespectBindingFeature</code>.
- * The instance created will be enabled.
- */
- public RespectBindingFeature()
- {
- this.enabled = true;
- }
-
- /**
- * Create an RespectBindingFeature
- *
- * @param enabled specifies whether this feature should
- * be enabled or not.
- */
- public RespectBindingFeature(boolean enabled)
- {
- this.enabled = enabled;
- }
-
- /**
- * {@inheritDoc}
- */
- public String getID()
- {
- return ID;
- }
-}
Deleted: stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/Service21.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,455 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.spi.ServiceDelegate21;
-import javax.xml.bind.JAXBContext;
-import java.net.URL;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public class Service21 extends Service
-{
-
- protected Service21(URL wsdlDocumentLocation, QName serviceName)
- {
- super(wsdlDocumentLocation, serviceName);
- }
-
- /**
- * Create a <code>Service</code> instance.
- *
- * The specified WSDL document location and service qualified name MUST
- * uniquely identify a <code>wsdl:service</code> element.
- *
- * @param wsdlLocation URL for the WSDL document location
- * for the service
- * @param serviceName QName for the service
- * @throws WebServiceException If any error in creation of the
- * specified service.
- **/
- public static Service21 create(URL wsdlLocation, QName serviceName)
- {
- return new Service21(wsdlLocation, serviceName);
- }
-
- /**
- * Create a <code>Service</code> instance.
- *
- * @param serviceName QName for the service
- * @throws WebServiceException If any error in creation of the
- * specified service
- */
- public static Service21 create(QName serviceName)
- {
- return create(null, serviceName);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with objects of
- * the users choosing. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the dispatch accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * <p>
- * This method behaves the same as calling
- * <pre>
- * dispatch = service.createDispatch(portName, type, mode, features);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
- * element in the
- * metadata of the <code>endpointReference</code>.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned <code>Dispatch</code> object.
- * @param type The class of object used to messages or message
- * payloads. Implementations are required to support
- * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
- * when type is SOAPMessage.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance
- * @throws WebServiceException
- * <UL>
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <li>If the <code>wsaw:ServiceName</code>
element
- * or the <code>wsaw:EndpointName</code> attribute
- * is missing in the metdata of the
- * <code>endpointReference</code>.
- * <li>If the <code>wsaw:ServiceName</code>
does not
- * match the <code>serviceName</code> of this
instance.
- * <li>If the <code>wsaw:EndpointName</code>
does not
- * match a valid wsdl:Port in the WSDL metadata.
- * <li>If any error in the creation of
- * the <code>Dispatch</code> object.
- * <li>if a feature is enabled that is not
- * compatible with this port or is unsupported.
- * </UL>
- *
- * @see javax.xml.transform.Source
- * @see javax.xml.soap.SOAPMessage
- * @see WebServiceFeature;
- *
- * @since JAX-WS 2.1
- **/
- public <T> Dispatch<T> createDispatch(EndpointReference
endpointReference, Class<T> type, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(endpointReference, type,
mode, features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with JAXB
- * generated objects. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the dispatch accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * <p>
- * This method behavies the same as calling
- * <pre>
- * dispatch = service.createDispatch(portName, context, mode, features);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpointName</code> attribute of the
<code>wsaw:ServiceName</code>
- * element in the
- * metadata of the <code>endpointReference</code>.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned <code>Dispatch</code> object.
- * @param context The JAXB context used to marshall and unmarshall
- * messages or message payloads.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance
- * @throws WebServiceException
- * @throws WebServiceException
- * <UL>
- * <li>If there is any missing WSDL metadata
- * as required by this method.
- * <li>If the <code>wsaw:ServiceName</code>
element
- * or the <code>wsaw:EndpointName</code> attribute
- * is missing in the metdata of the
- * <code>endpointReference</code>.
- * <li>If the <code>wsaw:ServiceName</code> does
not
- * match the <code>serviceName</code> of this
instance.
- * <li>If the <code>wsaw:EndpointName</code> does
not
- * match a valid wsdl:Port in the WSDL metadata.
- * <li>If any error in the creation of
- * the <code>Dispatch</code> object.
- * <li>if a feature is enabled that is not
- * compatible with this port or is unsupported.
- * </UL>
- *
- * @see javax.xml.bind.JAXBContext
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public Dispatch<Object> createDispatch(EndpointReference endpointReference,
JAXBContext context, Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(endpointReference, context,
mode, features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with objects of
- * the users choosing.
- *
- * @param portName Qualified name for the target service endpoint
- * @param type The class of object used for messages or message
- * payloads. Implementations are required to support
- * javax.xml.transform.Source and javax.xml.soap.SOAPMessage.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body. Mode MUST be MESSAGE
- * when type is SOAPMessage.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance.
- * @throws WebServiceException If any error in the creation of
- * the <code>Dispatch</code> object or if a
- * feature is enabled that is not compatible with
- * this port or is unsupported.
- *
- * @see javax.xml.transform.Source
- * @see javax.xml.soap.SOAPMessage
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> Dispatch<T> createDispatch(QName portName, Class<T> type,
Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(portName, type, mode,
features);
- }
-
- /**
- * Creates a <code>Dispatch</code> instance for use with JAXB
- * generated objects.
- *
- * @param portName Qualified name for the target service endpoint
- * @param context The JAXB context used to marshall and unmarshall
- * messages or message payloads.
- * @param mode Controls whether the created dispatch instance is message
- * or payload oriented, i.e. whether the user will work with complete
- * protocol messages or message payloads. E.g. when using the SOAP
- * protocol, this parameter controls whether the user will work with
- * SOAP messages or the contents of a SOAP body.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- *
- * @return Dispatch instance.
- * @throws WebServiceException If any error in the creation of
- * the <code>Dispatch</code> object or if a
- * feature is enabled that is not compatible with
- * this port or is unsupported.
- *
- * @see javax.xml.bind.JAXBContext
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public Dispatch<Object> createDispatch(QName portName, JAXBContext context,
Service.Mode mode, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).createDispatch(portName, context, mode,
features);
- }
-
-
- /**
- * The getPort method returns a proxy. The parameter
- * <code>serviceEndpointInterface</code> specifies the service
- * endpoint interface that is supported by the returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly.
- * The returned proxy should not be reconfigured by the client.
- *
- * @param serviceEndpointInterface Service endpoint interface.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object instance that supports the
- * specified service endpoint interface.
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- *
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(Class<T> serviceEndpointInterface,
WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(serviceEndpointInterface, features);
- }
-
- /**
- * The getPort method returns a proxy.
- * The parameter <code>endpointReference</code> specifies the
- * endpoint that will be invoked by the returned proxy. If there
- * are any reference parameters in the
- * <code>endpointReference</code>, then those reference
- * parameters MUST appear as SOAP headers, indicating them to be
- * reference parameters, on all messages sent to the endpoint.
- * The <code>endpointReference's</code> address MUST be used
- * for invocations on the endpoint.
- * The parameter <code>serviceEndpointInterface</code> specifies
- * the service endpoint interface that is supported by the
- * returned proxy.
- * In the implementation of this method, the JAX-WS
- * runtime system takes the responsibility of selecting a protocol
- * binding (and a port) and configuring the proxy accordingly from
- * the WSDL associated with this <code>Service</code> instance or
- * from the WSDL Metadata from the <code>endpointReference</code>.
- * If this <code>Service</code> instance has a WSDL and
- * the <code>endpointReference</code>
- * also has a WSDL, then the WSDL from this instance will be used.
- * If this <code>Service</code> instance does not have a WSDL and
- * the <code>endpointReference</code> does have a WSDL, then the
- * WSDL from the <code>endpointReference</code> will be used.
- * The returned proxy should not be reconfigured by the client.
- * If this <code>Service</code> instance has a known proxy
- * port that matches the information contained in
- * the WSDL,
- * then that proxy is returned, otherwise a WebServiceException
- * is thrown.
- * <p>
- * Calling this method has the same behavior as the following
- * <pre>
- * port = service.getPort(portName, serviceEndpointInterface);
- * </pre>
- * where the <code>portName</code> is retrieved from the
- * <code>wsaw:EndpontName</code> attribute of the
- * <code>wsaw:ServiceName</code> element in the
- * metadata of the <code>endpointReference</code> or from the
- * <code>serviceEndpointInterface</code> and the WSDL
- * associated with this <code>Service</code> instance.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">W... -
WSDL 1.0
- * </a>.
- *
- * @param endpointReference The <code>EndpointReference</code>
- * for the target service endpoint that will be invoked by the
- * returned proxy.
- * @param serviceEndpointInterface Service endpoint interface.
- * @param features An array of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that supports the
- * specified service endpoint interface.
- * @throws WebServiceException
- * <UL>
- * <LI>If there is an error during creation
- * of the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If the <code>wsaw:EndpointName</code> is
- * missing from the <code>endpointReference</code>
- * or does not match a wsdl:Port
- * in the WSDL metadata.
- * <LI>If the <code>wsaw:ServiceName</code> in the
- * <code>endpointReference</code> metadata does not
- * match the <code>serviceName</code> of this
- * <code>Service</code> instance.
- * <LI>If an invalid
- * <code>endpointReference</code>
- * is specified.
- * <LI>If an invalid
- * <code>serviceEndpointInterface</code>
- * is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(EndpointReference endpointReference, Class<T>
serviceEndpointInterface, WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(endpointReference,
serviceEndpointInterface, features);
- }
-
- /**
- * The getPort method returns a proxy. A service client
- * uses this proxy to invoke operations on the target
- * service endpoint. The <code>serviceEndpointInterface</code>
- * specifies the service endpoint interface that is supported by
- * the created dynamic proxy instance.
- *
- * @param portName Qualified name of the service endpoint in
- * the WSDL service description.
- * @param serviceEndpointInterface Service endpoint interface
- * supported by the dynamic proxy instance.
- * @param features A list of WebServiceFeatures to configure on the
- * proxy. Supported features not in the <code>features
- * </code> parameter will have their default values.
- * @return Object Proxy instance that
- * supports the specified service endpoint
- * interface.
- * @throws WebServiceException This exception is thrown in the
- * following cases:
- * <UL>
- * <LI>If there is an error in creation of
- * the proxy.
- * <LI>If there is any missing WSDL metadata
- * as required by this method.
- * <LI>If an illegal
- * <code>serviceEndpointInterface</code>
- * or <code>portName</code> is specified.
- * <LI>If a feature is enabled that is not compatible
- * with this port or is unsupported.
- * </UL>
- * @see java.lang.reflect.Proxy
- * @see java.lang.reflect.InvocationHandler
- * @see WebServiceFeature
- *
- * @since JAX-WS 2.1
- **/
- public <T> T getPort(QName portName, Class<T> serviceEndpointInterface,
WebServiceFeature... features)
- {
- return ((ServiceDelegate21)delegate).getPort(portName, serviceEndpointInterface,
features);
- }
-}
Deleted:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceContext21.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,103 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-import org.w3c.dom.Element;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- */
-public interface WebServiceContext21 extends WebServiceContext
-{
- /**
- * Returns the <code>WEndpointReference</code> for this
- * endpoint.
- * <p>
- * If the Binding for this <code>bindingProvider</code> is
- * either SOAP1.1/HTTP or SOAP1.2/HTTP, then a
- * <code>W3CEndpointReference</code> MUST be returned.
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of the endpoint associated with this
- * <code>WebServiceContext</code>.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
- *
- * @throws IllegalStateException This exception is thrown
- * if the method is called while no request is
- * being serviced.
- *
- * @see javax.xml.ws.wsaddressing.W3CEndpointReference
- *
- * @since JAX-WS 2.1
- */
- public EndpointReference getEndpointReference(Element... referenceParameters);
-
- /**
- * Returns the <code>EndpointReference</code> associated with
- * this endpoint.
- * <p>
- * If the returned <code>EndpointReference</code> is a
- * <code>W3CEndpointReference</code> it MUST contain
- * the <code>wsaw:ServiceName</code> element and the
- * <code>wsaw:EndpointName</code> attribute on the
- * <code>wsaw:ServiceName</code>. It SHOULD contain
- * the embedded WSDL in the <code>wsa:Metadata</code> element
- * if there is an associated WSDL. The
- * <code>wsaw:InterfaceName</code> MAY also be present.
- * <br>
- * See <a
href="http://www.w3.org/TR/2006/CR-ws-addr-wsdl-20060529/">
- * WS-Addressing - WSDL 1.0</a>.
- *
- * @param clazz The type of <code>EndpointReference</code> that
- * MUST be returned.
- * @param referenceParameters Reference parameters to be associated with the
- * returned <code>EndpointReference</code> instance.
- * @return EndpointReference of type <code>clazz</code> of the endpoint
- * associated with this <code>WebServiceContext</code> instance.
- * If the returned <code>EndpointReference</code> is of type
- * <code>W3CEndpointReference</code> then it MUST contain the
- * the specified <code>referenceParameters</code>.
- *
- * @throws IllegalStateException This exception is thrown
- * if the method is called while no request is
- * being serviced.
- * @throws WebServiceException If the <code>clazz</code> type of
- * <code>EndpointReference</code> is not supported.
- *
- * @since JAX-WS 2.1
- **/
- public abstract <T extends EndpointReference> T
getEndpointReference(Class<T> clazz, Element... referenceParameters);
-}
Deleted:
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java
===================================================================
---
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/jaxws-ext/src/main/java/javax/xml/ws/WebServiceFeature.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -1,77 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package javax.xml.ws;
-
-/**
- * A WebServiceFeature is used to represent a feature that can be
- * enabled or disabled for a web service.
- * <p>
- * The JAX-WS specification will define some standard features and
- * JAX-WS implementors are free to define additional features if
- * necessary. Vendor specific features may not be portable so
- * caution should be used when using them. Each Feature definition
- * MUST define a <code>public static final String ID</code>
- * that can be used in the Feature annotation to refer
- * to the feature. This ID MUST be unique across all features
- * of all vendors. When defining a vendor specific feature ID,
- * use a vendor specific namespace in the ID string.
- *
- * @see javax.xml.ws.RespectBindingFeature
- * @see javax.xml.ws.soap.AddressingFeature
- * @see javax.xml.ws.soap.MTOMFeature
- *
- * @since 2.1
- */
-public abstract class WebServiceFeature
-{
- /**
- * Each Feature definition MUST define a public static final
- * String ID that can be used in the Feature annotation to refer
- * to the feature.
- */
- // public static final String ID = "some unique feature Identifier";
- /**
- * Get the unique identifier for this WebServiceFeature.
- *
- * @return the unique identifier for this feature.
- */
- public abstract String getID();
-
- /**
- * Specifies if the feature is enabled or disabled
- */
- protected boolean enabled = false;
-
- protected WebServiceFeature()
- {
- }
-
- /**
- * Returns <code>true</code> if this feature is enabled.
- *
- * @return <code>true</code> if and only if the feature is enabled .
- */
- public boolean isEnabled()
- {
- return enabled;
- }
-}
Copied:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java
(from rev 9105,
stack/native/branches/jaxws21/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java)
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java
(rev 0)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/common/wsdl11/WSDLExtensElemTestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,129 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.test.ws.common.wsdl11;
+
+import java.io.File;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.jboss.ws.Constants;
+import org.jboss.ws.metadata.wsdl.WSDLBinding;
+import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
+import org.jboss.ws.metadata.wsdl.WSDLEndpoint;
+import org.jboss.ws.metadata.wsdl.WSDLExtensibilityElement;
+import org.jboss.ws.metadata.wsdl.WSDLService;
+import org.jboss.ws.tools.wsdl.WSDLDefinitionsFactory;
+import org.jboss.wsf.test.JBossWSTest;
+import org.w3c.dom.Element;
+
+/**
+ * Test the unmarshalling of wsdl-1.1 into the unified wsdl structure
+ * using known and unknown wsdl extensibility elements.
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 15-Jan-2009
+ */
+public class WSDLExtensElemTestCase extends JBossWSTest
+{
+ public void testPolicyEndpointExtensibilityElements() throws Exception
+ {
+ File wsdlFile = getResourceFile("common/wsdl11/PolicyAttachment.wsdl");
+ assertTrue(wsdlFile.exists());
+
+ WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
+ WSDLDefinitions wsdlDefinitions = factory.parse(wsdlFile.toURL());
+ WSDLService wsdlService = wsdlDefinitions.getServices()[0];
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoints()[0];
+
+ List<WSDLExtensibilityElement> extPortList =
wsdlEndpoint.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extPortList);
+ assertEquals(extPortList.size(),1);
+ assertPolicyRef(extPortList.get(0),"uselessPortPolicy");
+ List<WSDLExtensibilityElement> portNotUnderstoodList =
wsdlEndpoint.getNotUnderstoodExtElements();
+ assertNotNull(portNotUnderstoodList);
+ assertEquals(0, portNotUnderstoodList.size());
+
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ List<WSDLExtensibilityElement> extBinding =
wsdlBinding.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extBinding);
+ assertEquals(extBinding.size(),2);
+ assertPolicyRef(extBinding.get(0),"RmPolicy");
+ assertPolicyRef(extBinding.get(1),"X509EndpointPolicy");
+ List<WSDLExtensibilityElement> bindingNotUnderstoodList =
wsdlBinding.getNotUnderstoodExtElements();
+ assertNotNull(bindingNotUnderstoodList);
+ assertEquals(0, bindingNotUnderstoodList.size());
+ }
+
+ public void testPolicyAndUnkwnownEndpointExtensibilityElements() throws Exception
+ {
+ File wsdlFile =
getResourceFile("common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl");
+ assertTrue(wsdlFile.exists());
+
+ WSDLDefinitionsFactory factory = WSDLDefinitionsFactory.newInstance();
+ WSDLDefinitions wsdlDefinitions = factory.parse(wsdlFile.toURL());
+ WSDLService wsdlService = wsdlDefinitions.getServices()[0];
+ WSDLEndpoint wsdlEndpoint = wsdlService.getEndpoints()[0];
+
+ List<WSDLExtensibilityElement> extPortList =
wsdlEndpoint.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extPortList);
+ assertEquals(extPortList.size(),1);
+ assertPolicyRef(extPortList.get(0),"uselessPortPolicy");
+ List<WSDLExtensibilityElement> portNotUnderstoodList =
wsdlEndpoint.getNotUnderstoodExtElements();
+ assertNotNull(portNotUnderstoodList);
+ assertEquals(1, portNotUnderstoodList.size());
+ assertUnknownExtElem(portNotUnderstoodList.get(0), "foo1",
"http://foo.org/foo1", "bar", true);
+
+ WSDLBinding wsdlBinding = wsdlDefinitions.getBinding(wsdlEndpoint.getBinding());
+ List<WSDLExtensibilityElement> extBinding =
wsdlBinding.getExtensibilityElements(
+ Constants.WSDL_ELEMENT_POLICYREFERENCE);
+ assertNotNull(extBinding);
+ assertEquals(extBinding.size(),2);
+ assertPolicyRef(extBinding.get(0),"RmPolicy");
+ assertPolicyRef(extBinding.get(1),"X509EndpointPolicy");
+ List<WSDLExtensibilityElement> bindingNotUnderstoodList =
wsdlBinding.getNotUnderstoodExtElements();
+ assertNotNull(bindingNotUnderstoodList);
+ assertEquals(2, bindingNotUnderstoodList.size());
+ assertUnknownExtElem(bindingNotUnderstoodList.get(0), "foo1",
"http://foo.org/foo1", "bar", false);
+ assertUnknownExtElem(bindingNotUnderstoodList.get(1), "foo2",
"http://foo.org/foo2", "bar", false);
+ }
+
+ private static void assertPolicyRef(WSDLExtensibilityElement extEl, String policyURI)
+ {
+ Element el = extEl.getElement();
+ QName qName = new QName(el.getNamespaceURI(),el.getLocalName(),el.getPrefix());
+ assertEquals(qName,new
QName("http://schemas.xmlsoap.org/ws/2004/09/policy","Poli...);
+
assertEquals(el.getAttributeNode("URI").getValue(),"#"+policyURI);
+ }
+
+ private static void assertUnknownExtElem(WSDLExtensibilityElement extEl, String
prefix, String namespaceURI, String localName, boolean required)
+ {
+ Element el = extEl.getElement();
+ QName qName = new QName(el.getNamespaceURI(),el.getLocalName(),el.getPrefix());
+ assertEquals(qName, new QName(namespaceURI, localName, prefix));
+ assertEquals(required,
"true".equals(el.getAttributeNS(Constants.NS_WSDL11, "required")));
+ assertEquals(required, extEl.isRequired());
+ }
+}
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/endpoint/EndpointServlet.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -32,14 +32,20 @@
import javax.servlet.http.HttpServletResponse;
import javax.xml.namespace.QName;
import javax.xml.ws.Endpoint;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+import org.jboss.logging.Logger;
+import org.jboss.wsf.common.DOMUtils;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.http.HttpContext;
import org.jboss.wsf.spi.http.HttpServer;
import org.jboss.wsf.spi.http.HttpServerFactory;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* Test Endpoint deployment
@@ -50,6 +56,7 @@
public class EndpointServlet extends HttpServlet
{
private Endpoint endpoint;
+ private static final String TEST_ELEMENT = "<fabrikam:CustomerKey
xmlns:fabrikam='http://example.com/fabrikam'>123456789</fab...;
@Override
public void init(ServletConfig config) throws ServletException
@@ -90,9 +97,32 @@
// Invoke the endpoint
String param = req.getParameter("param");
String retStr = port.echo(param);
+
+ //Test epr
+
assertEndpointReference(endpoint.getEndpointReference(DOMUtils.parse(TEST_ELEMENT)),
TEST_ELEMENT);
+ assertEndpointReference(endpoint.getEndpointReference(W3CEndpointReference.class,
(Element[])null), null);
// Return the result
PrintWriter pw = new PrintWriter(res.getWriter());
pw.print(retStr);
}
+
+
+
+ private void assertEndpointReference(EndpointReference epr, String refPar) throws
IOException
+ {
+ Logger.getLogger(this.getClass()).info("epr: "+epr);
+ assert(W3CEndpointReference.class.getName().equals(epr.getClass().getName()));
+ Element endpointReference = DOMUtils.parse(epr.toString());
+ assert("EndpointReference".equals(endpointReference.getNodeName()));
+
assert("http://www.w3.org/2005/08/addressing".equals(endpointRe...;
+ NodeList addresses = endpointReference.getElementsByTagName("Address");
+ assert(addresses.getLength() == 1);
+
assert("http://127.0.0.1:8080/jaxws-endpoint".equals(addresses.item(0).getFirstChild().getNodeValue()));
+ if (refPar != null)
+ {
+ //TODO enhance this check
+ assert(epr.toString().contains(refPar));
+ }
+ }
}
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/epr/EndpointReferenceTestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -24,8 +24,10 @@
import java.net.URL;
import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.EndpointReference;
import javax.xml.ws.Service;
-import javax.xml.ws.Service21;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
@@ -75,10 +77,35 @@
builder.referenceParameter(DOMUtils.parse("<fabrikam:ShoppingCart
xmlns:fabrikam='http://example.com/fabrikam'>ABCDEFG</fabri...;
W3CEndpointReference epr = builder.build();
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
TestEndpoint port = service.getPort(epr, TestEndpoint.class);
((StubExt)port).setConfigName("Standard WSAddressing Client");
String retStr = port.echo("hello");
assertEquals("hello|123456789|ABCDEFG", retStr);
}
+
+ public void testEndpointReferenceFromSource() throws Exception
+ {
+ String address = "http://" + getServerHost() +
":8080/jaxws-epr/TestEndpointImpl";
+ URL wsdlURL = new URL(address + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/epr",
"TestEndpointService");
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("<EndpointReference
xmlns=\"http://www.w3.org/2005/08/addressing\">");
+
sb.append("<Address>").append(address).append("</Address>");
+
sb.append("<ServiceName>").append(serviceName).append("</ServiceName>");
+ sb.append("<ReferenceParameters>");
+ sb.append("<fabrikam:CustomerKey
xmlns:fabrikam='http://example.com/fabrikam'>123456789</fab...);
+ sb.append("<fabrikam:ShoppingCart
xmlns:fabrikam='http://example.com/fabrikam'>ABCDEFG</fabri...);
+ sb.append("</ReferenceParameters>");
+ sb.append("</EndpointReference>");
+ Source eprInfoset = new StreamSource(new java.io.StringReader(sb.toString()));
+ EndpointReference epr = EndpointReference.readFrom(eprInfoset);
+
+ Service service = Service.create(wsdlURL, serviceName);
+ TestEndpoint port = service.getPort(epr, TestEndpoint.class);
+ ((StubExt)port).setConfigName("Standard WSAddressing Client");
+ String retStr = port.echo("hello");
+ assertEquals("hello|123456789|ABCDEFG", retStr);
+ }
}
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/fastinfoset/FastInfosetTestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -28,7 +28,7 @@
import java.net.URLConnection;
import javax.xml.namespace.QName;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
import junit.framework.Test;
@@ -85,7 +85,7 @@
{
URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-fastinfoset?wsdl");
QName serviceName = new QName("http://org.jboss.ws/fastinfoset",
"FastInfosetEndpointService");
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
FastInfosetFeature feature = new FastInfosetFeature();
FastInfoset port = service.getPort(FastInfoset.class, feature);
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/jbws1172/JBWS1172TestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -21,14 +21,12 @@
*/
package org.jboss.test.ws.jaxws.jbws1172;
-import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
-import javax.xml.ws.Service21;
import junit.framework.Test;
@@ -96,7 +94,7 @@
URL wsdlURL =
getResourceURL("jaxws/jbws1172/WEB-INF/wsdl/TestService.wsdl");
URL xsdURL = new SchemaExtractor().getSchemaUrl(wsdlURL);
- Service21 service = Service21.create(wsdlURL, SERVICE_NAME);
+ Service service = Service.create(wsdlURL, SERVICE_NAME);
SchemaValidationFeature feature = new SchemaValidationFeature(xsdURL.toString());
MyTest port = service.getPort(MyTest.class, feature);
try
@@ -117,7 +115,7 @@
URL wsdlURL =
getResourceURL("jaxws/jbws1172/WEB-INF/wsdl/TestService.wsdl");
URL xsdURL = new SchemaExtractor().getSchemaUrl(wsdlURL);
- Service21 service = Service21.create(wsdlURL, SERVICE_NAME);
+ Service service = Service.create(wsdlURL, SERVICE_NAME);
SchemaValidationFeature feature = new SchemaValidationFeature(xsdURL.toString());
TestErrorHandler errorHandler = new TestErrorHandler();
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/json/JsonTestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -24,7 +24,7 @@
import java.net.URL;
import javax.xml.namespace.QName;
-import javax.xml.ws.Service21;
+import javax.xml.ws.Service;
import junit.framework.Test;
@@ -49,7 +49,7 @@
{
URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-json?wsdl");
QName serviceName = new QName("http://org.jboss.ws/json",
"JsonEndpointService");
- Service21 service = Service21.create(wsdlURL, serviceName);
+ Service service = Service.create(wsdlURL, serviceName);
JsonEncodingFeature feature = new JsonEncodingFeature();
JsonPort port = service.getPort(JsonPort.class, feature);
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/AddressingStatefulTestCase.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -29,6 +29,7 @@
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Service;
import javax.xml.ws.handler.Handler;
+import javax.xml.ws.soap.AddressingFeature;
import junit.framework.Test;
@@ -71,11 +72,10 @@
bindingProvider.getBinding().setHandlerChain(customHandlerChain);
Service service2 = Service.create(wsdlURL, serviceName);
- port2 = (StatefulEndpoint)service2.getPort(StatefulEndpoint.class);
+ port2 = (StatefulEndpoint)service2.getPort(StatefulEndpoint.class, new
AddressingFeature(true, true));
bindingProvider = (BindingProvider)port2;
List<Handler> customHandlerChain2 = new ArrayList<Handler>();
customHandlerChain2.add(new ClientHandler());
- customHandlerChain2.add(new WSAddressingClientHandler());
bindingProvider.getBinding().setHandlerChain(customHandlerChain2);
}
Modified:
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java 2009-01-23
15:18:55 UTC (rev 9106)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/java/org/jboss/test/ws/jaxws/samples/wsaddressing/StatefulEndpointImpl.java 2009-01-23
15:32:14 UTC (rev 9107)
@@ -34,9 +34,9 @@
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.soap.Addressing;
import org.jboss.logging.Logger;
-import org.jboss.ws.annotation.EndpointConfig;
/**
* WS-Addressing stateful service endpoint
@@ -45,7 +45,7 @@
* @since 24-Nov-2005
*/
@WebService(name = "StatefulEndpoint", targetNamespace =
"http://org.jboss.ws/samples/wsaddressing", serviceName =
"TestService")
-@EndpointConfig(configName = "Standard WSAddressing Endpoint")
+@Addressing
@HandlerChain(file = "jaxws-handlers.xml")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class StatefulEndpointImpl implements StatefulEndpoint
Copied:
stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl
(from rev 9105,
stack/native/branches/jaxws21/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl)
===================================================================
---
stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl
(rev 0)
+++
stack/native/trunk/modules/testsuite/native-tests/src/test/resources/common/wsdl11/PolicyAttachmentAndUnknownExtElem.wsdl 2009-01-23
15:32:14 UTC (rev 9107)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<definitions name="TestService"
targetNamespace="http://org.jboss.ws/jaxrpc"
+ xmlns:tns="http://org.jboss.ws/jaxrpc"
+
xmlns="http://schemas.xmlsoap.org/wsdl/"
+
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:ns2="http://org.jboss.ws/jaxrpc/types"
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+
xmlns:fab="http://www.fabrikam123.example.com/stock"
+
xmlns:rmp="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"
+
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
+
xmlns:foo1="http://foo.org/foo1"
+
xmlns:foo2="http://foo.org/foo2"
+
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-w...
>
+ <wsp:Policy wsu:Id="RmPolicy" >
+ <rmp:RMAssertion>
+ <rmp:InactivityTimeout Milliseconds="600000" />
+ <rmp:BaseRetransmissionInterval Milliseconds="3000" />
+ <rmp:ExponentialBackoff />
+ <rmp:AcknowledgementInterval Milliseconds="200" />
+ </rmp:RMAssertion>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="uselessServicePolicy" >
+ <fab:useless>nothing</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="uselessPortPolicy" >
+ <fab:useless>nothing again</fab:useless>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="X509EndpointPolicy" >
+ <sp:AsymmetricBinding>
+ <wsp:Policy>
+ <!-- Details omitted for readability -->
+ <sp:IncludeTimestamp />
+ <sp:OnlySignEntireHeadersAndBody />
+ </wsp:Policy>
+ </sp:AsymmetricBinding>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="SecureMessagePolicy" >
+ <sp:SignedParts>
+ <sp:Body />
+ </sp:SignedParts>
+ <sp:EncryptedParts>
+ <sp:Body />
+ </sp:EncryptedParts>
+ </wsp:Policy>
+ <types>
+ <schema targetNamespace="http://org.jboss.ws/jaxrpc/types"
xmlns:tns="http://org.jboss.ws/jaxrpc/types"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://www.w3.org/2001/XMLSchema">
+ <complexType name="echoSimpleUserType">
+ <sequence>
+ <element name="String_1" type="string"
nillable="true"/>
+ <element name="SimpleUserType_2"
type="tns:SimpleUserType" nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="SimpleUserType">
+ <sequence>
+ <element name="a" type="int"/>
+ <element name="b" type="int"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoSimpleUserTypeResponse">
+ <sequence>
+ <element name="result" type="tns:SimpleUserType"
nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoString">
+ <sequence>
+ <element name="String_1" type="string"
nillable="true"/>
+ <element name="String_2" type="string"
nillable="true"/>
+ </sequence>
+ </complexType>
+ <complexType name="echoStringResponse">
+ <sequence>
+ <element name="result" type="string"
nillable="true"/>
+ </sequence>
+ </complexType>
+ <element name="echoSimpleUserType"
type="tns:echoSimpleUserType"/>
+ <element name="echoSimpleUserTypeResponse"
type="tns:echoSimpleUserTypeResponse"/>
+ <element name="echoString" type="tns:echoString"/>
+ <element name="echoStringResponse"
type="tns:echoStringResponse"/>
+ </schema>
+ </types>
+ <message name="JaxRpcTestService_echoSimpleUserType">
+ <part name="parameters" element="ns2:echoSimpleUserType"/>
+ </message>
+ <message name="JaxRpcTestService_echoSimpleUserTypeResponse">
+ <part name="result"
element="ns2:echoSimpleUserTypeResponse"/>
+ </message>
+ <message name="JaxRpcTestService_echoString">
+ <part name="parameters" element="ns2:echoString"/>
+ </message>
+ <message name="JaxRpcTestService_echoStringResponse">
+ <part name="result" element="ns2:echoStringResponse"/>
+ </message>
+ <portType name="JaxRpcTestService"
wsp:PolicyURIs="#RmPolicy">
+ <operation name="echoSimpleUserType">
+ <input message="tns:JaxRpcTestService_echoSimpleUserType"/>
+ <output
message="tns:JaxRpcTestService_echoSimpleUserTypeResponse"/>
+ </operation>
+ <operation name="echoString">
+ <input message="tns:JaxRpcTestService_echoString"/>
+ <output message="tns:JaxRpcTestService_echoStringResponse"/>
+ </operation>
+ </portType>
+ <binding name="JaxRpcTestServiceBinding"
type="tns:JaxRpcTestService">
+ <soap:binding
transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
+ <wsp:PolicyReference URI="#RmPolicy" wsdl:required="true"
/>
+ <wsp:PolicyReference URI="#X509EndpointPolicy"
wsdl:required="true" />
+ <foo1:bar wsdl:required="false"/>
+ <foo2:bar/>
+ <operation name="echoSimpleUserType">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="echoString">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ </binding>
+ <service name="TestService">
+ <wsp:PolicyReference URI="#uselessServicePolicy"
wsdl:required="true" />
+ <port name="JaxRpcTestServicePort"
binding="tns:JaxRpcTestServiceBinding">
+ <wsp:PolicyReference URI="#uselessPortPolicy"
wsdl:required="true" />
+ <foo1:bar wsdl:required="true"/>
+ <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
+ </port>
+ </service>
+</definitions>
Modified: stack/native/trunk/src/main/scripts/assembly-bin-dist.xml
===================================================================
--- stack/native/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:18:55 UTC (rev
9106)
+++ stack/native/trunk/src/main/scripts/assembly-bin-dist.xml 2009-01-23 15:32:14 UTC (rev
9107)
@@ -99,10 +99,12 @@
<include>ant-import/**</include>
<include>java/org/jboss/test/ws/console/**</include>
<include>java/org/jboss/test/ws/jaxws/samples/**</include>
+ <include>java/org/jboss/test/ws/jaxws/smoke/**</include>
<include>java/org/jboss/test/ws/management/**</include>
<include>java/org/jboss/test/ws/projectGenerator/**</include>
<include>resources/console/**</include>
<include>resources/jaxws/samples/**</include>
+ <include>resources/jaxws/smoke/**</include>
<include>resources/management/**</include>
<include>resources/projectGenerator/**</include>
</includes>