Added extra parameter to SpringBatch connector to support dynamic jobName in 
the headers, Test passed, code rules passed.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/45a8e1ea
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/45a8e1ea
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/45a8e1ea

Branch: refs/heads/master
Commit: 45a8e1ea35b6d85160011ea3c58964cc2600517a
Parents: 4a6eba2
Author: Joseluis Pedrosa <joseluis.pedr...@elephanttalk.com>
Authored: Fri May 27 12:55:34 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat May 28 08:48:19 2016 +0200

----------------------------------------------------------------------
 .../spring/batch/SpringBatchEndpoint.java       | 24 +++++++++++++++-----
 .../spring/batch/SpringBatchProducer.java       |  1 -
 .../spring/batch/SpringBatchEndpointTest.java   |  9 ++++----
 3 files changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/45a8e1ea/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
 
b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
index 0cc3a45..e9130da 100644
--- 
a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
+++ 
b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchEndpoint.java
@@ -23,10 +23,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.UriEndpoint;
-import org.apache.camel.spi.UriParam;
-import org.apache.camel.spi.UriPath;
+import org.apache.camel.spi.*;
 import org.apache.camel.util.CamelContextHelper;
 import org.springframework.batch.core.Job;
 import org.springframework.batch.core.launch.JobLauncher;
@@ -37,10 +34,14 @@ import org.springframework.batch.core.launch.JobLauncher;
 @UriEndpoint(scheme = "spring-batch", title = "Spring Batch", syntax = 
"spring-batch:jobName", producerOnly = true, label = "spring,batch,scheduling")
 public class SpringBatchEndpoint extends DefaultEndpoint {
 
-    @UriPath()
+
+    @UriPath
     @Metadata(required = "true")
     private String jobName;
 
+    @UriParam(defaultValue = "false")
+    private Boolean jobFromHeader;
+
     /**
      * @deprecated will be removed in Camel 3.0
      * use jobLauncher instead
@@ -85,7 +86,7 @@ public class SpringBatchEndpoint extends DefaultEndpoint {
         if (jobLauncher == null) {
             jobLauncher = resolveJobLauncher();
         }
-        if (job == null && jobName != null && !"dynamic".equals(jobName)) {
+        if (job == null && jobName != null && jobFromHeader == null) {
             job = CamelContextHelper.mandatoryLookup(getCamelContext(), 
jobName, Job.class);
         }
     }
@@ -146,4 +147,15 @@ public class SpringBatchEndpoint extends DefaultEndpoint {
     public void setJobLauncher(JobLauncher jobLauncher) {
         this.jobLauncher = jobLauncher;
     }
+
+
+    /**
+     * Explicitly defines if the jobName shouls be taken from the headers 
instead of the URI.
+     */
+    public void setJobFromHeader(Boolean jobFromHeader) { this.jobFromHeader = 
jobFromHeader; }
+
+
+    public Boolean getJobFromHeader() { return jobFromHeader;  }
+
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/45a8e1ea/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchProducer.java
 
b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchProducer.java
index 7c985fe..3a6fc7b 100644
--- 
a/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchProducer.java
+++ 
b/components/camel-spring-batch/src/main/java/org/apache/camel/component/spring/batch/SpringBatchProducer.java
@@ -56,7 +56,6 @@ public class SpringBatchProducer extends DefaultProducer {
             job2run = 
CamelContextHelper.mandatoryLookup(getEndpoint().getCamelContext(), 
messageJobName, Job.class);
         }
 
-
         if (job2run == null) {
             exchange.setException(new CamelExchangeException("jobName was not 
specified in the endpoint construction "
                     + " and header " + SpringBatchComponent.JOB_NAME + " could 
not be found", exchange));

http://git-wip-us.apache.org/repos/asf/camel/blob/45a8e1ea/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
 
b/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
index e145330..b67237c 100644
--- 
a/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
+++ 
b/components/camel-spring-batch/src/test/java/org/apache/camel/component/spring/batch/SpringBatchEndpointTest.java
@@ -48,7 +48,6 @@ import static org.mockito.BDDMockito.*;
 public class SpringBatchEndpointTest extends CamelTestSupport {
 
     // Fixtures
-
     @Mock
     JobLauncher jobLauncher;
 
@@ -77,7 +76,7 @@ public class SpringBatchEndpointTest extends CamelTestSupport 
{
             public void configure() throws Exception {
                 
from("direct:start").to("spring-batch:mockJob").to("mock:test");
                 from("direct:dynamic").
-                        to("spring-batch:dynamic").
+                        to("spring-batch:mockJob?jobFromHeader=true").
                         errorHandler(deadLetterChannel("mock:error")).
                         to("mock:test");
             }
@@ -111,7 +110,7 @@ public class SpringBatchEndpointTest extends 
CamelTestSupport {
     }
 
     @Test
-    public void dynamicJobWorksIfHeaderWithInvalidJobName() throws Exception {
+    public void dynamicJobFailsIfHeaderWithInvalidJobName() throws Exception {
 
         mockEndpoint.expectedMessageCount(0);
         errorEndpoint.expectedMessageCount(1);
@@ -125,11 +124,11 @@ public class SpringBatchEndpointTest extends 
CamelTestSupport {
     }
 
     @Test
-    public void dynamicJobWorksIfHeaderPressentWithvalidJob() throws Exception 
{
+    public void dynamicJobWorksIfHeaderPressentWithValidJob() throws Exception 
{
 
         mockEndpoint.expectedMessageCount(1);
         errorEndpoint.expectedMessageCount(0);
-        Thread.sleep(5000);
+
         //dynamic job work if header is present and the job exists
         final Map<String, Object> headers = new HashMap<>();
         headers.put(SpringBatchComponent.JOB_NAME, "dynamicMockjob");

Reply via email to