You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/05/23 17:38:22 UTC
svn commit: r540976 - in /activemq/camel/trunk/components/camel-quartz/src:
main/java/org/apache/camel/component/quartz/QuartzComponent.java
test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
Author: jstrachan
Date: Wed May 23 08:38:21 2007
New Revision: 540976
URL: http://svn.apache.org/viewvc?view=rev&rev=540976
Log:
added support for cron expressions in URIs
Modified:
activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
activemq/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
Modified: activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java?view=diff&rev=540976&r1=540975&r2=540976
==============================================================================
--- activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java (original)
+++ activemq/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java Wed May 23 08:38:21 2007
@@ -28,6 +28,7 @@
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
+import org.quartz.CronTrigger;
import org.quartz.impl.StdSchedulerFactory;
import java.util.Map;
@@ -55,16 +56,33 @@
@Override
protected QuartzEndpoint createEndpoint(String uri, String remaining, Map parameters) throws Exception {
+ QuartzEndpoint answer = new QuartzEndpoint(uri, this, getScheduler());
+
// lets split the remaining into a group/name
URI u = new URI(uri);
String name;
String group = "Camel";
String path = u.getPath();
+ CronTrigger cronTrigger = null;
if (path != null && path.length() > 1) {
if (path.startsWith("/")) {
path = path.substring(1);
}
- name = path;
+ int idx = path.indexOf('/');
+ if (idx > 0) {
+ cronTrigger = new CronTrigger();
+ name = path.substring(0, idx);
+ String cronExpression = path.substring(idx + 1);
+ // lets allow / instead of spaces and allow $ instead of ?
+ cronExpression = cronExpression.replace('/', ' ');
+ cronExpression = cronExpression.replace('$', '?');
+ log.debug("Creating cron trigger: " + cronExpression);
+ cronTrigger.setCronExpression(cronExpression);
+ answer.setTrigger(cronTrigger);
+ }
+ else {
+ name = path;
+ }
group = u.getHost();
}
else {
@@ -80,8 +98,10 @@
name = names[0];
}
*/
- QuartzEndpoint answer = new QuartzEndpoint(uri, this, getScheduler());
- Trigger trigger = answer.getTrigger();
+ Trigger trigger = cronTrigger;
+ if (trigger == null) {
+ trigger = answer.getTrigger();
+ }
trigger.setName(name);
trigger.setGroup(group);
Modified: activemq/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java?view=diff&rev=540976&r1=540975&r2=540976
==============================================================================
--- activemq/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java (original)
+++ activemq/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java Wed May 23 08:38:21 2007
@@ -21,6 +21,7 @@
import org.apache.camel.Endpoint;
import org.quartz.Trigger;
import org.quartz.SimpleTrigger;
+import org.quartz.CronTrigger;
/**
* @version $Revision: 1.1 $
@@ -42,6 +43,14 @@
Trigger trigger = endpoint.getTrigger();
assertEquals("getName()", "myName", trigger.getName());
assertEquals("getGroup()", "Camel", trigger.getGroup());
+ }
+
+ public void testConfigureCronExpression() throws Exception {
+ QuartzEndpoint endpoint = resolveMandatoryEndpoint("quartz://myGroup/myTimerName/0/0/12/*/*/$");
+ CronTrigger trigger = assertIsInstanceOf(CronTrigger.class, endpoint.getTrigger());
+ assertEquals("getName()", "myTimerName", trigger.getName());
+ assertEquals("getGroup()", "myGroup", trigger.getGroup());
+ assertEquals("cron expression", "0 0 12 * * ?", trigger.getCronExpression());
}
@Override