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 {