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 2008/10/27 12:21:41 UTC

svn commit: r708139 - in /synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/startup/quartz/ tasks/src/main/java/org/apache/synapse/task/

Author: indika
Date: Mon Oct 27 04:21:40 2008
New Revision: 708139

URL: http://svn.apache.org/viewvc?rev=708139&view=rev
Log:
Add more logs

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskJobDetailFactory.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskTriggerFactory.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/SynapseTaskException.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescription.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescriptionRepository.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskJobDetailFactory.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskScheduler.java
    synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskSchedulerFactory.java

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=708139&r1=708138&r2=708139&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 Mon Oct 27 04:21:40 2008
@@ -54,7 +54,13 @@
         return SimpleQuartzFactory.TASK;
     }
 
-    public void destroy() {     
+    public void destroy() {
+
+        TaskSchedulerFactory schedulerFactory = TaskSchedulerFactory.getInstance();
+        TaskScheduler taskScheduler = schedulerFactory.getTaskScheduler(SYNAPSE_STARTUP_TASK_SCHEDULER);
+        if (taskScheduler != null && taskScheduler.isInitialized()) {
+            taskScheduler.shutDown();
+        }
     }
 
     public void init(SynapseEnvironment synapseEnvironment) {

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskJobDetailFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskJobDetailFactory.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskJobDetailFactory.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskJobDetailFactory.java Mon Oct 27 04:21:40 2008
@@ -24,6 +24,7 @@
 
 import java.util.Map;
 import java.util.Set;
+import java.util.HashMap;
 
 /**
  * Default JobDetailFactory ships with synapse utils
@@ -34,25 +35,50 @@
     /**
      * @see TaskJobDetailFactory
      */
-    public JobDetail createJobDetail(TaskDescription taskDescription, Map resources, Class<Job> jobClass) {
+    public JobDetail createJobDetail(TaskDescription taskDescription, Map<String, Object> resources, Class<Job> jobClass) {
+
+        if (taskDescription == null) {
+            throw new SynapseTaskException("Task Description cannot be found.");
+        }
+
+        if (jobClass == null) {
+            throw new SynapseTaskException("Job Class cannot be found.");
+        }
+
+        if (resources == null) {
+            resources = new HashMap<String, Object>();
+        }
 
         JobDetail jobDetail = new JobDetail();
-        Set xmlProperties = taskDescription.getProperties();
-        String className = taskDescription.getTaskClass();
+        jobDetail.setJobClass(jobClass);
+
         String name = taskDescription.getName();
-        // Give the job a name
+        if (name == null || "".equals(name)) {
+            throw new SynapseTaskException("Name cannot be found.");
+        }
         jobDetail.setName(name);
+
+
         String group = taskDescription.getGroup();
         if (group != null && !"".equals(group)) {
             jobDetail.setGroup(group);
         } else {
             jobDetail.setGroup(TaskDescription.DEFAULT_GROUP);
         }
-        jobDetail.setJobClass(jobClass);
-        JobDataMap jdm = new JobDataMap(resources);
-        jdm.put(TaskDescription.CLASSNAME, className);
-        jdm.put(TaskDescription.PROPERTIES, xmlProperties);
-        jobDetail.setJobDataMap(jdm);
+
+        JobDataMap jobDataMap = new JobDataMap(resources);
+
+        String className = taskDescription.getTaskClass();
+        if (className != null && !"".equals(className)) {
+            jobDataMap.put(TaskDescription.CLASSNAME, className);
+        }
+
+        Set xmlProperties = taskDescription.getProperties();
+        if (xmlProperties != null) {
+            jobDataMap.put(TaskDescription.PROPERTIES, xmlProperties);
+        }
+        jobDetail.setJobDataMap(jobDataMap);
+
         return jobDetail;
     }
 }

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskTriggerFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskTriggerFactory.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskTriggerFactory.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/DefaultTaskTriggerFactory.java Mon Oct 27 04:21:40 2008
@@ -21,6 +21,7 @@
 import org.quartz.CronTrigger;
 import org.quartz.Trigger;
 import org.quartz.TriggerUtils;
+import org.quartz.SimpleTrigger;
 
 import java.text.ParseException;
 import java.util.Date;
@@ -37,6 +38,10 @@
     public Trigger createTrigger(TaskDescription taskDescription) {
 
         String name = taskDescription.getName();
+        if (name == null || "".equals(name)) {
+            throw new SynapseTaskException("Name of the Task cannot be null");
+        }
+        
         String cron = taskDescription.getCron();
         int repeatCount = taskDescription.getCount();
         long repeatInterval = taskDescription.getInterval();
@@ -44,11 +49,11 @@
         Date endTime = taskDescription.getEndTime();
 
         Trigger trigger;
-        if (cron == null) {
+        if (cron == null || "".equals(cron)) {
             if (repeatCount >= 0) {
                 trigger = TriggerUtils.makeImmediateTrigger(repeatCount - 1, repeatInterval);
             } else {
-                trigger = TriggerUtils.makeImmediateTrigger(-1, repeatInterval);
+                trigger = TriggerUtils.makeImmediateTrigger(SimpleTrigger.REPEAT_INDEFINITELY, repeatInterval);
             }
 
         } else {
@@ -62,7 +67,7 @@
         }
 
         if (trigger == null) {
-            throw new NullPointerException("Trigger is null for Task description : " + taskDescription);
+            throw new NullPointerException("Trigger is null for the Task description : " + taskDescription);
         }
 
         if (startTime != null) {

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/SynapseTaskException.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/SynapseTaskException.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/SynapseTaskException.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/SynapseTaskException.java Mon Oct 27 04:21:40 2008
@@ -40,14 +40,14 @@
         super(t);
     }
 
-    public SynapseTaskException(String msg, Log synLog) {
+    public SynapseTaskException(String msg, Log log) {
         super(msg);
-        synLog.error(msg);
+        log.error(msg);
     }
 
 
-    public SynapseTaskException(String msg, Throwable cause, Log synLog) {
+    public SynapseTaskException(String msg, Throwable cause, Log log) {
         super(msg, cause);
-        synLog.error(msg, cause);
+        log.error(msg, cause);
     }
 }

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescription.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescription.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescription.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescription.java Mon Oct 27 04:21:40 2008
@@ -20,6 +20,7 @@
 
 
 import org.apache.axiom.om.OMElement;
+import org.quartz.SimpleTrigger;
 
 import java.util.Date;
 import java.util.HashSet;
@@ -36,7 +37,7 @@
     public static final String PROPERTIES = "Properties";
     public static final String DEFAULT_GROUP = "synapse.simple.quartz";
     private String cron;
-    private int repeatCount = -1;
+    private int repeatCount = SimpleTrigger.REPEAT_INDEFINITELY;
     private long repeatInterval; // in milliseconds
     private String className;
     private List pinnedServers;

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescriptionRepository.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescriptionRepository.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescriptionRepository.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskDescriptionRepository.java Mon Oct 27 04:21:40 2008
@@ -32,7 +32,13 @@
     private static final Log log = LogFactory.getLog(TaskDescriptionRepository.class);
     private final Map<String, TaskDescription> taskDescriptionMap = new HashMap<String, TaskDescription>();
 
+    /**
+     * Stores a given TaskDescription
+     *
+     * @param taskDescription TaskDescription instance
+     */
     public void addTaskDescription(TaskDescription taskDescription) {
+
         validateTaskDescription(taskDescription);
 
         String name = taskDescription.getName();
@@ -43,12 +49,25 @@
 
     }
 
+    /**
+     * Gets a TaskDescription
+     *
+     * @param name Name of the TaskDescription to be looked up
+     * @return TaskDescription instance
+     */
     public TaskDescription getTaskDescription(String name) {
         validateName(name);
         return taskDescriptionMap.get(name);
     }
 
+    /**
+     * Explicit check for determine whether there is a task description with a name in interest
+     *
+     * @param name Name of the TaskDescription
+     * @return Retunrs true , if there is no TaskDescription associated with given name , otherwise , false
+     */
     public boolean isUnique(String name) {
+        validateName(name);
         return taskDescriptionMap.isEmpty() || !taskDescriptionMap.containsKey(name);
     }
 

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskJobDetailFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskJobDetailFactory.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskJobDetailFactory.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskJobDetailFactory.java Mon Oct 27 04:21:40 2008
@@ -38,5 +38,5 @@
      * @param jobClass        Job class
      * @return JobDetail instance , if there are enough information to create a instance , otherwise , return null
      */
-    JobDetail createJobDetail(TaskDescription taskDescription, Map resources, Class<Job> jobClass);
+    JobDetail createJobDetail(TaskDescription taskDescription, Map<String,Object> resources, Class<Job> jobClass);
 }

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskScheduler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskScheduler.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskScheduler.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskScheduler.java Mon Oct 27 04:21:40 2008
@@ -54,6 +54,9 @@
      */
     public static String QUARTZ_CONF = "quartz.conf";
 
+    /**
+     * Name of the scheduler
+     */
     private String name;
 
     public TaskScheduler(String name) {
@@ -74,6 +77,11 @@
             String quartzConf = properties.getProperty(QUARTZ_CONF);
             try {
                 if (quartzConf != null && !"".equals(quartzConf)) {
+
+                    if (log.isDebugEnabled()) {
+                        log.debug("Initiating a Scheduler with configuration : " + quartzConf);
+                    }
+
                     sf.initialize(quartzConf);
                 }
             } catch (SchedulerException e) {
@@ -83,12 +91,14 @@
         }
 
         try {
+
             if (name != null) {
                 scheduler = sf.getScheduler(name);
             }
             if (scheduler == null) {
                 scheduler = sf.getScheduler();
             }
+
         } catch (SchedulerException e) {
             throw new SynapseTaskException("Error getting a  scheduler instance form scheduler factory " + sf, e, log);
         }
@@ -104,6 +114,10 @@
         validateInit();
         try {
             if (!scheduler.isStarted()) {
+
+                if (log.isDebugEnabled()) {
+                    log.debug("Starting a Scheduler : [ " + scheduler.getMetaData() + " ]");
+                }
                 scheduler.start();
             }
         } catch (SchedulerException e) {
@@ -156,6 +170,9 @@
         }
 
         try {
+            if (log.isDebugEnabled()) {
+                log.debug("scheduling job : " + jobDetail + " with trigger " + trigger);
+            }
             scheduler.scheduleJob(jobDetail, trigger);
         } catch (SchedulerException e) {
             throw new SynapseTaskException("Error scheduling job : " + jobDetail + " with trigger " + trigger);
@@ -170,7 +187,11 @@
 
         validateInit();
         validateStart();
+
         try {
+            if (log.isDebugEnabled()) {
+                log.debug("ShutingDown Scheduler : " + scheduler.getMetaData());
+            }
             scheduler.shutdown();
             initialized = false;
         } catch (SchedulerException e) {
@@ -209,6 +230,10 @@
         }
 
         try {
+            if (log.isDebugEnabled()) {
+                log.debug("Deleting a Job with [ Name :" + name + " ]" +
+                        " [ Group :" + group + " ]");
+            }
             scheduler.deleteJob(name, group);
         } catch (SchedulerException e) {
             throw new SynapseTaskException("Error deleting a job with  [ Name :" + name + " ]" +
@@ -234,6 +259,16 @@
         this.jobDetailFactory = jobDetailFactory;
     }
 
+    @Override
+    public String toString() {
+        StringBuffer schedulerMetaData = new StringBuffer();
+        if (scheduler != null) {
+            schedulerMetaData = schedulerMetaData.append("[ Scheduler : ").append(scheduler).append(" ]");
+        }
+        return new StringBuffer().append("[ TaskScheduler[ Name :").
+                append(name).append("]").append(schedulerMetaData).append(" ]").toString();
+    }
+
     private void validateInit() {
 
         if (!initialized) {

Modified: synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskSchedulerFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskSchedulerFactory.java?rev=708139&r1=708138&r2=708139&view=diff
==============================================================================
--- synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskSchedulerFactory.java (original)
+++ synapse/trunk/java/modules/tasks/src/main/java/org/apache/synapse/task/TaskSchedulerFactory.java Mon Oct 27 04:21:40 2008
@@ -7,19 +7,29 @@
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * Factory method for retrieve / create a TaskScheduler
+ */
 public class TaskSchedulerFactory {
 
-    private static TaskSchedulerFactory ourInstance = new TaskSchedulerFactory();
+    private final static TaskSchedulerFactory SCHEDULER_FACTORY = new TaskSchedulerFactory();
 
-    private static final Map<String, TaskScheduler> MAP = new HashMap<String, TaskScheduler>();
+    private final static Map<String, TaskScheduler> MAP = new HashMap<String, TaskScheduler>();
 
     public static TaskSchedulerFactory getInstance() {
-        return ourInstance;
+        return SCHEDULER_FACTORY;
     }
 
     private TaskSchedulerFactory() {
     }
 
+    /**
+     * Returns a TaskScheduler whose name is match with given name.
+     * There is an only one instance of TaskScheduler for a given name as Factory caches
+     *
+     * @param name Name of the TaskScheduler
+     * @return TaskScheduler instance
+     */
     public TaskScheduler getTaskScheduler(String name) {
 
         if (name == null || "".equals(name)) {