Author: rmannibucau
Date: Mon Jul 8 14:31:49 2013
New Revision: 1500765
URL: http://svn.apache.org/r1500765
Log:
TOMEE-999 propagating cxf databinding to service (and not only server)
Modified:
tomee/tomee/trunk/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
Modified:
tomee/tomee/trunk/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java?rev=1500765&r1=1500764&r2=1500765&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
(original)
+++
tomee/tomee/trunk/server/openejb-cxf-transport/src/main/java/org/apache/openejb/server/cxf/transport/util/CxfUtil.java
Mon Jul 8 14:31:49 2013
@@ -180,7 +180,7 @@ public final class CxfUtil {
}
}
- private static void configureInterceptors(final
AbstractBasicInterceptorProvider abip, final String prefix, final
Collection<ServiceInfo> availableServices, final Properties beanConfig) {
+ public static void configureInterceptors(final
AbstractBasicInterceptorProvider abip, final String prefix, final
Collection<ServiceInfo> availableServices, final Properties beanConfig) {
// interceptors
final String inInterceptorsIds = beanConfig.getProperty(prefix +
IN_INTERCEPTORS);
if (inInterceptorsIds != null && !inInterceptorsIds.trim().isEmpty()) {
@@ -203,7 +203,7 @@ public final class CxfUtil {
}
}
- private static List<AbstractFeature> createFeatures(final
Collection<ServiceInfo> availableServices, final String featuresIds) {
+ public static List<AbstractFeature> createFeatures(final
Collection<ServiceInfo> availableServices, final String featuresIds) {
final List<?> features = ServiceInfos.resolve(availableServices,
featuresIds.split(","));
for (Object instance : features) {
if (!AbstractFeature.class.isInstance(instance)) {
@@ -213,7 +213,7 @@ public final class CxfUtil {
return (List<AbstractFeature>) features;
}
- private static List<Interceptor<? extends Message>>
createInterceptors(final Collection<ServiceInfo> availableServices, final
String ids) {
+ public static List<Interceptor<? extends Message>>
createInterceptors(final Collection<ServiceInfo> availableServices, final
String ids) {
final List<?> instances = ServiceInfos.resolve(availableServices,
ids.split(","));
for (Object instance : instances) {
if (!Interceptor.class.isInstance(instance)) {
Modified:
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java?rev=1500765&r1=1500764&r2=1500765&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
(original)
+++
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
Mon Jul 8 14:31:49 2013
@@ -18,6 +18,7 @@
package org.apache.openejb.server.cxf;
import org.apache.cxf.Bus;
+import org.apache.cxf.databinding.DataBinding;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.endpoint.ServerImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
@@ -27,7 +28,10 @@ import org.apache.cxf.jaxws.support.JaxW
import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
import org.apache.cxf.service.Service;
import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.classic.ServiceInfo;
import org.apache.openejb.assembler.classic.util.ServiceConfiguration;
+import org.apache.openejb.assembler.classic.util.ServiceInfos;
import org.apache.openejb.core.webservices.HandlerResolverImpl;
import org.apache.openejb.core.webservices.PortData;
import org.apache.openejb.server.cxf.transport.util.CxfUtil;
@@ -38,8 +42,10 @@ import javax.xml.ws.Binding;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.soap.SOAPBinding;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.concurrent.Executor;
public abstract class CxfEndpoint {
@@ -207,4 +213,33 @@ public abstract class CxfEndpoint {
this.server.stop();
}
}
-}
\ No newline at end of file
+
+ protected static JaxWsServiceFactoryBean configureService(final
JaxWsServiceFactoryBean serviceFactory, final ServiceConfiguration
configuration, final String prefix) {
+ final Properties beanConfig = configuration.getProperties();
+ if (beanConfig == null || beanConfig.isEmpty()) {
+ return serviceFactory;
+ }
+
+ final Collection<ServiceInfo> availableServices =
configuration.getAvailableServices();
+
+ // databinding
+ final String databinding = beanConfig.getProperty(prefix +
CxfUtil.DATABINDING);
+ if (databinding != null && !databinding.trim().isEmpty()) {
+ Object instance = ServiceInfos.resolve(availableServices,
databinding);
+ if (instance == null) { // maybe id == classname
+ try {
+ instance =
Thread.currentThread().getContextClassLoader().loadClass(databinding).newInstance();
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ if (!DataBinding.class.isInstance(instance)) {
+ throw new OpenEJBRuntimeException(instance + " is not a " +
DataBinding.class.getName()
+ + ", please check configuration of service [id=" +
databinding + "]");
+ }
+ serviceFactory.setDataBinding((DataBinding) instance);
+ }
+
+ return serviceFactory;
+ }
+}
Modified:
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java?rev=1500765&r1=1500764&r2=1500765&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
(original)
+++
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
Mon Jul 8 14:31:49 2013
@@ -52,7 +52,7 @@ public class EjbEndpoint extends CxfEndp
String bindingURI = JaxWsUtils.getBindingURI(portData.getBindingID());
implInfo = new JaxWsImplementorInfoImpl((Class) implementor,
bindingURI);
- serviceFactory = new JaxWsServiceFactoryBean(implInfo);
+ serviceFactory = configureService(new
JaxWsServiceFactoryBean(implInfo), config, CXF_JAXWS_PREFIX);
serviceFactory.setBus(bus);
serviceFactory.setServiceClass(beanContext.getBeanClass());
Modified:
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java?rev=1500765&r1=1500764&r2=1500765&view=diff
==============================================================================
---
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
(original)
+++
tomee/tomee/trunk/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
Mon Jul 8 14:31:49 2013
@@ -55,7 +55,7 @@ public class PojoEndpoint extends CxfEnd
}
implInfo = new JaxWsImplementorInfoImpl(instance, bindingURI);
- serviceFactory = new JaxWsServiceFactoryBean(implInfo);
+ serviceFactory = configureService(new
JaxWsServiceFactoryBean(implInfo), config, CXF_JAXWS_PREFIX);
serviceFactory.setBus(bus);
serviceFactory.setServiceClass(instance);