You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2011/04/18 09:59:38 UTC
svn commit: r1094334 - in /geronimo/server/trunk/plugins:
axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/
cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/
cxf/geronimo-cxf/src/main/java/org/apache/ge...
Author: xuhaihong
Date: Mon Apr 18 07:59:38 2011
New Revision: 1094334
URL: http://svn.apache.org/viewvc?rev=1094334&view=rev
Log:
GERONIMO-5905 GERONIMO-5906 GERONIMO-5907 Add WebServiceFeature annotation support for WebServiceClient annotation
Added:
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java (with props)
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java (with props)
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java (with props)
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java (with props)
Modified:
geronimo/server/trunk/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2ServiceRefBuilder.java
geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java (contents, props changed)
geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java (contents, props changed)
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationHelper.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/AnnotationHelperTest.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationExample.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/resources/annotation/webservice-ref-expected.xml
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/EndpointInfoBuilder.java
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/EndpointInfo.java
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/JAXWSServiceReference.java
geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/PortMethodInterceptor.java
Modified: geronimo/server/trunk/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2ServiceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2ServiceRefBuilder.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2ServiceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/axis2/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2ServiceRefBuilder.java Mon Apr 18 07:59:38 2011
@@ -57,20 +57,15 @@ public class Axis2ServiceRefBuilder exte
private static final Logger log = LoggerFactory.getLogger(Axis2ServiceRefBuilder.class);
- public Axis2ServiceRefBuilder(@ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment,
- @ParamAttribute(name = "eeNamespaces") String[] eeNamespaces) {
+ public Axis2ServiceRefBuilder(@ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment, @ParamAttribute(name = "eeNamespaces") String[] eeNamespaces) {
super(defaultEnvironment, eeNamespaces);
}
@Override
- public Object createService(ServiceRef serviceRef, GerServiceRefType gerServiceRef,
- Module module, Bundle bundle, Class serviceInterfaceClass,
- QName serviceQName, URI wsdlURI, Class serviceReferenceType,
- Map<Class, PortComponentRef> portComponentRefMap) throws DeploymentException {
+ protected Object createService(ServiceRef serviceRef, GerServiceRefType gerServiceRef, Module module, Bundle bundle, Class serviceInterfaceClass, QName serviceQName, URI wsdlURI,
+ Class serviceReferenceType, Map<Class<?>, PortComponentRef> portComponentRefMap) throws DeploymentException {
registerConfigGBean(module);
- EndpointInfoBuilder builder = new EndpointInfoBuilder(serviceInterfaceClass,
- gerServiceRef, portComponentRefMap, module, bundle,
- wsdlURI, serviceQName);
+ EndpointInfoBuilder builder = new EndpointInfoBuilder(serviceInterfaceClass, gerServiceRef, portComponentRefMap, module, bundle, wsdlURI, serviceQName);
builder.build();
wsdlURI = builder.getWsdlURI();
@@ -90,22 +85,21 @@ public class Axis2ServiceRefBuilder exte
}
String serviceReferenceName = (serviceReferenceType == null) ? null : serviceReferenceType.getName();
- return new Axis2ServiceReference(serviceInterfaceClass.getName(), serviceReferenceName, wsdlURI,
- serviceQName, module.getModuleName(), handlerChainsXML, seiInfoMap);
+
+ return new Axis2ServiceReference(serviceInterfaceClass.getName(), serviceReferenceName, wsdlURI, serviceQName, module.getModuleName(), handlerChainsXML, seiInfoMap);
}
private void registerConfigGBean(Module module) throws DeploymentException {
EARContext context = module.getEarContext();
- AbstractName containerFactoryName = context.getNaming().createChildName(
- module.getModuleName(), "Axis2ConfigGBean",
- GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
+ AbstractName containerFactoryName = context.getNaming().createChildName(module.getModuleName(), "Axis2ConfigGBean", GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
try {
context.getGBeanInstance(containerFactoryName);
} catch (GBeanNotFoundException e1) {
GBeanData configGBeanData = new GBeanData(containerFactoryName, Axis2ConfigGBean.class);
configGBeanData.setAttribute("moduleName", module.getModuleName());
- configGBeanData.setReferencePattern("Axis2ModuleRegistry", new AbstractNameQuery(Artifact.create("org.apache.geronimo.configs/axis2//car"), Collections.emptyMap(), Axis2ModuleRegistry.class.getName()));
+ configGBeanData.setReferencePattern("Axis2ModuleRegistry", new AbstractNameQuery(Artifact.create("org.apache.geronimo.configs/axis2//car"), Collections.emptyMap(),
+ Axis2ModuleRegistry.class.getName()));
try {
context.addGBean(configGBeanData);
} catch (GBeanAlreadyExistsException e) {
Modified: geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java Mon Apr 18 07:59:38 2011
@@ -43,7 +43,7 @@ import org.slf4j.LoggerFactory;
public class CXFServiceRefBuilder extends JAXWSServiceRefBuilder {
private static final Logger LOG = LoggerFactory.getLogger(CXFServiceRefBuilder.class);
-
+
public CXFServiceRefBuilder(Environment defaultEnvironment,
String[] eeNamespaces) {
super(defaultEnvironment, eeNamespaces);
@@ -51,11 +51,11 @@ public class CXFServiceRefBuilder extend
@Override
public Object createService(ServiceRef serviceRef, GerServiceRefType gerServiceRef,
- Module module, Bundle bundle, Class serviceInterface,
- QName serviceQName, URI wsdlURI, Class serviceReference,
- Map<Class, PortComponentRef> portComponentRefMap) throws DeploymentException {
+ Module module, Bundle bundle, Class serviceInterface,
+ QName serviceQName, URI wsdlURI, Class serviceReference,
+ Map<Class<?>, PortComponentRef> portComponentRefMap) throws DeploymentException {
EndpointInfoBuilder builder = new EndpointInfoBuilder(serviceInterface,
- gerServiceRef, portComponentRefMap, module, bundle,
+ gerServiceRef, portComponentRefMap, module, bundle,
wsdlURI, serviceQName);
builder.build();
@@ -72,11 +72,10 @@ public class CXFServiceRefBuilder extend
}
String serviceReferenceName = (serviceReference == null) ? null : serviceReference.getName();
-
- return new CXFServiceReference(serviceInterface.getName(), serviceReferenceName, wsdlURI,
- serviceQName, module.getModuleName(), handlerChainsXML, seiInfoMap);
+
+ return new CXFServiceReference(serviceInterface.getName(), serviceReferenceName, wsdlURI, serviceQName, module.getModuleName(), handlerChainsXML, seiInfoMap);
}
-
+
public static final GBeanInfo GBEAN_INFO;
static {
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf-builder/src/main/java/org/apache/geronimo/cxf/builder/CXFServiceRefBuilder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java (original)
+++ geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java Mon Apr 18 07:59:38 2011
@@ -25,9 +25,6 @@ import javax.naming.NamingException;
import javax.xml.namespace.QName;
import javax.xml.ws.handler.HandlerResolver;
-import org.apache.openejb.jee.HandlerChains;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.jaxws.context.WebServiceContextImpl;
@@ -41,6 +38,9 @@ import org.apache.geronimo.jaxws.client.
import org.apache.geronimo.jaxws.client.JAXWSServiceReference;
import org.apache.geronimo.jaxws.client.PortMethodInterceptor;
import org.apache.geronimo.jaxws.handler.GeronimoHandlerResolver;
+import org.apache.openejb.jee.HandlerChains;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class CXFServiceReference extends JAXWSServiceReference {
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: geronimo/server/trunk/plugins/cxf/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/client/CXFServiceReference.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationHelper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationHelper.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationHelper.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationHelper.java Mon Apr 18 07:59:38 2011
@@ -17,6 +17,7 @@
package org.apache.geronimo.j2ee.deployment.annotation;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -25,11 +26,18 @@ import java.util.Collection;
import java.util.List;
import javax.jws.HandlerChain;
+import javax.xml.ws.RespectBinding;
import javax.xml.ws.WebServiceClient;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceRefs;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.spi.WebServiceFeatureAnnotation;
+
import org.apache.geronimo.common.DeploymentException;
+import org.apache.openejb.jee.Addressing;
+import org.apache.openejb.jee.AddressingResponses;
import org.apache.openejb.jee.JndiConsumer;
+import org.apache.openejb.jee.PortComponentRef;
import org.apache.openejb.jee.ServiceRef;
import org.apache.xbean.finder.AbstractFinder;
import org.slf4j.Logger;
@@ -348,6 +356,83 @@ public final class WebServiceRefAnnotati
serviceRef.getInjectionTarget().add(configureInjectionTarget(method, field));
}
+ // web service features
+ Annotation[] candidateAnnotations = null;
+ if (cls != null) {
+ candidateAnnotations = cls.getAnnotations();
+ } else if (method != null) {
+ candidateAnnotations = method.getAnnotations();
+ } else if (field != null) {
+ candidateAnnotations = field.getAnnotations();
+ }
+ if (candidateAnnotations != null && candidateAnnotations.length > 0) {
+ List<Annotation> webServiceFeatureAnnotations = new ArrayList<Annotation>();
+ for (Annotation anno : candidateAnnotations) {
+ if (anno.annotationType().isAnnotationPresent(WebServiceFeatureAnnotation.class)) {
+ webServiceFeatureAnnotations.add(anno);
+ }
+ }
+ if (webServiceFeatureAnnotations.size() > 0) {
+ if (javax.xml.ws.Service.class.isAssignableFrom(webServiceRefType)) {
+ log.warn("In current JAX-WS spec, no standard web service feature is supported on service creation, " + webServiceFeatureAnnotations + " are ignored");
+ } else {
+ PortComponentRef portComponentRef = getPortComponentRef(serviceRef, webServiceRefType.getName());
+
+ for (Annotation webServiceFeatureAnnotation : webServiceFeatureAnnotations) {
+ Class<? extends Annotation> webServiceFeatureAnnotationType = webServiceFeatureAnnotation.annotationType();
+ if (webServiceFeatureAnnotationType == MTOM.class) {
+ MTOM mtom = (MTOM) webServiceFeatureAnnotation;
+ if (portComponentRef.getMtomThreshold() == null) {
+ portComponentRef.setMtomThreshold(mtom.threshold());
+ }
+ if (portComponentRef.getEnableMtom() == null) {
+ portComponentRef.setEnableMtom(mtom.enabled());
+ }
+ } else if (webServiceFeatureAnnotationType == javax.xml.ws.soap.Addressing.class) {
+ javax.xml.ws.soap.Addressing addressingAnnotation = (javax.xml.ws.soap.Addressing) webServiceFeatureAnnotation;
+ Addressing addressing = portComponentRef.getAddressing();
+ if (addressing == null) {
+ addressing = new Addressing();
+ addressing.setEnabled(addressingAnnotation.enabled());
+ addressing.setRequired(addressingAnnotation.required());
+ addressing.setResponses(AddressingResponses.valueOf(addressingAnnotation.responses().toString()));
+ portComponentRef.setAddressing(addressing);
+ } else {
+ if (addressing.getEnabled() == null) {
+ addressing.setEnabled(addressingAnnotation.enabled());
+ }
+ if (addressing.getRequired() == null) {
+ addressing.setRequired(addressingAnnotation.required());
+ }
+ if (addressing.getResponses() == null) {
+ addressing.setResponses(AddressingResponses.valueOf(addressingAnnotation.responses().toString()));
+ }
+ }
+ } else if (webServiceFeatureAnnotationType == RespectBinding.class) {
+ RespectBinding respectBinding = (RespectBinding) webServiceFeatureAnnotation;
+ if (portComponentRef.getRespectBinding() == null) {
+ portComponentRef.setRespectBinding(respectBinding.enabled());
+ }
+ } else {
+ log.warn("Unsupport web service feature annotation " + webServiceFeatureAnnotation + " on " + webServiceRefName);
+ }
+ }
+
+ }
+ }
+ }
}
+ private static PortComponentRef getPortComponentRef(ServiceRef serviceRef, String seiInterfaceName) {
+ List<PortComponentRef> portComponentRefs = serviceRef.getPortComponentRef();
+ for (PortComponentRef portComponentRef : portComponentRefs) {
+ if (portComponentRef.getServiceEndpointInterface().equals(seiInterfaceName)) {
+ return portComponentRef;
+ }
+ }
+ PortComponentRef portComponentRef = new PortComponentRef();
+ portComponentRef.setServiceEndpointInterface(seiInterfaceName);
+ portComponentRefs.add(portComponentRef);
+ return portComponentRef;
+ }
}
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/AnnotationHelperTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/AnnotationHelperTest.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/AnnotationHelperTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/AnnotationHelperTest.java Mon Apr 18 07:59:38 2011
@@ -37,8 +37,11 @@ import javax.persistence.PersistenceCont
import javax.persistence.PersistenceUnit;
import javax.persistence.PersistenceUnits;
import javax.xml.bind.JAXBException;
+import javax.xml.ws.Service;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.WebServiceRefs;
+
+import org.apache.geronimo.j2ee.deployment.annotation.WebServiceRefAnnotationExample.MyService;
import org.apache.geronimo.testsupport.XmlBeansTestSupport;
import org.apache.openejb.jee.JaxbJavaee;
import org.apache.openejb.jee.WebApp;
@@ -63,14 +66,14 @@ public class AnnotationHelperTest extend
static class TestClassFinder extends ClassFinder {
public TestClassFinder(Class [] classes) {
super(classes);
- }
+ }
public List<Field> findAnnotatedFields(Class<? extends Annotation> arg) {
List<Field> fields = super.findAnnotatedFields(arg);
Collections.sort(fields, new FieldComparator());
return fields;
}
}
-
+
static class FieldComparator implements Comparator {
public int compare(Object o1, Object o2) {
return compare((Field)o1, (Field)o2);
@@ -79,7 +82,7 @@ public class AnnotationHelperTest extend
String field1 = o1.getDeclaringClass().getName() + "/" + o1.getName();
String field2 = o2.getDeclaringClass().getName() + "/" + o2.getName();
return field1.compareTo(field2);
- }
+ }
}
public void testEJBAnnotationHelper() throws Exception {
@@ -107,7 +110,7 @@ public class AnnotationHelperTest extend
assertTrue(annotatedFields.contains(EJBAnnotationExample.class.getDeclaredField("annotatedField4")));
assertTrue(annotatedFields.contains(EJBAnnotationExample.class.getDeclaredField("annotatedField5")));
assertTrue(annotatedFields.contains(EJBAnnotationExample.class.getDeclaredField("annotatedField6")));
-
+
//-------------------------------------------------
// Ensure annotations are processed correctly
//-------------------------------------------------
@@ -262,8 +265,8 @@ public class AnnotationHelperTest extend
List<Method> annotatedMethods = classFinder.findAnnotatedMethods(WebServiceRef.class);
assertNotNull(annotatedMethods);
assertEquals(5, annotatedMethods.size());
- assertTrue(annotatedMethods.contains(WebServiceRefAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod1", new Class[]{boolean.class})));
- assertTrue(annotatedMethods.contains(WebServiceRefAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod2", new Class[]{String.class})));
+ assertTrue(annotatedMethods.contains(WebServiceRefAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod1", new Class[]{MyService.class})));
+ assertTrue(annotatedMethods.contains(WebServiceRefAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod2", new Class[]{Service.class})));
assertTrue(annotatedMethods.contains(HandlerChainAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod1", new Class[]{String.class})));
assertTrue(annotatedMethods.contains(HandlerChainAnnotationExample.class.getDeclaredMethod("setAnnotatedMethod2", new Class[]{int.class})));
@@ -287,8 +290,6 @@ public class AnnotationHelperTest extend
WebServiceRefAnnotationHelper.processAnnotations(webApp, classFinder);
URL expectedXML = classLoader.getResource("annotation/webservice-ref-expected.xml");
XmlObject expected = XmlObject.Factory.parse(expectedXML);
-// log.debug("[@WebServiceRef Source XML] " + '\n' + webApp.toString() + '\n');
-// log.debug("[@WebServiceRef Expected XML]" + '\n' + expected.toString() + '\n');
List problems = new ArrayList();
boolean ok = compareXmlObjects(webApp, expected, problems);
assertTrue("Differences: " + problems, ok);
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationExample.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationExample.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationExample.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/annotation/WebServiceRefAnnotationExample.java Mon Apr 18 07:59:38 2011
@@ -40,10 +40,10 @@ public class WebServiceRefAnnotationExam
type = Service.class,
value = Service.class,
mappedName = "mappedName12")
- String annotatedField1;
+ Service annotatedField1;
@WebServiceRef
- int annotatedField2;
+ Service annotatedField2;
//------------------------------------------------------------------------------------------
// Method name (for setter-based injection) must follow JavaBeans conventions:
@@ -55,14 +55,14 @@ public class WebServiceRefAnnotationExam
value = MyService.class,
wsdlLocation = "WEB-INF/wsdl/WebServiceRef14.wsdl",
mappedName = "mappedName14")
- public void setAnnotatedMethod1(boolean bool) {
+ public void setAnnotatedMethod1(MyService bool) {
}
@WebServiceRef(name = "WebServiceRef15",
value = Service.class,
wsdlLocation = "WEB-INF/wsdl/WebServiceRef15.wsdl",
mappedName = "mappedName15")
- public void setAnnotatedMethod2(String string) {
+ public void setAnnotatedMethod2(Service string) {
}
public static class MyService extends Service {
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/resources/annotation/webservice-ref-expected.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/resources/annotation/webservice-ref-expected.xml?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/resources/annotation/webservice-ref-expected.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/resources/annotation/webservice-ref-expected.xml Mon Apr 18 07:59:38 2011
@@ -38,8 +38,8 @@
</service-ref>
<service-ref>
<service-ref-name>WebServiceRef14</service-ref-name>
- <service-interface>boolean</service-interface>
- <service-ref-type>boolean</service-ref-type>
+ <service-interface>org.apache.geronimo.j2ee.deployment.annotation.WebServiceRefAnnotationExample$MyService</service-interface>
+ <service-ref-type>org.apache.geronimo.j2ee.deployment.annotation.WebServiceRefAnnotationExample$MyService</service-ref-type>
<wsdl-file>WEB-INF/wsdl/WebServiceRef14.wsdl</wsdl-file>
<mapped-name>mappedName14</mapped-name>
<injection-target>
Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/EndpointInfoBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/EndpointInfoBuilder.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/EndpointInfoBuilder.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/EndpointInfoBuilder.java Mon Apr 18 07:59:38 2011
@@ -22,6 +22,7 @@ import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -40,15 +41,22 @@ import javax.wsdl.xml.WSDLLocator;
import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.soap.AddressingFeature;
+
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.jaxws.JAXWSUtils;
import org.apache.geronimo.jaxws.client.EndpointInfo;
+import org.apache.geronimo.jaxws.feature.AddressingFeatureInfo;
+import org.apache.geronimo.jaxws.feature.MTOMFeatureInfo;
+import org.apache.geronimo.jaxws.feature.RespectBindingFeatureInfo;
+import org.apache.geronimo.jaxws.feature.WebServiceFeatureInfo;
import org.apache.geronimo.jaxws.wsdl.CatalogJarWSDLLocator;
import org.apache.geronimo.jaxws.wsdl.CatalogWSDLLocator;
import org.apache.geronimo.xbeans.geronimo.naming.GerPortPropertyType;
import org.apache.geronimo.xbeans.geronimo.naming.GerPortType;
import org.apache.geronimo.xbeans.geronimo.naming.GerServiceRefType;
+import org.apache.openejb.jee.Addressing;
import org.apache.openejb.jee.PortComponentRef;
import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogManager;
@@ -75,11 +83,11 @@ public class EndpointInfoBuilder {
private Map<Object, EndpointInfo> portInfoMap = new HashMap<Object, EndpointInfo>();
- private Map<Class, PortComponentRef> portComponentRefMap;
+ private Map<Class<?>, PortComponentRef> portComponentRefMap;
public EndpointInfoBuilder(Class serviceClass,
GerServiceRefType serviceRefType,
- Map<Class, PortComponentRef> portComponentRefMap,
+ Map<Class<?>, PortComponentRef> portComponentRefMap,
Module module,
Bundle bundle,
URI wsdlURI,
@@ -116,10 +124,10 @@ public class EndpointInfoBuilder {
}
}
}
-
+
if (this.wsdlURI == null) {
// wsdl was not explicitly specified
- if (javax.xml.ws.Service.class.equals(this.serviceClass)) {
+ if (javax.xml.ws.Service.class == this.serviceClass) {
// Generic Service class specified.
// Service API requires a service qname so create a dummy one
this.serviceQName = new QName("http://noservice", "noservice");
@@ -129,9 +137,9 @@ public class EndpointInfoBuilder {
String portName = gerPort.getPortName().trim();
URL location = getLocation(gerPort);
String credentialsName = getCredentialsName(gerPort);
- boolean mtomEnabled = isMTOMEnabled(portName);
+ List<WebServiceFeatureInfo> webServiceFeatureInfos = getWebServiceFeatureInfos(portName);
Map<String, Object> props = getProperties(gerPort);
- EndpointInfo info = new EndpointInfo(location, credentialsName, mtomEnabled, props);
+ EndpointInfo info = new EndpointInfo(location, credentialsName, props, webServiceFeatureInfos);
this.portInfoMap.put(portName, info);
}
}
@@ -184,7 +192,7 @@ public class EndpointInfoBuilder {
verifyPortComponentList(definition);
- Map services = definition.getServices();
+ Map<QName, Service> services = definition.getServices();
if (services.size() == 0) {
// partial wsdl, return as is
@@ -207,7 +215,7 @@ public class EndpointInfoBuilder {
+ this.serviceQName);
}
} else if (services.size() == 1) {
- service = (Service) services.values().iterator().next();
+ service = services.values().iterator().next();
this.serviceQName = service.getQName();
} else {
throw new DeploymentException(
@@ -226,11 +234,10 @@ public class EndpointInfoBuilder {
}
}
- Map wsdlPortMap = service.getPorts();
- for (Iterator iterator = wsdlPortMap.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- String portName = (String) entry.getKey();
- Port port = (Port) entry.getValue();
+ Map<String, Port> wsdlPortMap = service.getPorts();
+ for (Map.Entry<String, Port> entry : wsdlPortMap.entrySet()) {
+ String portName = entry.getKey();
+ Port port = entry.getValue();
GerPortType gerPort = portMap.get(portName);
@@ -251,11 +258,10 @@ public class EndpointInfoBuilder {
throw new DeploymentException("No portType for binding: " + binding.getQName());
}
- boolean mtomEnabled = isMTOMEnabled(portType.getQName());
-
Map<String, Object> props = getProperties(gerPort);
- EndpointInfo info = new EndpointInfo(location, credentialsName, mtomEnabled, props);
+ List<WebServiceFeatureInfo> webServiceFeatureInfo = getWebServiceFeatureInfos(portType.getQName());
+ EndpointInfo info = new EndpointInfo(location, credentialsName, props, webServiceFeatureInfo);
this.portInfoMap.put(portName, info);
// prefer first binding listed in wsdl
if (!this.portInfoMap.containsKey(portType.getQName())) {
@@ -346,6 +352,38 @@ public class EndpointInfoBuilder {
return null;
}
+ private List<WebServiceFeatureInfo> getWebServiceFeatureInfos(QName portName) {
+ PortComponentRef portComponentRef = getPortComponentRef(portName);
+ if (portComponentRef == null) {
+ return new ArrayList<WebServiceFeatureInfo>(0);
+ }
+ return buildWebServiceFeatureInfos(portComponentRef);
+ }
+
+ private List<WebServiceFeatureInfo> getWebServiceFeatureInfos(String portName) {
+ PortComponentRef portComponentRef = getPortComponentRef(portName);
+ if (portComponentRef == null) {
+ return new ArrayList<WebServiceFeatureInfo>(0);
+ }
+ return buildWebServiceFeatureInfos(portComponentRef);
+ }
+
+ private List<WebServiceFeatureInfo> buildWebServiceFeatureInfos(PortComponentRef portComponentRef) {
+ List<WebServiceFeatureInfo> webServiceFeatureInfos = new ArrayList<WebServiceFeatureInfo>(3);
+ Addressing addressing = portComponentRef.getAddressing();
+ if (addressing != null) {
+ webServiceFeatureInfos.add(new AddressingFeatureInfo(addressing.getEnabled() == null ? true : addressing.getEnabled(), addressing.getRequired() == null ? false : addressing.getRequired(),
+ addressing.getResponses() != null ? AddressingFeature.Responses.valueOf(addressing.getResponses().toString()) : AddressingFeature.Responses.ALL));
+ }
+ if (portComponentRef.getEnableMtom() != null) {
+ webServiceFeatureInfos.add(new MTOMFeatureInfo(portComponentRef.isEnableMtom(), portComponentRef.getMtomThreshold() == null ? 0 : portComponentRef.getMtomThreshold()));
+ }
+ if (portComponentRef.getRespectBinding() != null) {
+ webServiceFeatureInfos.add(new RespectBindingFeatureInfo(portComponentRef.getRespectBinding()));
+ }
+ return webServiceFeatureInfos;
+ }
+
private void verifyPortComponentList(Definition wsdl) throws DeploymentException {
if (this.portComponentRefMap == null) {
return;
@@ -361,15 +399,6 @@ public class EndpointInfoBuilder {
}
}
- private boolean isMTOMEnabled(QName portType) {
- boolean mtomEnabled = false;
- PortComponentRef portRef = getPortComponentRef(portType);
- if (portRef != null) {
- mtomEnabled = portRef.isEnableMtom();
- }
- return mtomEnabled;
- }
-
private PortComponentRef getPortComponentRef(QName portType) {
if (this.portComponentRefMap == null) {
return null;
@@ -386,15 +415,6 @@ public class EndpointInfoBuilder {
return null;
}
- private boolean isMTOMEnabled(String portName) {
- boolean mtomEnabled = false;
- PortComponentRef portRef = getPortComponentRef(portName);
- if (portRef != null) {
- mtomEnabled = portRef.isEnableMtom();
- }
- return mtomEnabled;
- }
-
private PortComponentRef getPortComponentRef(String portName) {
if (this.portComponentRefMap == null) {
return null;
Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java Mon Apr 18 07:59:38 2011
@@ -87,7 +87,7 @@ public abstract class JAXWSServiceRefBui
}
}
- private Class loadClass(String className, Bundle bundle, String classDescription) throws DeploymentException {
+ private Class<?> loadClass(String className, Bundle bundle, String classDescription) throws DeploymentException {
try {
return bundle.loadClass(className);
} catch (ClassNotFoundException e) {
@@ -102,7 +102,7 @@ public abstract class JAXWSServiceRefBui
String name = serviceRef.getKey();
String serviceInterfaceName = getStringValue(serviceRef.getServiceInterface());
- Class serviceInterfaceClass = loadClass(serviceInterfaceName, bundle, "service");
+ Class<?> serviceInterfaceClass = loadClass(serviceInterfaceName, bundle, "service");
if (!Service.class.isAssignableFrom(serviceInterfaceClass)) {
throw new DeploymentException(serviceInterfaceName + " service class does not extend " + Service.class.getName());
}
@@ -119,7 +119,7 @@ public abstract class JAXWSServiceRefBui
}
}
- Class serviceReferenceType = null;
+ Class<?> serviceReferenceType = null;
if (serviceRef.getServiceRefType() != null) {
String referenceClassName = serviceRef.getServiceRefType();
serviceReferenceType = loadClass(referenceClassName, bundle, "service reference");
@@ -130,7 +130,7 @@ public abstract class JAXWSServiceRefBui
for (HandlerChain handlerChain : handlerChains.getHandlerChain()) {
for (org.apache.openejb.jee.Handler handler : handlerChain.getHandler()) {
String handlerClassName = getStringValue(handler.getHandlerClass());
- Class handlerClass = loadClass(handlerClassName, bundle, "handler");
+ Class<?> handlerClass = loadClass(handlerClassName, bundle, "handler");
if (!Handler.class.isAssignableFrom(handlerClass)) {
throw new DeploymentException(handlerClassName + " handler class does not extend " + Handler.class.getName());
}
@@ -138,10 +138,10 @@ public abstract class JAXWSServiceRefBui
}
}
- Map<Class, PortComponentRef> portComponentRefMap = new HashMap<Class, PortComponentRef>();
+ Map<Class<?>, PortComponentRef> portComponentRefMap = new HashMap<Class<?>, PortComponentRef>();
for (PortComponentRef portComponentRef : serviceRef.getPortComponentRef()) {
String serviceEndpointInterfaceType = getStringValue(portComponentRef.getServiceEndpointInterface());
- Class serviceEndpointClass = loadClass(serviceEndpointInterfaceType, bundle, "service endpoint");
+ Class<?> serviceEndpointClass = loadClass(serviceEndpointInterfaceType, bundle, "service endpoint");
// TODO: check if it is annotated?
@@ -154,10 +154,10 @@ public abstract class JAXWSServiceRefBui
put(name, ref, module.getJndiContext(), serviceRef.getInjectionTarget(), sharedContext);
}
- public abstract Object createService(ServiceRef serviceRef, GerServiceRefType gerServiceRef,
+ protected abstract Object createService(ServiceRef serviceRef, GerServiceRefType gerServiceRef,
Module module, Bundle bundle, Class serviceInterfaceClass,
QName serviceQName, URI wsdlURI, Class serviceReferenceType,
- Map<Class, PortComponentRef> portComponentRefMap) throws DeploymentException;
+ Map<Class<?>, PortComponentRef> portComponentRefMap) throws DeploymentException;
private static Map<String, GerServiceRefType> mapServiceRefs(XmlObject[] refs) {
Map<String, GerServiceRefType> refMap = new HashMap<String, GerServiceRefType>();
Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/EndpointInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/EndpointInfo.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/EndpointInfo.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/EndpointInfo.java Mon Apr 18 07:59:38 2011
@@ -14,43 +14,61 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.geronimo.jaxws.client;
import java.io.Serializable;
import java.net.URL;
+import java.util.List;
import java.util.Map;
+import org.apache.geronimo.jaxws.feature.MTOMFeatureInfo;
+import org.apache.geronimo.jaxws.feature.WebServiceFeatureInfo;
+
public class EndpointInfo implements Serializable {
private URL location;
+
private String credentialsName;
- private boolean mtomEnabled;
+
private Map<String, Object> properties;
-
- public EndpointInfo(URL location, String credentialsName, boolean mtomEnabled, Map<String, Object> properties) {
+
+ private List<WebServiceFeatureInfo> webServiceFeatureInfos;
+
+ public EndpointInfo(URL location, String credentialsName, Map<String, Object> properties, List<WebServiceFeatureInfo> webServiceFeatureInfos) {
this.location = location;
- this.credentialsName = credentialsName;
- this.mtomEnabled = mtomEnabled;
+ this.credentialsName = credentialsName;
this.properties = properties;
+ this.webServiceFeatureInfos = webServiceFeatureInfos;
}
public boolean isMTOMEnabled() {
- return this.mtomEnabled;
+ for (WebServiceFeatureInfo webServiceFeatureInfo : webServiceFeatureInfos) {
+ if (webServiceFeatureInfo instanceof MTOMFeatureInfo) {
+ return ((MTOMFeatureInfo) webServiceFeatureInfo).isEnabled();
+ }
+ }
+ return false;
}
-
+
public URL getLocation() {
return this.location;
}
-
+
public String getCredentialsName() {
return this.credentialsName;
}
-
+
public Map<String, Object> getProperties() {
return properties;
}
-
+
+ public List<WebServiceFeatureInfo> getWebServiceFeatureInfos() {
+ return webServiceFeatureInfos;
+ }
+
+ @Override
public String toString() {
- return this.location + " " + this.credentialsName + " " + this.mtomEnabled + " " + this.properties;
+ return "EndpointInfo [location=" + location + ", properties=" + properties + ", webServiceFeatureInfos=" + webServiceFeatureInfos + "]";
}
}
Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/JAXWSServiceReference.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/JAXWSServiceReference.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/JAXWSServiceReference.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/JAXWSServiceReference.java Mon Apr 18 07:59:38 2011
@@ -21,11 +21,13 @@ import java.lang.reflect.InvocationTarge
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
+import java.util.List;
import java.util.Map;
import javax.naming.NamingException;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceFeature;
import javax.xml.ws.handler.HandlerResolver;
import net.sf.cglib.proxy.Callback;
@@ -37,6 +39,7 @@ import net.sf.cglib.reflect.FastConstruc
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.jaxws.JAXWSUtils;
+import org.apache.geronimo.jaxws.feature.WebServiceFeatureInfo;
import org.apache.geronimo.naming.reference.BundleAwareReference;
import org.apache.geronimo.naming.reference.SimpleReference;
import org.apache.xbean.osgi.bundle.util.BundleClassLoader;
@@ -49,8 +52,7 @@ public abstract class JAXWSServiceRefere
private final static Logger LOG = LoggerFactory.getLogger(JAXWSServiceReference.class);
- private static final Class[] URL_SERVICE_NAME_CONSTRUCTOR =
- new Class[] { URL.class, QName.class };
+ private static final Class<?>[] URL_SERVICE_NAME_CONSTRUCTOR = new Class[] { URL.class, QName.class };
protected String serviceClassName;
protected Bundle bundle;
@@ -123,7 +125,7 @@ public abstract class JAXWSServiceRefere
return catalogURL;
}
- private Class getReferenceClass() throws NamingException {
+ private Class<?> getReferenceClass() throws NamingException {
return (this.referenceClassName != null) ? loadClass(this.referenceClassName) : null;
}
@@ -131,14 +133,14 @@ public abstract class JAXWSServiceRefere
Service instance = null;
URL wsdlURL = getWsdlURL();
- Class serviceClass = loadClass(this.serviceClassName);
- Class referenceClass = getReferenceClass();
+ Class<?> serviceClass = loadClass(this.serviceClassName);
+ Class<?> referenceClass = getReferenceClass();
if (referenceClass != null && Service.class.isAssignableFrom(referenceClass)) {
serviceClass = referenceClass;
}
- if (Service.class.equals(serviceClass)) {
+ if (Service.class == serviceClass) {
serviceClass = GenericService.class;
}
@@ -151,7 +153,19 @@ public abstract class JAXWSServiceRefere
if (referenceClass != null && !Service.class.isAssignableFrom(referenceClass)) {
// do port lookup
- return instance.getPort(referenceClass);
+ QName portName = JAXWSUtils.getPortType(referenceClass);
+ EndpointInfo endpointInfo = seiInfoMap.get(portName);
+ if (endpointInfo != null && endpointInfo.getWebServiceFeatureInfos().size() > 0) {
+ List<WebServiceFeatureInfo> webServiceFeatureInfos = endpointInfo.getWebServiceFeatureInfos();
+ WebServiceFeature[] webServiceFeatures = new WebServiceFeature[webServiceFeatureInfos.size()];
+ int index = 0;
+ for (WebServiceFeatureInfo webServiceFeatureInfo : webServiceFeatureInfos) {
+ webServiceFeatures[index++] = webServiceFeatureInfo.getWebServiceFeature();
+ }
+ return instance.getPort(referenceClass, webServiceFeatures);
+ } else {
+ return instance.getPort(referenceClass);
+ }
} else {
// return service
return instance;
@@ -185,12 +199,14 @@ public abstract class JAXWSServiceRefere
FastClass.create(this.enhancedServiceClass).getConstructor(URL_SERVICE_NAME_CONSTRUCTOR);
}
- LOG.debug("Initializing service with: " + wsdlLocation + " " + serviceName);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Initializing service with: " + wsdlLocation + " " + serviceName);
+ }
// associate the method interceptors with the generated service class on the current thread
Enhancer.registerCallbacks(this.enhancedServiceClass, this.methodInterceptors);
- Object[] arguments = new Object[] {wsdlLocation, serviceName};
+ Object[] arguments = new Object[] { wsdlLocation, serviceName };
try {
return (Service)this.serviceConstructor.newInstance(arguments);
Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/PortMethodInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/PortMethodInterceptor.java?rev=1094334&r1=1094333&r2=1094334&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/PortMethodInterceptor.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/client/PortMethodInterceptor.java Mon Apr 18 07:59:38 2011
@@ -32,14 +32,13 @@ import javax.xml.ws.soap.SOAPBinding;
import java.lang.reflect.Method;
import java.net.URL;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class PortMethodInterceptor implements MethodInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(PortMethodInterceptor.class);
-
+
private Map<Object, EndpointInfo> seiInfoMap;
public PortMethodInterceptor(Map<Object, EndpointInfo> seiInfoMap) {
@@ -47,9 +46,9 @@ public class PortMethodInterceptor imple
}
public Object intercept(Object target, Method method, Object[] arguments, MethodProxy methodProxy) throws Throwable {
- Object proxy = methodProxy.invokeSuper(target, arguments);
-
- if (method.getName().equals("getPort")) {
+ Object proxy = methodProxy.invokeSuper(target, arguments);
+
+ if (method.getName().equals("getPort")) {
// it's a generic getPort() method
Class<?> paramType = method.getParameterTypes()[0];
if (paramType.equals(Class.class)) {
@@ -77,18 +76,18 @@ public class PortMethodInterceptor imple
setProperties((BindingProvider)proxy, ((QName)arguments[0]).getLocalPart());
}
}
-
+
return proxy;
}
-
+
private void setProperties(BindingProvider proxy, QName portType) {
if (portType == null) {
return;
}
EndpointInfo info = this.seiInfoMap.get(portType);
- setProperties(proxy, info);
+ setProperties(proxy, info);
}
-
+
private void setProperties(BindingProvider proxy, String portName) {
if (portName == null) {
return;
@@ -96,44 +95,47 @@ public class PortMethodInterceptor imple
EndpointInfo info = this.seiInfoMap.get(portName);
setProperties(proxy, info);
}
-
+
protected void setProperties(BindingProvider proxy, EndpointInfo info) {
if (info == null) {
return;
- }
+ }
setProperties(proxy, info, info.getProperties());
}
-
+
protected void setProperties(BindingProvider proxy, EndpointInfo info, Map<String, Object> properties) {
if (info == null) {
return;
- }
-
+ }
+
// set mtom
boolean enableMTOM = info.isMTOMEnabled();
if (enableMTOM && proxy.getBinding() instanceof SOAPBinding) {
((SOAPBinding)proxy.getBinding()).setMTOMEnabled(enableMTOM);
- LOG.debug("Set mtom property: " + enableMTOM);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Set mtom property: " + enableMTOM);
+ }
}
-
+
// set address
URL location = info.getLocation();
if (location != null) {
proxy.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, location.toString());
- LOG.debug("Set address property: " + location);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Set address property: " + location);
+ }
}
-
+
// set credentials
String credentialsName = info.getCredentialsName();
if (credentialsName != null) {
- NamedUsernamePasswordCredential namedUsernamePasswordCredential = findCredential(credentialsName);
- proxy.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,
+ NamedUsernamePasswordCredential namedUsernamePasswordCredential = findCredential(credentialsName);
+ proxy.getRequestContext().put(BindingProvider.USERNAME_PROPERTY,
namedUsernamePasswordCredential.getUsername());
- proxy.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,
+ proxy.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY,
new String(namedUsernamePasswordCredential.getPassword()));
- LOG.debug("Set username/password property: " + credentialsName);
}
-
+
// set user-specified properties
if (properties != null) {
for (Map.Entry<String, Object> entry : properties.entrySet()) {
@@ -141,15 +143,14 @@ public class PortMethodInterceptor imple
}
}
}
-
+
protected NamedUsernamePasswordCredential findCredential(String credentialsName) {
Subject subject = ContextManager.getNextCaller();
if (subject == null) {
throw new IllegalStateException("Subject missing but authentication turned on");
} else {
- Set creds = subject.getPrivateCredentials(NamedUsernamePasswordCredential.class);
- for (Iterator iterator = creds.iterator(); iterator.hasNext();) {
- NamedUsernamePasswordCredential namedUsernamePasswordCredential = (NamedUsernamePasswordCredential) iterator.next();
+ Set<NamedUsernamePasswordCredential> creds = subject.getPrivateCredentials(NamedUsernamePasswordCredential.class);
+ for (NamedUsernamePasswordCredential namedUsernamePasswordCredential : creds) {
if (credentialsName.equals(namedUsernamePasswordCredential.getName())) {
return namedUsernamePasswordCredential;
}
Added: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java?rev=1094334&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java (added)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java Mon Apr 18 07:59:38 2011
@@ -0,0 +1,49 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.jaxws.feature;
+
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.Addressing;
+import javax.xml.ws.soap.AddressingFeature;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AddressingFeatureInfo implements WebServiceFeatureInfo {
+
+ private boolean enabled;
+
+ private boolean required;
+
+ private AddressingFeature.Responses responses;
+
+ public AddressingFeatureInfo(Addressing addressing) {
+ this(addressing.enabled(), addressing.required(), addressing.responses());
+ }
+
+ public AddressingFeatureInfo(boolean enabled, boolean required, AddressingFeature.Responses responses) {
+ this.enabled = enabled;
+ this.required = required;
+ this.responses = responses;
+ }
+
+ @Override
+ public WebServiceFeature getWebServiceFeature() {
+ return new AddressingFeature(enabled, required, responses);
+ }
+}
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/AddressingFeatureInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java?rev=1094334&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java (added)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java Mon Apr 18 07:59:38 2011
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.jaxws.feature;
+
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.MTOM;
+import javax.xml.ws.soap.MTOMFeature;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class MTOMFeatureInfo implements WebServiceFeatureInfo {
+
+ private boolean enabled;
+
+ private int threshold;
+
+ public MTOMFeatureInfo(MTOM mtom) {
+ this(mtom.enabled(), mtom.threshold());
+ }
+
+ public MTOMFeatureInfo(boolean enabled, int threshold) {
+ this.enabled = enabled;
+ this.threshold = threshold;
+ }
+
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ public int getThreshold() {
+ return threshold;
+ }
+
+ @Override
+ public WebServiceFeature getWebServiceFeature() {
+ return new MTOMFeature(enabled, threshold);
+ }
+
+}
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/MTOMFeatureInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java?rev=1094334&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java (added)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java Mon Apr 18 07:59:38 2011
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.jaxws.feature;
+
+import javax.xml.ws.RespectBinding;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class RespectBindingFeatureInfo implements WebServiceFeatureInfo {
+
+ private boolean enabled;
+
+ public RespectBindingFeatureInfo(RespectBinding respectBinding) {
+ this(respectBinding.enabled());
+ }
+
+ public RespectBindingFeatureInfo(boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ @Override
+ public WebServiceFeature getWebServiceFeature() {
+ return new RespectBindingFeature(enabled);
+ }
+
+}
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/RespectBindingFeatureInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java?rev=1094334&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java (added)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java Mon Apr 18 07:59:38 2011
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.jaxws.feature;
+
+import java.io.Serializable;
+
+import javax.xml.ws.WebServiceFeature;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface WebServiceFeatureInfo extends Serializable {
+
+ public WebServiceFeature getWebServiceFeature();
+}
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws/src/main/java/org/apache/geronimo/jaxws/feature/WebServiceFeatureInfo.java
------------------------------------------------------------------------------
svn:mime-type = text/plain