This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch tasks in repository https://gitbox.apache.org/repos/asf/camel.git
commit 03b9b061f9926c966280ba08f3c03fecfcea71ef Author: Claus Ibsen <[email protected]> AuthorDate: Fri Jun 27 11:30:31 2025 +0200 CAMEL-22189: Polish task to include iteration. Also fix copy/paste mistake. --- .../main/java/org/apache/camel/support/task/BackgroundTask.java | 5 +++++ .../main/java/org/apache/camel/support/task/ForegroundTask.java | 5 +++++ .../src/main/java/org/apache/camel/support/task/Task.java | 8 ++++++++ .../main/java/org/apache/camel/support/task/budget/Budget.java | 7 +++++++ .../org/apache/camel/support/task/budget/IterationBudget.java | 6 ------ .../camel/support/task/budget/IterationTimeBoundedBudget.java | 2 +- .../org/apache/camel/support/task/budget/TimeBoundedBudget.java | 7 +++++++ 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/BackgroundTask.java b/core/camel-support/src/main/java/org/apache/camel/support/task/BackgroundTask.java index 6b8bb6393b4..3df28497529 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/BackgroundTask.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/BackgroundTask.java @@ -140,4 +140,9 @@ public class BackgroundTask implements BlockingTask { public Duration elapsed() { return elapsed; } + + @Override + public int iteration() { + return budget.iteration(); + } } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/ForegroundTask.java b/core/camel-support/src/main/java/org/apache/camel/support/task/ForegroundTask.java index 71194ea2589..3fa8f8abecc 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/ForegroundTask.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/ForegroundTask.java @@ -151,4 +151,9 @@ public class ForegroundTask implements BlockingTask { public Duration elapsed() { return elapsed; } + + @Override + public int iteration() { + return budget.iteration(); + } } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/Task.java b/core/camel-support/src/main/java/org/apache/camel/support/task/Task.java index c407bc4accc..e980ac321f9 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/Task.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/Task.java @@ -30,4 +30,12 @@ public interface Task { * @return The duration to execute the task */ Duration elapsed(); + + /** + * The current number of iterations (such as when the task is being repeated) + * + * @return the current number of iterations + */ + int iteration(); + } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/Budget.java b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/Budget.java index fb49a5fac6c..1b38048617b 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/Budget.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/Budget.java @@ -51,6 +51,13 @@ public interface Budget { */ boolean next(); + /** + * The current number of iterations + * + * @return the current number of iterations + */ + int iteration(); + /** * The amount of time that has elapsed since the budget was created. This can be used to account for the amount of * time it took to run a task. The precision should be withing a few microseconds/milliseconds due to the start time diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationBudget.java b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationBudget.java index 0d68a6d4ec9..80a69fe5c58 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationBudget.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationBudget.java @@ -28,10 +28,4 @@ public interface IterationBudget extends Budget { */ int maxIterations(); - /** - * The current number of iterations - * - * @return the current number of iterations - */ - int iteration(); } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationTimeBoundedBudget.java b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationTimeBoundedBudget.java index b38f411a9b4..31f7fb434ff 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationTimeBoundedBudget.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/IterationTimeBoundedBudget.java @@ -53,7 +53,7 @@ public class IterationTimeBoundedBudget implements IterationBudget, TimeBudget { @Override public int iteration() { - return iterationBudget.maxIterations(); + return iterationBudget.iteration(); } @Override diff --git a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/TimeBoundedBudget.java b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/TimeBoundedBudget.java index 2c7fba7262c..6606d041a54 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/task/budget/TimeBoundedBudget.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/task/budget/TimeBoundedBudget.java @@ -30,6 +30,7 @@ public class TimeBoundedBudget implements TimeBudget { private final long interval; private final long maxDuration; private final Instant startTime; + private int iterations; TimeBoundedBudget(long initialDelay, long interval, long maxDuration) { this.initialDelay = initialDelay; @@ -70,9 +71,15 @@ public class TimeBoundedBudget implements TimeBudget { @Override public boolean next() { + iterations++; return true; } + @Override + public int iteration() { + return iterations; + } + @Override public Duration elapsed() { return Duration.between(startTime, Instant.now());
