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


Reply via email to