You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2009/04/02 10:27:55 UTC

svn commit: r761201 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: Axis2SynapseController.java startup/quartz/SimpleQuartz.java

Author: indika
Date: Thu Apr  2 08:27:55 2009
New Revision: 761201

URL: http://svn.apache.org/viewvc?rev=761201&view=rev
Log:
Add capability to get task description repository and   task scheduler if those have been already created and pass with context information when starting synapse

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java?rev=761201&r1=761200&r2=761201&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/Axis2SynapseController.java Thu Apr  2 08:27:55 2009
@@ -41,6 +41,7 @@
 import org.apache.synapse.core.axis2.ProxyService;
 import org.apache.synapse.core.axis2.SynapseMessageReceiver;
 import org.apache.synapse.eventing.SynapseEventSource;
+import org.apache.synapse.task.*;
 
 import java.util.*;
 
@@ -102,7 +103,7 @@
                         " invalid, expected an Axis2 ConfigurationContext instance");
             }
         }
-        initDefault();
+        initDefault(contextInformation);
         initialized = true;
     }
 
@@ -112,6 +113,7 @@
     public void destroy() {
 
         try {
+            cleanupDefault();
             // stop all services
             if (information.isCreateNewInstance()) {  // only if we have created the server
 
@@ -340,10 +342,11 @@
         setupEventSources();
     }
 
-    private void initDefault() {
+    private void initDefault(ServerContextInformation contextInformation) {
         addDefaultBuildersAndFormatters(configurationContext.getAxisConfiguration());
         loadMediatorExtensions();
         setupDataSources();
+        setupTaskHelper(contextInformation);
     }
 
     private void loadMediatorExtensions() {
@@ -365,6 +368,47 @@
                         configurationContext.getAxisConfiguration(), synapseProperties);
     }
 
+    /**
+     *  Intialize TaskHelper - with any existing  TaskDescriptionRepository and TaskScheduler
+     *  or without those
+     * @param contextInformation  ServerContextInformation instance
+     */
+    private void setupTaskHelper(ServerContextInformation contextInformation) {
+
+        TaskHelper taskHelper = TaskHelper.getInstance();
+        if (taskHelper.isInitialized()) {
+            if (log.isDebugEnabled()) {
+                log.debug("TaskHelper has been already initialized.");
+            }
+            return;
+        }
+
+        Object repo = contextInformation.getProperty(TaskConstants.TASK_DESCRIPTION_REPOSITORY);
+        Object taskScheduler = contextInformation.getProperty(TaskConstants.TASK_SCHEDULER);
+
+        if (repo instanceof TaskDescriptionRepository && taskScheduler instanceof TaskScheduler) {
+            taskHelper.init((TaskDescriptionRepository) repo, (TaskScheduler) taskScheduler);
+        } else {
+
+            if (repo == null && taskScheduler == null) {
+                taskHelper.init(
+                        TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
+                                TaskConstants.TASK_DESCRIPTION_REPOSITORY),
+                        TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));
+            } else {
+                handleFatal("Invalid property values for " +
+                        "TaskDescriptionRepository or / and TaskScheduler ");
+            }
+        }
+    }
+
+    private void cleanupDefault() {
+        TaskHelper taskHelper = TaskHelper.getInstance();
+        if (taskHelper.isInitialized()) {
+            taskHelper.cleanup();
+        }
+    }
+
     private void addDefaultBuildersAndFormatters(AxisConfiguration axisConf) {
         if (axisConf.getMessageBuilder("text/plain") == null) {
             axisConf.addMessageBuilder("text/plain", new PlainTextBuilder());

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java?rev=761201&r1=761200&r2=761201&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java Thu Apr  2 08:27:55 2009
@@ -21,16 +21,13 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.SynapseException;
 import org.apache.synapse.config.SynapseConfigUtils;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.startup.AbstractStartup;
-import org.apache.synapse.task.TaskDescription;
-import org.apache.synapse.task.TaskDescriptionRepository;
-import org.apache.synapse.task.TaskScheduler;
-import org.apache.synapse.task.TaskSchedulerFactory;
-import org.apache.synapse.SynapseConstants;
-import org.apache.synapse.SynapseException;
+import org.apache.synapse.task.*;
 
 import javax.xml.namespace.QName;
 import java.net.InetAddress;
@@ -52,8 +49,7 @@
 
     private TaskDescription taskDescription;
 
-    private TaskDescriptionRepository repository;
-
+    private final TaskHelper taskHelper = TaskHelper.getInstance();
 
     public QName getTagQName() {
         return SimpleQuartzFactory.TASK;
@@ -68,15 +64,18 @@
             return;
         }
 
-        TaskScheduler taskScheduler = TaskSchedulerFactory.getTaskScheduler(
-                SynapseConstants.SYNAPSE_STARTUP_TASK_SCHEDULER);
+        if (taskHelper.isInitialized()) {
 
-        if (taskScheduler != null && taskScheduler.isInitialized()) {
-            taskScheduler.deleteTask(taskDescription.getName(), taskDescription.getGroup());
-        }
+            TaskScheduler taskScheduler = taskHelper.getTaskScheduler();
 
-        if (repository != null) {
-            repository.removeTaskDescription(taskDescription.getName());
+            if (taskScheduler != null && taskScheduler.isInitialized()) {
+                taskScheduler.deleteTask(taskDescription.getName(), taskDescription.getGroup());
+            }
+
+            TaskDescriptionRepository repository = taskHelper.getTaskDescriptionRepository();
+            if (repository != null) {
+                repository.removeTaskDescription(taskDescription.getName());
+            }
         }
     }
 
@@ -87,7 +86,15 @@
         }
 
         SynapseConfiguration synapseConfiguration = synapseEnvironment.getSynapseConfiguration();
-        repository = synapseConfiguration.getTaskDescriptionRepository();
+
+        if (!taskHelper.isInitialized()) {
+            taskHelper.init(
+                    TaskDescriptionRepositoryFactory.getTaskDescriptionRepository(
+                            TaskConstants.TASK_DESCRIPTION_REPOSITORY),
+                    TaskSchedulerFactory.getTaskScheduler(TaskConstants.TASK_SCHEDULER));
+        }
+
+        TaskDescriptionRepository repository = taskHelper.getTaskDescriptionRepository();
 
         if (repository == null) {
             handleException("Task Description Repository can not found");