You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/12 16:06:14 UTC
svn commit: r1631182 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
Author: rmannibucau
Date: Sun Oct 12 14:06:14 2014
New Revision: 1631182
URL: http://svn.apache.org/r1631182
Log:
config for @AppScoped handler and interception for producers
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1631182&r1=1631181&r2=1631182&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java Sun Oct 12 14:06:14 2014
@@ -64,6 +64,7 @@ public class ThreadSingletonServiceImpl
public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, ThreadSingletonServiceImpl.class);
private String sessionContextClass;
+ private boolean cachedApplicationScoped;
//this needs to be static because OWB won't tell us what the existing SingletonService is and you can't set it twice.
private static final ThreadLocal<WebBeansContext> contexts = new ThreadLocal<WebBeansContext>();
@@ -73,7 +74,12 @@ public class ThreadSingletonServiceImpl
@Override
public void initialize(final StartupObject startupObject) {
if (sessionContextClass == null) { // done here cause Cdibuilder trigger this class loading and that's from Warmup so we can't init too early config
- sessionContextClass = SystemInstance.get().getProperty("openejb.session-context", "").trim();
+ synchronized (this) {
+ if (sessionContextClass == null) {
+ sessionContextClass = SystemInstance.get().getProperty("openejb.session-context", "").trim();
+ cachedApplicationScoped = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.cdi.applicationScope.cached", "true").trim());
+ }
+ }
}
final AppContext appContext = startupObject.getAppContext();
@@ -102,12 +108,14 @@ public class ThreadSingletonServiceImpl
final boolean tomee = SystemInstance.get().getProperty("openejb.loader", "foo").startsWith("tomcat");
- properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.ApplicationScoped", ApplicationScopedBeanInterceptorHandler.class.getName());
+ final String defaultNormalScopeHandlerClass = NormalScopedBeanInterceptorHandler.class.getName();
+ properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.ApplicationScoped",
+ cachedApplicationScoped ? ApplicationScopedBeanInterceptorHandler.class.getName() : defaultNormalScopeHandlerClass);
if (tomee) {
properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.RequestScoped", RequestScopedBeanInterceptorHandler.class.getName());
} else {
- properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.RequestScoped", NormalScopedBeanInterceptorHandler.class.getName());
+ properties.setProperty("org.apache.webbeans.proxy.mapping.javax.enterprise.context.RequestScoped", defaultNormalScopeHandlerClass);
}
if (sessionContextClass() != null && tomee) {
@@ -118,6 +126,8 @@ public class ThreadSingletonServiceImpl
properties.setProperty(WEBBEANS_FAILOVER_ISSUPPORTFAILOVER, "true");
}
+ properties.put(OpenWebBeansConfiguration.PRODUCER_INTERCEPTION_SUPPORT, SystemInstance.get().getProperty("openejb.cdi.producer.interception", "true"));
+
properties.putAll(appContext.getProperties());
services.put(BeanArchiveService.class, new OpenEJBBeanInfoService());