fixing https://issues.apache.org/jira/browse/STRATOS-545


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/d8c7e56e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/d8c7e56e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/d8c7e56e

Branch: refs/heads/master
Commit: d8c7e56ed49b16aab9818439f4f346532762263a
Parents: 0fbc64a
Author: Nirmal Fernando <[email protected]>
Authored: Mon Mar 31 11:52:54 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Mon Mar 31 11:52:54 2014 +0530

----------------------------------------------------------------------
 .../org.apache.stratos.cloud.controller/pom.xml |  6 +-
 .../TopologySynchronizerTaskScheduler.java      | 91 ++++++++------------
 2 files changed, 42 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d8c7e56e/components/org.apache.stratos.cloud.controller/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/pom.xml 
b/components/org.apache.stratos.cloud.controller/pom.xml
index 9b89a35..582c02a 100644
--- a/components/org.apache.stratos.cloud.controller/pom.xml
+++ b/components/org.apache.stratos.cloud.controller/pom.xml
@@ -53,10 +53,11 @@
                             org.apache.stratos.cloud.controller.interfaces.*,
                             org.apache.stratos.cloud.controller.publisher.*,
                             org.apache.stratos.cloud.controller.topic.*,
+                            org.apache.stratos.cloud.controller.topology.*,
                             org.apache.stratos.cloud.controller.iaases.*,
                             org.apache.stratos.cloud.controller.pojo.*,
-                                           
org.apache.stratos.cloud.controller.deployers.*,
-                                           
org.apache.stratos.cloud.controller.exception.*,
+                           org.apache.stratos.cloud.controller.deployers.*,
+                           org.apache.stratos.cloud.controller.exception.*,
                         </Export-Package>
                         <Private-Package>
                             !org.apache.stratos.cloud.controller.interfaces.*,
@@ -66,6 +67,7 @@
                             !org.apache.stratos.cloud.controller.pojo.*,
                             !org.apache.stratos.cloud.controller.deployers.*,
                             !org.apache.stratos.cloud.controller.exception.*,
+                            !org.apache.stratos.cloud.controller.topology.*,
                             org.apache.stratos.cloud.controller.*,
                         </Private-Package>
                         <Import-Package>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d8c7e56e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/publisher/TopologySynchronizerTaskScheduler.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/publisher/TopologySynchronizerTaskScheduler.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/publisher/TopologySynchronizerTaskScheduler.java
index 7141279..398dc1f 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/publisher/TopologySynchronizerTaskScheduler.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/publisher/TopologySynchronizerTaskScheduler.java
@@ -19,9 +19,16 @@
 
 package org.apache.stratos.cloud.controller.publisher;
 
+import java.util.HashMap;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
 import org.apache.stratos.cloud.controller.topology.TopologySynchronizerTask;
+import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
+import org.wso2.carbon.ntask.common.TaskException;
+import org.wso2.carbon.ntask.core.TaskInfo;
+import org.wso2.carbon.ntask.core.TaskManager;
 import org.wso2.carbon.ntask.core.service.TaskService;
 
 /**
@@ -32,66 +39,44 @@ public class TopologySynchronizerTaskScheduler {
 
     private static final Log log = 
LogFactory.getLog(TopologySynchronizerTaskScheduler.class);
 
-    private static final String TOPOLOGY_SYNC_TASK_TYPE = 
"TOPOLOGY_SYNC_TASK_TYPE";
-    private static final String TOPOLOGY_SYNC_TASK_NAME = "TOPOLOGY_SYNC_TASK";
-    private static final String DEFAULT_CRON = "1 * * * * ? *";
+    private static final FasterLookUpDataHolder dataHolder = 
FasterLookUpDataHolder.getInstance();
 
     public static void schedule(TaskService taskService) {
-        // TODO: Replace this with task scheduler
-        Thread thread = new Thread(new TaskRunnable());
-        thread.start();
-    }
+        TaskManager taskManager = null;
+        try {
 
-    private static class TaskRunnable implements Runnable {
-        @Override
-        public void run() {            
-            while (true) {
+            if 
(!taskService.getRegisteredTaskTypes().contains(CloudControllerConstants.TOPOLOGY_SYNC_TASK_TYPE))
 {
+                // Register task type
+                
taskService.registerTaskType(CloudControllerConstants.TOPOLOGY_SYNC_TASK_TYPE);
+
+                // Register task
+                taskManager = 
taskService.getTaskManager(CloudControllerConstants.TOPOLOGY_SYNC_TASK_TYPE);
+                String cronProp = 
dataHolder.getTopologyConfig().getProperty(CloudControllerConstants.CRON_PROPERTY);
+                               String cron = cronProp != null ?  cronProp 
:CloudControllerConstants.TOPOLOGY_SYNC_CRON ;
+                TaskInfo.TriggerInfo triggerInfo = new 
TaskInfo.TriggerInfo(cron);
+                TaskInfo taskInfo = new 
TaskInfo(CloudControllerConstants.TOPOLOGY_SYNC_TASK_NAME,
+                        TopologySynchronizerTask.class.getName(),
+                        new HashMap<String, String>(), triggerInfo);
+                taskManager.registerTask(taskInfo);
+                if(log.isDebugEnabled()) {
+                    log.debug(String.format("Topology synchronization task 
scheduled: %s", CloudControllerConstants.TOPOLOGY_SYNC_TASK_NAME));
+                }
+            }
+
+        } catch (Exception e) {
+            if (taskManager != null) {
                 try {
-                    log.debug("Running topology synchronizer task");
-                    TopologySynchronizerTask task = new 
TopologySynchronizerTask();
-                    task.execute();
-                    try {
-                        Thread.sleep(60 * 1000);
-                    } catch (InterruptedException e) {
+                    
taskManager.deleteTask(CloudControllerConstants.TOPOLOGY_SYNC_TASK_NAME);
+                } catch (TaskException te) {
+                    if (log.isErrorEnabled()) {
+                        log.error(te);
                     }
-                } catch (Exception e) {
-                    log.error(e);
                 }
             }
+            
+            String msg = String.format("Could not schedule topology 
synchronization task: %s", CloudControllerConstants.TOPOLOGY_SYNC_TASK_NAME);
+            log.error(msg, e);
+                       throw new RuntimeException(msg, e);
         }
     }
-
-//    public static void schedule(TaskService taskService) {
-//        TaskManager taskManager = null;
-//        try {
-//
-//            if 
(!taskService.getRegisteredTaskTypes().contains(TOPOLOGY_SYNC_TASK_TYPE)) {
-//                // Register task type
-//                taskService.registerTaskType(TOPOLOGY_SYNC_TASK_TYPE);
-//
-//                // Register task
-//                taskManager = 
taskService.getTaskManager(TOPOLOGY_SYNC_TASK_TYPE);
-//                TaskInfo.TriggerInfo triggerInfo = new 
TaskInfo.TriggerInfo(DEFAULT_CRON);
-//                TaskInfo taskInfo = new TaskInfo(TOPOLOGY_SYNC_TASK_NAME,
-//                        TopologySynchronizerTask.class.getName(),
-//                        new HashMap<String, String>(), triggerInfo);
-//                taskManager.registerTask(taskInfo);
-//                if(log.isDebugEnabled()) {
-//                    log.debug(String.format("Topology synchronization task 
scheduled: %s", TOPOLOGY_SYNC_TASK_NAME));
-//                }
-//            }
-//
-//        } catch (Exception e) {
-//            if (taskManager != null) {
-//                try {
-//                    taskManager.deleteTask(TOPOLOGY_SYNC_TASK_NAME);
-//                } catch (TaskException te) {
-//                    if (log.isErrorEnabled()) {
-//                        log.error(te);
-//                    }
-//                }
-//            }
-//            throw new RuntimeException(String.format("Could not schedule 
topology synchronization task: %s", TOPOLOGY_SYNC_TASK_NAME), e);
-//        }
-//    }
 }

Reply via email to