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());