You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/06/24 07:17:48 UTC
svn commit: r957419 - in /camel/trunk/components/camel-quartz/src:
main/java/org/apache/camel/component/quartz/
test/java/org/apache/camel/component/quartz/
test/resources/org/apache/camel/component/quartz/
Author: davsclaus
Date: Thu Jun 24 05:17:48 2010
New Revision: 957419
URL: http://svn.apache.org/viewvc?rev=957419&view=rev
Log:
CAMEL-2844: Added options on quartz component to specify a custom quartz.properties to be used.
Added:
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java (with props)
camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/
camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties (with props)
Modified:
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/CamelJob.java
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/StatefulCamelJob.java
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzComponentTest.java
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzTwoCamelContextTest.java
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/StatefulQuartzRouteTest.java
Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/CamelJob.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/CamelJob.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/CamelJob.java (original)
+++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/CamelJob.java Thu Jun 24 05:17:48 2010
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.quartz;
+import java.io.Serializable;
+
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
@@ -23,7 +25,7 @@ import org.quartz.JobExecutionException;
/**
* @version $Revision$
*/
-public class CamelJob implements Job {
+public class CamelJob implements Job, Serializable {
public void execute(JobExecutionContext context) throws JobExecutionException {
QuartzEndpoint endpoint = (QuartzEndpoint) context.getJobDetail().getJobDataMap().get(QuartzConstants.QUARTZ_ENDPOINT);
Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java (original)
+++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/QuartzComponent.java Thu Jun 24 05:17:48 2010
@@ -16,10 +16,13 @@
*/
package org.apache.camel.component.quartz;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
import java.text.ParseException;
import java.util.Date;
import java.util.Map;
+import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.camel.CamelContext;
@@ -42,7 +45,7 @@ import org.quartz.impl.StdSchedulerFacto
* <p/>
* For a brief tutorial on setting cron expression see
* <a href="http://www.opensymphony.com/quartz/wikidocs/CronTriggers%20Tutorial.html">Quartz cron tutorial</a>.
- *
+ *
* @version $Revision:520964 $
*/
public class QuartzComponent extends DefaultComponent {
@@ -50,6 +53,8 @@ public class QuartzComponent extends Def
private static final AtomicInteger JOBS = new AtomicInteger();
private static Scheduler scheduler;
private SchedulerFactory factory;
+ private Properties properties;
+ private String propertiesFile;
public QuartzComponent() {
}
@@ -82,7 +87,7 @@ public class QuartzComponent extends Def
Map<String, Object> triggerParameters = IntrospectionSupport.extractProperties(parameters, "trigger.");
Map<String, Object> jobParameters = IntrospectionSupport.extractProperties(parameters, "job.");
-
+
// create the trigger either cron or simple
Trigger trigger;
if (ObjectHelper.isNotEmpty(cron)) {
@@ -101,7 +106,7 @@ public class QuartzComponent extends Def
trigger.setName(name);
trigger.setGroup(group);
-
+
setProperties(trigger, triggerParameters);
setProperties(answer.getJobDetail(), jobParameters);
@@ -145,17 +150,17 @@ public class QuartzComponent extends Def
JOBS.incrementAndGet();
if (getScheduler().getTrigger(trigger.getName(), trigger.getGroup()) == null) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Adding job using trigger: " + trigger.getGroup() + "/" + trigger.getName());
- }
- getScheduler().scheduleJob(job, trigger);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding job using trigger: " + trigger.getGroup() + "/" + trigger.getName());
+ }
+ getScheduler().scheduleJob(job, trigger);
} else {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Resuming job using trigger: " + trigger.getGroup() + "/" + trigger.getName());
- }
- getScheduler().resumeTrigger(trigger.getName(), trigger.getGroup());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Resuming job using trigger: " + trigger.getGroup() + "/" + trigger.getName());
+ }
+ getScheduler().resumeTrigger(trigger.getName(), trigger.getGroup());
}
-
+
}
public void removeJob(Trigger trigger) throws SchedulerException {
@@ -169,7 +174,8 @@ public class QuartzComponent extends Def
// Properties
// -------------------------------------------------------------------------
- public SchedulerFactory getFactory() {
+
+ public SchedulerFactory getFactory() throws SchedulerException {
if (factory == null) {
factory = createSchedulerFactory();
}
@@ -184,7 +190,7 @@ public class QuartzComponent extends Def
if (scheduler == null) {
scheduler = createScheduler();
}
- if (!scheduler.isStarted()) {
+ if (!scheduler.isStarted()) {
LOG.info("Starting Quartz scheduler: " + scheduler.getSchedulerName());
scheduler.start();
}
@@ -195,10 +201,50 @@ public class QuartzComponent extends Def
QuartzComponent.scheduler = scheduler;
}
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public String getPropertiesFile() {
+ return propertiesFile;
+ }
+
+ public void setPropertiesFile(String propertiesFile) {
+ this.propertiesFile = propertiesFile;
+ }
+
// Implementation methods
// -------------------------------------------------------------------------
- protected SchedulerFactory createSchedulerFactory() {
- return new StdSchedulerFactory();
+
+ protected Properties loadProperties() throws SchedulerException {
+ Properties answer = getProperties();
+ if (answer == null && getPropertiesFile() != null) {
+ LOG.info("Loading Quartz properties file from classpath: " + getPropertiesFile());
+ InputStream is = getCamelContext().getClassResolver().loadResourceAsStream(getPropertiesFile());
+ if (is == null) {
+ throw new SchedulerException("Quartz properties file not found in classpath: " + getPropertiesFile());
+ }
+ answer = new Properties();
+ try {
+ answer.load(is);
+ } catch (IOException e) {
+ throw new SchedulerException("Error loading Quartz properties file from: " + getPropertiesFile(), e);
+ }
+ }
+ return answer;
+ }
+
+ protected SchedulerFactory createSchedulerFactory() throws SchedulerException {
+ Properties prop = loadProperties();
+ if (prop != null) {
+ return new StdSchedulerFactory(prop);
+ } else {
+ return new StdSchedulerFactory();
+ }
}
protected Scheduler createScheduler() throws SchedulerException {
Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/StatefulCamelJob.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/StatefulCamelJob.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/StatefulCamelJob.java (original)
+++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/component/quartz/StatefulCamelJob.java Thu Jun 24 05:17:48 2010
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.quartz;
+import java.io.Serializable;
+
import org.apache.camel.CamelContext;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
@@ -26,7 +28,7 @@ import org.quartz.StatefulJob;
/**
* Stateful job
*/
-public class StatefulCamelJob implements StatefulJob {
+public class StatefulCamelJob implements StatefulJob, Serializable {
public void execute(final JobExecutionContext context) throws JobExecutionException {
SchedulerContext schedulerContext;
Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzComponentTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzComponentTest.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzComponentTest.java (original)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzComponentTest.java Thu Jun 24 05:17:48 2010
@@ -28,7 +28,7 @@ import org.quartz.impl.StdSchedulerFacto
public class QuartzComponentTest extends CamelTestSupport {
@Test
- public void testQuartzComponentCustomScheuduler() throws Exception {
+ public void testQuartzComponentCustomScheduler() throws Exception {
QuartzComponent comp = new QuartzComponent();
comp.setCamelContext(context);
Added: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java?rev=957419&view=auto
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java (added)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java Thu Jun 24 05:17:48 2010
@@ -0,0 +1,85 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.quartz;
+
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+import org.quartz.SchedulerException;
+
+/**
+ * @version $Revision$
+ */
+public class QuartzPropertiesTest extends CamelTestSupport {
+
+ private QuartzComponent quartz;
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ quartz.stop();
+ super.tearDown();
+ }
+
+ @Test
+ public void testQuartzPropertiesFile() throws Exception {
+ quartz = context.getComponent("quartz", QuartzComponent.class);
+
+ quartz.setPropertiesFile("org/apache/camel/component/quartz/myquartz.properties");
+
+ quartz.start();
+
+ assertEquals("MyScheduler", quartz.getScheduler().getSchedulerName());
+ assertEquals("2", quartz.getScheduler().getSchedulerInstanceId());
+ }
+
+ @Test
+ public void testQuartzPropertiesFileNotFound() throws Exception {
+ quartz = context.getComponent("quartz", QuartzComponent.class);
+
+ quartz.setPropertiesFile("doesnotexist.properties");
+
+ try {
+ quartz.start();
+ fail("Should have thrown exception");
+ } catch (SchedulerException e) {
+ assertEquals("Quartz properties file not found in classpath: doesnotexist.properties", e.getMessage());
+ }
+ }
+
+ @Test
+ public void testQuartzProperties() throws Exception {
+ quartz = context.getComponent("quartz", QuartzComponent.class);
+
+ Properties prop = new Properties();
+ InputStream is = context.getClassResolver().loadResourceAsStream("org/apache/camel/component/quartz/myquartz.properties");
+ prop.load(is);
+ quartz.setProperties(prop);
+
+ quartz.start();
+
+ assertEquals("MyScheduler", quartz.getScheduler().getSchedulerName());
+ assertEquals("2", quartz.getScheduler().getSchedulerInstanceId());
+ }
+
+}
Propchange: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzPropertiesTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java (original)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzRouteFireNowTest.java Thu Jun 24 05:17:48 2010
@@ -16,15 +16,7 @@
*/
package org.apache.camel.component.quartz;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
/**
* @version $Revision$
Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzTwoCamelContextTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzTwoCamelContextTest.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzTwoCamelContextTest.java (original)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzTwoCamelContextTest.java Thu Jun 24 05:17:48 2010
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.quartz;
-import junit.framework.TestCase;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.impl.DefaultCamelContext;
Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/StatefulQuartzRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/StatefulQuartzRouteTest.java?rev=957419&r1=957418&r2=957419&view=diff
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/StatefulQuartzRouteTest.java (original)
+++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/StatefulQuartzRouteTest.java Thu Jun 24 05:17:48 2010
@@ -26,7 +26,7 @@ import org.apache.camel.test.junit4.Came
import org.junit.Test;
/**
- *
+ * @version $Revision$
*/
public class StatefulQuartzRouteTest extends CamelTestSupport {
protected MockEndpoint resultEndpoint;
Added: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties?rev=957419&view=auto
==============================================================================
--- camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties (added)
+++ camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties Thu Jun 24 05:17:48 2010
@@ -0,0 +1,9 @@
+org.quartz.scheduler.instanceName = MyScheduler
+org.quartz.scheduler.instanceId = 2
+org.quartz.scheduler.rmi.export = false
+org.quartz.scheduler.rmi.proxy = false
+
+org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount = 3
+
+org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
\ No newline at end of file
Propchange: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/component/quartz/myquartz.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain