Author: rmannibucau
Date: Thu Aug  2 15:24:32 2012
New Revision: 1368532

URL: http://svn.apache.org/viewvc?rev=1368532&view=rev
Log:
TOMEE-348 allow to push properties to cxf endpoints

Modified:
    
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
    
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
    
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java

Modified: 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java?rev=1368532&r1=1368531&r2=1368532&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfEndpoint.java
 Thu Aug  2 15:24:32 2012
@@ -149,6 +149,9 @@ public abstract class CxfEndpoint {
                svrFactory.setStart(false);
                svrFactory.setServiceBean(implementor);
         svrFactory.setDestinationFactory(httpTransportFactory);
+        if (getEndpointProperties() != null) {
+            svrFactory.setProperties(getEndpointProperties());
+        }
 
                if (HTTPBinding.HTTP_BINDING.equals(implInfo.getBindingType())) 
{
                        
svrFactory.setTransportId("http://cxf.apache.org/bindings/xformat";);
@@ -168,7 +171,12 @@ public abstract class CxfEndpoint {
                server.start();
        }
 
-       protected void init() {
+    protected Map<String,Object> getEndpointProperties() {
+        return null;
+    }
+
+    protected void init() {
+        // no-op
        }
 
        /**

Modified: 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java?rev=1368532&r1=1368531&r2=1368532&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/ejb/EjbEndpoint.java
 Thu Aug  2 15:24:32 2012
@@ -36,7 +36,9 @@ import org.apache.openejb.server.cxf.Cxf
 import org.apache.openejb.server.cxf.JaxWsImplementorInfoImpl;
 
 import javax.xml.ws.WebServiceException;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * A web service endpoint which invokes an EJB container.
@@ -65,6 +67,15 @@ public class EjbEndpoint extends CxfEndp
         return (Class) this.implementor;
     }
 
+    @Override
+    protected Map<String, Object> getEndpointProperties() {
+        final Map<String, Object> map = new HashMap<String, Object>();
+        for (Map.Entry<Object, Object> entry : 
port.getProperties().entrySet()) {
+            map.put(entry.getKey().toString(), entry.getValue());
+        }
+        return map;
+    }
+
     protected void init() {
         // configure handlers
         try {
@@ -91,7 +102,6 @@ public class EjbEndpoint extends CxfEndp
 
         // Install WSS4J interceptor
         ConfigureCxfSecurity.configure(endpoint, port);
-
     }
 
     private static void removeHandlerInterceptors(List<? extends Interceptor> 
interceptors) {

Modified: 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java?rev=1368532&r1=1368531&r2=1368532&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
 Thu Aug  2 15:24:32 2012
@@ -29,18 +29,23 @@ import org.apache.cxf.transport.http.HTT
 import org.apache.openejb.InjectionProcessor;
 import org.apache.openejb.core.webservices.JaxWsUtils;
 import org.apache.openejb.core.webservices.PortData;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.cxf.CxfEndpoint;
 import org.apache.openejb.server.cxf.CxfServiceConfiguration;
 import org.apache.openejb.server.cxf.JaxWsImplementorInfoImpl;
 
 import javax.naming.Context;
 import javax.xml.ws.WebServiceException;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import static org.apache.openejb.InjectionProcessor.unwrap;
 
 public class PojoEndpoint extends CxfEndpoint {
+    public static final String OPENEJB_JAXWS_READ_POJO_PROPERTIES = 
"openejb.jaxws.read-pojo-properties"; // boolean to force it (perf reason)
+    public static final String OPENEJB_JAXWS_POJO_CONFIG_PREFIX = 
"openejb.jaxws.pojo.config."; // prefix to avoid conflicts
+
     private InjectionProcessor<Object> injectionProcessor;
 
     public PojoEndpoint(Bus bus, PortData port, Context context, Class<?> 
instance, HTTPTransportFactory httpTransportFactory, Map<String, Object> 
bindings) {
@@ -84,6 +89,22 @@ public class PojoEndpoint extends CxfEnd
         injector.inject(implementor);
     }
 
+    @Override
+    protected Map<String, Object> getEndpointProperties() {
+        if 
(SystemInstance.get().getOptions().get(OPENEJB_JAXWS_READ_POJO_PROPERTIES, 
false)) {
+            final String prefix = OPENEJB_JAXWS_POJO_CONFIG_PREFIX + 
getImplementorClass().getName() + ".";
+            final Map<String, Object> map = new HashMap<String, Object>();
+            for (Map.Entry<Object, Object> entry : 
SystemInstance.get().getProperties().entrySet()) {
+                final String key = entry.getKey().toString();
+                if (key.startsWith(prefix)) {
+                    map.put(key.substring(prefix.length()), entry.getValue());
+                }
+            }
+            return map;
+        }
+        return null;
+    }
+
     protected void init() {
         // configure and inject handlers
         try {


Reply via email to