[jbossws-commits] JBossWS SVN: r12930 - stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Wed Sep 8 05:59:00 EDT 2010
Author: richard.opalka at jboss.com
Date: 2010-09-08 05:58:59 -0400 (Wed, 08 Sep 2010)
New Revision: 12930
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java
Log:
[JBWS-3122] implementing @WebServiceRef with @Addressing feature
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java 2010-09-08 09:56:23 UTC (rev 12929)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java 2010-09-08 09:58:59 UTC (rev 12930)
@@ -39,6 +39,8 @@
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceRefs;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.AddressingFeature;
import org.jboss.logging.Logger;
import org.jboss.util.naming.Util;
@@ -66,11 +68,15 @@
// Build the list of @WebServiceRef relevant annotations
List<WebServiceRef> wsrefList = new ArrayList<WebServiceRef>();
+ Addressing addressing = null;
if (anElement != null)
{
for (Annotation an : anElement.getAnnotations())
{
+ if (an instanceof Addressing)
+ addressing = (Addressing)an;
+
if (an instanceof WebServiceRef)
wsrefList.add((WebServiceRef)an);
@@ -82,6 +88,22 @@
}
}
}
+
+ if (addressing != null)
+ {
+ if (addressing.enabled())
+ serviceRef.setAddressingEnabled();
+
+ if (addressing.required())
+ serviceRef.setAddressingRequired();
+
+ if (addressing.responses() == AddressingFeature.Responses.ANONYMOUS)
+ serviceRef.setAddressingResponses("ANONYMOUS");
+ else if (addressing.responses() == AddressingFeature.Responses.NON_ANONYMOUS)
+ serviceRef.setAddressingResponses("NON_ANONYMOUS");
+ else
+ serviceRef.setAddressingResponses("ALL");
+ }
// Use the single @WebServiceRef
if (wsrefList.size() == 1)
Modified: stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java
===================================================================
--- stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java 2010-09-08 09:56:23 UTC (rev 12929)
+++ stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java 2010-09-08 09:58:59 UTC (rev 12930)
@@ -30,6 +30,9 @@
import javax.naming.*;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.AddressingFeature;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
@@ -112,6 +115,20 @@
// Receives either a javax.xml.ws.Service or a dynamic proxy
Object target;
+
+ // configure addressing
+ AddressingFeature addressingFeature = null;
+ if (serviceRef.isAddressingEnabled()) {
+ final boolean enabled = serviceRef.isAddressingEnabled();
+ final boolean required = serviceRef.isAddressingRequired();
+ final String refResponses = serviceRef.getAddressingResponses();
+ AddressingFeature.Responses responses = AddressingFeature.Responses.ALL;
+ if ("ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.ANONYMOUS;
+ if ("NON_ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.NON_ANONYMOUS;
+ addressingFeature = new AddressingFeature(enabled, required, responses);
+ }
// Get the URL to the wsdl
URL wsdlURL = serviceRef.getWsdlLocation();
@@ -125,7 +142,11 @@
{
if (wsdlURL != null)
{
- target = Service.create(wsdlURL, serviceQName);
+ if (addressingFeature != null) {
+ target = Service.create(wsdlURL, serviceQName, new WebServiceFeature[] { addressingFeature });
+ } else {
+ target = Service.create(wsdlURL, serviceQName);
+ }
}
else
{
@@ -137,12 +158,22 @@
{
if (wsdlURL != null)
{
- Constructor ctor = serviceClass.getConstructor(new Class[] { URL.class, QName.class });
- target = ctor.newInstance(new Object[] { wsdlURL, serviceQName });
+ if (addressingFeature != null) {
+ Constructor ctor = serviceClass.getConstructor(new Class[] { URL.class, QName.class, WebServiceFeature[].class });
+ target = ctor.newInstance(new Object[] { wsdlURL, serviceQName, new WebServiceFeature[] { addressingFeature } });
+ } else {
+ Constructor ctor = serviceClass.getConstructor(new Class[] { URL.class, QName.class });
+ target = ctor.newInstance(new Object[] { wsdlURL, serviceQName });
+ }
}
else
{
- target = (Service)serviceClass.newInstance();
+ if (addressingFeature != null) {
+ Constructor ctor = serviceClass.getConstructor(new Class[] { WebServiceFeature[].class });
+ target = ctor.newInstance(new Object[] { new WebServiceFeature[] { addressingFeature } });
+ } else {
+ target = (Service)serviceClass.newInstance();
+ }
}
}
}
More information about the jbossws-commits
mailing list