From e70e3b0bb68823feee056249554dfb6b554b036a Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Fri, 2 Mar 2012 09:50:25 +0000
Subject: [PATCH] LMS-2821 Added support for injected maintenance plugins

SVN: 24599
---
 .../cisd/common/maintenance/MaintenancePlugin.java   | 12 ++++++++++++
 .../maintenance/MaintenanceTaskParameters.java       |  8 ++++----
 .../common/maintenance/MaintenanceTaskUtils.java     |  9 +++++++++
 3 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
index 90a918ebafd..b70384e27d9 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
@@ -43,6 +43,18 @@ public class MaintenancePlugin
         this.requiresDataStoreLock = requiresDataStoreLock();
     }
 
+    /**
+     * Constructor that takes a configured maintenance task.
+     * 
+     * @param task
+     */
+    public MaintenancePlugin(IMaintenanceTask task, MaintenanceTaskParameters parameters)
+    {
+        this.parameters = parameters;
+        this.task = task;
+        this.requiresDataStoreLock = requiresDataStoreLock();
+    }
+
     private boolean requiresDataStoreLock()
     {
         if (task instanceof IDataStoreLockingMaintenanceTask)
diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
index e1f7ef7fd4d..1df85fe93e0 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
@@ -34,13 +34,13 @@ import ch.systemsx.cisd.common.utilities.PropertyUtils;
  */
 public class MaintenanceTaskParameters
 {
-    static final String TIME_FORMAT = "HH:mm";
+    public static final String CLASS_KEY = "class";
 
-    static final int ONE_DAY_IN_SEC = 60 * 60 * 24;
+    public static final String INTERVAL_KEY = "interval";
 
-    static final String CLASS_KEY = "class";
+    static final String TIME_FORMAT = "HH:mm";
 
-    static final String INTERVAL_KEY = "interval";
+    static final int ONE_DAY_IN_SEC = 60 * 60 * 24;
 
     static final String START_KEY = "start";
 
diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
index f1369c945df..2d984229311 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
@@ -51,12 +51,21 @@ public class MaintenanceTaskUtils
             MaintenancePlugin plugin = new MaintenancePlugin(parameters);
             plugins.add(plugin);
         }
+
         for (MaintenancePlugin plugin : plugins)
         {
             plugin.start();
         }
     }
 
+    /**
+     * Inject a maintenance plugin into the running plugin environment.
+     */
+    public static void injectMaintenancePlugin(MaintenancePlugin plugin)
+    {
+        plugin.start();
+    }
+
     public static MaintenanceTaskParameters[] createMaintenancePlugins(
             final Properties serviceProperties)
     {
-- 
GitLab