Author: alessio.soldano(a)jboss.com
Date: 2010-04-14 12:51:39 -0400 (Wed, 14 Apr 2010)
New Revision: 11984
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ServiceRefStubPropertyConfigurer.java
Log:
[JBWS-2997] Adding MTOM feature setup in JaxWsProxyFactoryBean according to data coming
from service ref metadata + refactoring the stub property setup a bit too
Modified:
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ServiceRefStubPropertyConfigurer.java
===================================================================
---
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ServiceRefStubPropertyConfigurer.java 2010-04-14
08:27:02 UTC (rev 11983)
+++
stack/cxf/trunk/modules/client/src/main/java/org/jboss/wsf/stack/cxf/client/ServiceRefStubPropertyConfigurer.java 2010-04-14
16:51:39 UTC (rev 11984)
@@ -22,16 +22,22 @@
package org.jboss.wsf.stack.cxf.client;
import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.MTOMFeature;
+
import org.apache.cxf.configuration.Configurer;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedStubPropertyMetaData;
/**
- * A CXF configurer that sets the serviceref stub properties in the
JaxWsProxyFactoryBean
+ * A CXF configurer that sets the serviceref data in the JaxWsProxyFactoryBean
*
* @author alessio.soldano(a)jboss.com
* @since 21-Jul-2009
@@ -73,19 +79,41 @@
private synchronized void configureJaxWsProxyFactoryBean(JaxWsProxyFactoryBean
proxyFactory)
{
- Map<String, Object> properties = new HashMap<String, Object>();
- for (UnifiedPortComponentRefMetaData pcRef : serviceRefMD.getPortComponentRefs())
+ Class<?> clazz = proxyFactory.getServiceClass();
+ UnifiedPortComponentRefMetaData upcmd = serviceRefMD.getPortComponentRef(clazz !=
null ? clazz.getName() : null, proxyFactory.getServiceName());
+ if (upcmd != null)
{
- String sei = pcRef.getServiceEndpointInterface();
- if (sei != null &&
sei.equals(proxyFactory.getServiceClass().getName()))
+ setProperties(proxyFactory, upcmd);
+ setMTOM((JaxWsServiceFactoryBean)proxyFactory.getServiceFactory(), upcmd);
+ }
+ }
+
+ private void setMTOM(JaxWsServiceFactoryBean serviceFactoryBean,
UnifiedPortComponentRefMetaData upcmd)
+ {
+ if (upcmd.getEnableMTOM())
+ {
+ List<WebServiceFeature> features = new
LinkedList<WebServiceFeature>();
+ List<WebServiceFeature> prevFeatures =
serviceFactoryBean.getWsFeatures();
+ if (prevFeatures != null)
{
- for (UnifiedStubPropertyMetaData prop : pcRef.getStubProperties())
- {
- properties.put(prop.getPropName(), prop.getPropValue());
- }
+ features.addAll(prevFeatures);
}
+ features.add(new MTOMFeature(true));
+ serviceFactoryBean.setWsFeatures(features);
}
- proxyFactory.setProperties(properties);
}
-
+
+ private void setProperties(JaxWsProxyFactoryBean proxyFactory,
UnifiedPortComponentRefMetaData upcmd)
+ {
+ Map<String, Object> properties = proxyFactory.getProperties();
+ if (properties == null)
+ {
+ properties = new HashMap<String, Object>();
+ proxyFactory.setProperties(properties);
+ }
+ for (UnifiedStubPropertyMetaData prop : upcmd.getStubProperties())
+ {
+ properties.put(prop.getPropName(), prop.getPropValue());
+ }
+ }
}
Show replies by date