Revision: 36280
Author:   dvandiepen
Date:     2012-09-21 11:09:51 +0200 (Fri, 21 Sep 2012)
Log Message:
-----------
REPO-489: disable scheduling with the hippo.scheduler.enabled system property

Both the scheduling and the execution of jobs is disabled by setting this 
property to 'false'.

Modified Paths:
--------------
    
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/SchedulerModule.java
    
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/workflow/SchedulerWorkflowModule.java

Modified: 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/SchedulerModule.java
===================================================================
--- 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/SchedulerModule.java
        2012-09-21 08:59:30 UTC (rev 36279)
+++ 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/SchedulerModule.java
        2012-09-21 09:09:51 UTC (rev 36280)
@@ -50,20 +50,33 @@
     private Session session;
     private JCRScheduler scheduler = null;
 
+    public static boolean isEnabled() {
+        final String enabled = System.getProperty("hippo.scheduler.enabled");
+        return enabled == null ? true : Boolean.parseBoolean(enabled);
+    }
+
     public void initialize(Session session) {
         this.session = session;
-        try {
-            final JcrSchedulerFactory schedFactory = new 
JcrSchedulerFactory(SCHEDULER_FACTORY_PROPERTIES);
-            scheduler = (JCRScheduler) schedFactory.getScheduler();
-            scheduler.start();
-        } catch (SchedulerException ex) {
-            log.error(ex.getClass().getName()+": "+ex.getMessage(), ex);
+        if (isEnabled()) {
+            try {
+                final JcrSchedulerFactory schedFactory = new 
JcrSchedulerFactory(SCHEDULER_FACTORY_PROPERTIES);
+                scheduler = (JCRScheduler) schedFactory.getScheduler();
+                scheduler.start();
+            } catch (SchedulerException ex) {
+                log.error(ex.getClass().getName()+": "+ex.getMessage(), ex);
+            }
+        } else {
+            log.info("Hippo scheduler was disabled by hippo.scheduler.enabled 
property, scheduled actions will not be executed");
         }
         instance = this;
     }
 
     public static Scheduler getScheduler(Session session) {
-        return new JCRScheduler(instance.scheduler, session);
+        if (instance.scheduler != null) {
+            return new JCRScheduler(instance.scheduler, session);
+        } else {
+            throw new NullPointerException("The scheduler module has been 
disabled, no scheduler is available");
+        }
     }
 
     static Session getSession() {

Modified: 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/workflow/SchedulerWorkflowModule.java
===================================================================
--- 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/workflow/SchedulerWorkflowModule.java
       2012-09-21 08:59:30 UTC (rev 36279)
+++ 
hippo-cms7/repository/trunk/engine/src/main/java/org/hippoecm/repository/quartz/workflow/SchedulerWorkflowModule.java
       2012-09-21 09:09:51 UTC (rev 36280)
@@ -22,22 +22,31 @@
 import org.hippoecm.repository.ext.WorkflowInvocationHandlerModuleFactory;
 import org.hippoecm.repository.ext.WorkflowManagerModule;
 import org.hippoecm.repository.ext.WorkflowManagerRegister;
+import org.hippoecm.repository.quartz.SchedulerModule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SchedulerWorkflowModule implements WorkflowManagerModule {
 
+    static final Logger log = 
LoggerFactory.getLogger(SchedulerWorkflowModule.class);
+
     @Override
     public void register(WorkflowManagerRegister register) {
-        register.bind(Date.class, new 
WorkflowInvocationHandlerModuleFactory<Date>() {
-            @Override
-            public WorkflowInvocationHandlerModule 
createInvocationHandler(Date date) {
-                return new DateSchedulerInvocationModule(date);
-            }
-        });
-        register.bind(CronExpression.class, new 
WorkflowInvocationHandlerModuleFactory<CronExpression>() {
-            @Override
-            public WorkflowInvocationHandlerModule 
createInvocationHandler(CronExpression cronExpression) {
-                return new 
CronSchedulerInvocationModule(cronExpression.toString());
-            }
-        });
+        if (SchedulerModule.isEnabled()) {
+            register.bind(Date.class, new 
WorkflowInvocationHandlerModuleFactory<Date>() {
+                @Override
+                public WorkflowInvocationHandlerModule 
createInvocationHandler(Date date) {
+                    return new DateSchedulerInvocationModule(date);
+                }
+            });
+            register.bind(CronExpression.class, new 
WorkflowInvocationHandlerModuleFactory<CronExpression>() {
+                @Override
+                public WorkflowInvocationHandlerModule 
createInvocationHandler(CronExpression cronExpression) {
+                    return new 
CronSchedulerInvocationModule(cronExpression.toString());
+                }
+            });
+        } else {
+            log.info("Hippo scheduler was disabled, scheduling workflow 
actions will not be possible");
+        }
     }
 }

_______________________________________________
Hippocms-svn mailing list
[email protected]
https://lists.onehippo.org/mailman/listinfo/hippocms-svn

Reply via email to