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 2016/05/28 06:55:17 UTC

[8/8] camel git commit: Added extra parameter to SpringBatch connector to support dynamic jobName in the headers, Test passed, code rules passed.

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 <jo...@elephanttalk.com>
Authored: Fri May 27 12:55:34 2016 +0200
Committer: Claus Ibsen <da...@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");