Author: rmannibucau
Date: Mon Mar  4 10:59:42 2013
New Revision: 1452249

URL: http://svn.apache.org/r1452249
Log:
TOMEE-781 -Dopenejb.quartz.use-TCCL=true has no effect

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=1452249&r1=1452248&r2=1452249&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
 Mon Mar  4 10:59:42 2013
@@ -153,69 +153,64 @@ public class EjbTimerServiceImpl impleme
             putAll(properties, deployment.getProperties());
 
             // custom config -> don't use default scheduler
-            boolean newInstance = false;
-            for (final String key : properties.stringPropertyNames()) {
-                if (key.startsWith("org.quartz.")) {
-                    newInstance = true;
-                    break;
-                }
-            }
+            final boolean newInstance = properties.size() > 0;
 
             final SystemInstance systemInstance = SystemInstance.get();
 
-            final String defaultThreadPool = 
DefaultTimerThreadPoolAdapter.class.getName();
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_THREAD_POOL_CLASS)) {
-                properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, 
defaultThreadPool);
-            }
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME)) {
-                properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, 
"OpenEJB-TimerService-Scheduler");
-            }
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)) {
-                
properties.put(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true");
-            }
-            if 
(!properties.containsKey("org.terracotta.quartz.skipUpdateCheck")) {
-                properties.put("org.terracotta.quartz.skipUpdateCheck", 
"true");
-            }
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN))
 {
-                
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN, 
"true");
-            }
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT))
 {
-                
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT,
 "true");
-            }
-            if (!properties.containsKey(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON)) {
-                properties.put(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON, "true");
-            }
-            if (!properties.containsKey(QUARTZ_JMX) && 
LocalMBeanServer.isJMXActive()) {
-                properties.put(QUARTZ_JMX, "true");
-            }
-            if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID)) {
-                if (!newInstance) {
-                    
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "OpenEJB");
-                } else {
-                    
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, 
deployment.getDeploymentID().toString());
-                }
-            }
-
-            // adding our custom persister
-            if (properties.containsKey("org.quartz.jobStore.class") && 
!properties.containsKey("org.quartz.jobStore.driverDelegateInitString")) {
-                properties.put("org.quartz.jobStore.driverDelegateInitString",
-                                  "triggerPersistenceDelegateClasses=" + 
EJBCronTriggerPersistenceDelegate.class.getName());
-            }
+            scheduler = systemInstance.getComponent(Scheduler.class);
 
-            if 
(defaultThreadPool.equals(properties.get(StdSchedulerFactory.PROP_THREAD_POOL_CLASS))
-                && properties.containsKey("org.quartz.threadPool.threadCount")
-                && 
!properties.containsKey(DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE)) 
{
-                log.info("Found property 'org.quartz.threadPool.threadCount' 
for default thread pool, please use '"
-                         + 
DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE + "' instead");
-            }
+            if (scheduler == null || newInstance) {
+                final String defaultThreadPool = 
DefaultTimerThreadPoolAdapter.class.getName();
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_THREAD_POOL_CLASS)) {
+                    properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, 
defaultThreadPool);
+                }
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME)) {
+                    
properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, 
"OpenEJB-TimerService-Scheduler");
+                }
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)) {
+                    
properties.put(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true");
+                }
+                if 
(!properties.containsKey("org.terracotta.quartz.skipUpdateCheck")) {
+                    properties.put("org.terracotta.quartz.skipUpdateCheck", 
"true");
+                }
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN))
 {
+                    
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN, 
"true");
+                }
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT))
 {
+                    
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT,
 "true");
+                }
+                if 
(!properties.containsKey(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON)) {
+                    properties.put(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON, 
"true");
+                }
+                if (!properties.containsKey(QUARTZ_JMX) && 
LocalMBeanServer.isJMXActive()) {
+                    properties.put(QUARTZ_JMX, "true");
+                }
+                if 
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID)) {
+                    if (!newInstance) {
+                        
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "OpenEJB");
+                    } else {
+                        
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, 
deployment.getDeploymentID().toString());
+                    }
+                }
 
-            // to ensure we can shutdown correctly, default doesn't support 
such a configuration
-            if 
(!properties.getProperty(StdSchedulerFactory.PROP_JOB_STORE_CLASS, 
RAMJobStore.class.getName()).equals(RAMJobStore.class.getName())) {
-                properties.put("org.quartz.jobStore.makeThreadsDaemons", 
properties.getProperty("org.quartz.jobStore.makeThreadsDaemon", "true"));
-            }
+                // adding our custom persister
+                if (properties.containsKey("org.quartz.jobStore.class") && 
!properties.containsKey("org.quartz.jobStore.driverDelegateInitString")) {
+                    
properties.put("org.quartz.jobStore.driverDelegateInitString",
+                                      "triggerPersistenceDelegateClasses=" + 
EJBCronTriggerPersistenceDelegate.class.getName());
+                }
+
+                if 
(defaultThreadPool.equals(properties.get(StdSchedulerFactory.PROP_THREAD_POOL_CLASS))
+                    && 
properties.containsKey("org.quartz.threadPool.threadCount")
+                    && 
!properties.containsKey(DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE)) 
{
+                    log.info("Found property 
'org.quartz.threadPool.threadCount' for default thread pool, please use '"
+                             + 
DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE + "' instead");
+                }
+
+                // to ensure we can shutdown correctly, default doesn't 
support such a configuration
+                if 
(!properties.getProperty(StdSchedulerFactory.PROP_JOB_STORE_CLASS, 
RAMJobStore.class.getName()).equals(RAMJobStore.class.getName())) {
+                    properties.put("org.quartz.jobStore.makeThreadsDaemons", 
properties.getProperty("org.quartz.jobStore.makeThreadsDaemon", "true"));
+                }
 
-            scheduler = systemInstance.getComponent(Scheduler.class);
-            if (scheduler == null || newInstance) {
                 try {
                     // start in container context to avoid thread leaks
                     final ClassLoader oldCl = 
Thread.currentThread().getContextClassLoader();
@@ -257,7 +252,10 @@ public class EjbTimerServiceImpl impleme
     private static void putAll(final Properties a, final Properties b) {
         for (final Map.Entry<Object, Object> entry : b.entrySet()) {
             final String key = entry.getKey().toString();
-            if (key.startsWith("org.quartz.")) {
+            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());
             }
         }


Reply via email to