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 2013/05/21 11:25:58 UTC

svn commit: r1484712 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java

Author: rmannibucau
Date: Tue May 21 09:25:57 2013
New Revision: 1484712

URL: http://svn.apache.org/r1484712
Log:
TOMEE-943 ensuring we use system.properties to check openejb.quartz.use-TCCL property

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1484712&r1=1484711&r2=1484712&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Tue May 21 09:25:57 2013
@@ -147,15 +147,16 @@ public class EjbTimerServiceImpl impleme
             }
 
             final Properties properties = new Properties();
-            putAll(properties, SystemInstance.get().getProperties());
-            putAll(properties, deployment.getModuleContext().getAppContext().getProperties());
-            putAll(properties, deployment.getModuleContext().getProperties());
-            putAll(properties, deployment.getProperties());
+            int quartzProps = 0;
+            quartzProps += putAll(properties, SystemInstance.get().getProperties());
+            quartzProps += putAll(properties, deployment.getModuleContext().getAppContext().getProperties());
+            quartzProps += putAll(properties, deployment.getModuleContext().getProperties());
+            quartzProps += putAll(properties, deployment.getProperties());
 
             // custom config -> don't use default/global scheduler
             // if one day we want to keep a global config for a global scheduler (SystemInstance.get().getProperties()) we'll need to manage resume/pause etc correctly by app
             // since we have a scheduler by ejb today in such a case we don't need
-            final boolean newInstance = properties.size() > 0;
+            final boolean newInstance = quartzProps > 0;
 
             final SystemInstance systemInstance = SystemInstance.get();
 
@@ -216,7 +217,9 @@ public class EjbTimerServiceImpl impleme
                 try {
                     // start in container context to avoid thread leaks
                     final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
-                    if (!"true".equals(deployment.getProperties().getProperty(OPENEJB_QUARTZ_USE_TCCL, "false"))) {
+                    if ("true".equalsIgnoreCase(properties.getProperty(OPENEJB_QUARTZ_USE_TCCL, "false"))) {
+                        Thread.currentThread().setContextClassLoader(deployment.getClassLoader());
+                    } else {
                         Thread.currentThread().setContextClassLoader(EjbTimerServiceImpl.class.getClassLoader());
                     }
                     try {
@@ -251,16 +254,23 @@ public class EjbTimerServiceImpl impleme
         return thisScheduler;
     }
 
-    private static void putAll(final Properties a, final Properties b) {
+    private static int putAll(final Properties a, final Properties b) {
+        int number = 0;
         for (final Map.Entry<Object, Object> entry : b.entrySet()) {
             final String key = entry.getKey().toString();
             if (key.startsWith("org.quartz.")
                 || key.startsWith("openejb.quartz.")
                 || DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE.equals(key)
                 || "org.terracotta.quartz.skipUpdateCheck".equals(key)) {
-                a.put(entry.getKey(), entry.getValue());
+                number++;
+            }
+
+            final Object value = entry.getValue();
+            if (String.class.isInstance(value)) {
+                a.put(entry.getKey(), value);
             }
         }
+        return number;
     }
 
     @Override