This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b7118b498200cc75e54da323e0137e2116c44329
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Mar 7 15:13:40 2022 +0100

    camel-core - Resumable DSL keep same type in Java DSL as it has no mo… 
(#7134)
    
    * camel-core - Resumable DSL keep same type in Java DSL as it has no more 
configuration, and changing types can cause problems for Java DSL. Add string 
parameter variant to make it easy to use.
---
 .../docs/modules/eips/pages/resume-strategies.adoc |  8 +++---
 .../apache/camel/model/ProcessorDefinition.java    | 32 +++++++++++++++++-----
 .../apache/camel/model/ResumableDefinition.java    |  3 ++
 .../FileConsumerResumeFromOffsetStrategyTest.java  |  5 ++--
 .../file/FileConsumerResumeStrategyTest.java       |  2 +-
 5 files changed, 36 insertions(+), 14 deletions(-)

diff --git 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/resume-strategies.adoc
 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/resume-strategies.adoc
index a1e151b..214157b 100644
--- 
a/core/camel-core-engine/src/main/docs/modules/eips/pages/resume-strategies.adoc
+++ 
b/core/camel-core-engine/src/main/docs/modules/eips/pages/resume-strategies.adoc
@@ -33,7 +33,7 @@ This instance can be bound in the Context registry as follows:
 getCamelContext().getRegistry().bind("testResumeStrategy", new 
MyTestResumeStrategy());
 
 from("some:component")
-    .resumable().resumableStrategy("testResumeStrategy")
+    .resumable("testResumeStrategy")
     .process(this::process);
 ----
 
@@ -42,8 +42,8 @@ Or the instance can be constructed as follows:
 [source,java]
 ----
 from("some:component")
+    .resumable(new MyTestResumeStrategy())
     .process(this::process)
-    .resumable().resumableStrategy(new MyTestResumeStrategy());
 ----
 
 == The Resume API Interfaces
@@ -175,7 +175,7 @@ For instance, the behavior of:
 [source,java]
 ----
 from("file:{{input.dir}}?noop=true&fileName={{input.file}}")
-    .resumable().resumableStrategy("testResumeStrategy")
+    .resumable("testResumeStrategy")
     .convertBodyTo(Reader.class)
     .process(this::process);
 ----
@@ -185,7 +185,7 @@ Is different from the behavior of:
 [source,java]
 ----
 from("file:{{input.dir}}?noop=true&fileName={{input.file}}")
-    .resumable().resumableStrategyRef("testResumeStrategy")
+    .resumable("testResumeStrategy")
     .convertBodyTo(InputStream.class)
     .process(this::process);
 ----
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 611eed2..ca37b7a 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -3815,24 +3815,42 @@ public abstract class ProcessorDefinition<Type extends 
ProcessorDefinition<Type>
 
     /**
      * This defines the route as resumable, which allows the route to work 
with the endpoints and components to manage
-     * the state of consumers and resume upon restart
-     * 
-     * @return The expression to create the Resumable
+     * the state of consumers and resume upon restart.
+     *
+     * @return                     the builder
      */
     public ResumableDefinition resumable() {
         ResumableDefinition answer = new ResumableDefinition();
-
         addOutput(answer);
         return answer;
     }
 
-    public ResumableDefinition resumable(ResumeStrategy resumeStrategy) {
+    /**
+     * This defines the route as resumable, which allows the route to work 
with the endpoints and components to manage
+     * the state of consumers and resume upon restart.
+     *
+     * @param  resumeStrategy      the resume strategy
+     * @return                     the builder
+     */
+    public Type resumable(ResumeStrategy resumeStrategy) {
         ResumableDefinition answer = new ResumableDefinition();
-
         answer.setResumeStrategy(resumeStrategy);
+        addOutput(answer);
+        return asType();
+    }
 
+    /**
+     * This defines the route as resumable, which allows the route to work 
with the endpoints and components to manage
+     * the state of consumers and resume upon restart.
+     *
+     * @param  resumeStrategy      the resume strategy
+     * @return                     the builder
+     */
+    public Type resumable(String resumeStrategy) {
+        ResumableDefinition answer = new ResumableDefinition();
+        answer.setResumeStrategy(resumeStrategy);
         addOutput(answer);
-        return answer;
+        return asType();
     }
 
     // Properties
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/ResumableDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/ResumableDefinition.java
index c0c5f26..63ed0f1 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/ResumableDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/ResumableDefinition.java
@@ -77,6 +77,9 @@ public class ResumableDefinition extends 
NoOutputDefinition<ResumableDefinition>
         return this;
     }
 
+    /**
+     * Sets the resume strategy to use
+     */
     public ResumableDefinition resumeStrategy(ResumeStrategy resumeStrategy) {
         setResumeStrategy(resumeStrategy);
         return this;
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeFromOffsetStrategyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeFromOffsetStrategyTest.java
index 044b79e..f258e5e 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeFromOffsetStrategyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeFromOffsetStrategyTest.java
@@ -37,6 +37,7 @@ import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test;
 
 public class FileConsumerResumeFromOffsetStrategyTest extends 
ContextTestSupport {
+
     private static class TestResumeStrategy implements 
GenericFileResumeStrategy<File> {
         @Override
         public void resume(GenericFileResumable<File> resumable) {
@@ -126,11 +127,11 @@ public class FileConsumerResumeFromOffsetStrategyTest 
extends ContextTestSupport
             @Override
             public void configure() {
 
-                bindToRegistry("resumeStrategy", new TestResumeStrategy());
+                bindToRegistry("myResumeStrategy", new TestResumeStrategy());
                 bindToRegistry("resumeNotToBeCalledStrategy", 
FAIL_RESUME_STRATEGY);
 
                 from(fileUri("resumeOff?noop=true&recursive=true"))
-                        .resumable().resumeStrategy("resumeStrategy")
+                        .resumable("myResumeStrategy")
                         .setHeader(Exchange.OFFSET,
                                 constant(Resumables.of("resume-none.txt", 3)))
                         .log("${body}")
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeStrategyTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeStrategyTest.java
index 77e4e9d..c8308b0 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeStrategyTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileConsumerResumeStrategyTest.java
@@ -102,7 +102,7 @@ public class FileConsumerResumeStrategyTest extends 
ContextTestSupport {
                 bindToRegistry("testResumeStrategy", new TestResumeStrategy());
 
                 from(fileUri("resume?noop=true&recursive=true"))
-                        .resumable().resumeStrategy("testResumeStrategy")
+                        .resumable("testResumeStrategy")
                         .process(e -> setOffset(e))
                         .convertBodyTo(String.class)
                         .to("mock:result");

Reply via email to