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)) {