Skip to content

Commit 3542a12

Browse files
authored
[Fix #1601] Implement then on catch (#1609)
* [Fix #1601] Implement then on catch Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com> * [Fix #1601] Coverting retry and then Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com> --------- Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>
1 parent f264426 commit 3542a12

15 files changed

Lines changed: 171 additions & 27 deletions

File tree

impl/core/src/main/java/io/serverlessworkflow/impl/executors/CallTaskExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class CallTaskExecutor<T extends TaskBase> extends RegularTaskExecutor<T>
2929
private final CallableTask callable;
3030

3131
public static class CallTaskExecutorBuilder<T extends TaskBase>
32-
extends RegularTaskExecutorBuilder<T> {
32+
extends RegularTaskExecutorBuilder<T, CallTaskExecutor<T>> {
3333
private CallableTaskFactory callableFactory;
3434
private List<CallableTaskProxyBuilder> callableProxyBuilders;
3535
private CallableTask callable;

impl/core/src/main/java/io/serverlessworkflow/impl/executors/DoExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class DoExecutor extends RegularTaskExecutor<DoTask> {
2828

2929
private final TaskExecutor<?> taskExecutor;
3030

31-
public static class DoExecutorBuilder extends RegularTaskExecutorBuilder<DoTask> {
31+
public static class DoExecutorBuilder extends RegularTaskExecutorBuilder<DoTask, DoExecutor> {
3232
private TaskExecutor<?> taskExecutor;
3333

3434
protected DoExecutorBuilder(

impl/core/src/main/java/io/serverlessworkflow/impl/executors/EmitExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public class EmitExecutor extends RegularTaskExecutor<EmitTask> {
5353
.toList();
5454
private final EventPropertiesBuilder props;
5555

56-
public static class EmitExecutorBuilder extends RegularTaskExecutorBuilder<EmitTask> {
56+
public static class EmitExecutorBuilder
57+
extends RegularTaskExecutorBuilder<EmitTask, EmitExecutor> {
5758

5859
private EventPropertiesBuilder eventBuilder;
5960

impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class ForExecutor extends RegularTaskExecutor<ForTask> {
3737
private final Optional<WorkflowPredicate> whileExpr;
3838
private final TaskExecutor<?> taskExecutor;
3939

40-
public static class ForExecutorBuilder extends RegularTaskExecutorBuilder<ForTask> {
40+
public static class ForExecutorBuilder extends RegularTaskExecutorBuilder<ForTask, ForExecutor> {
4141
private TaskExecutor<?> taskExecutor;
4242

4343
protected ForExecutorBuilder(

impl/core/src/main/java/io/serverlessworkflow/impl/executors/ForkExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public class ForkExecutor extends RegularTaskExecutor<ForkTask> {
3939

4040
private final boolean compete;
4141

42-
public static class ForkExecutorBuilder extends RegularTaskExecutorBuilder<ForkTask> {
42+
public static class ForkExecutorBuilder
43+
extends RegularTaskExecutorBuilder<ForkTask, ForkExecutor> {
4344

4445
private final Map<String, TaskExecutor<?>> taskExecutors;
4546
private final boolean compete;

impl/core/src/main/java/io/serverlessworkflow/impl/executors/ListenExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ public abstract class ListenExecutor extends RegularTaskExecutor<ListenTask> {
4747
protected final Function<CloudEvent, WorkflowModel> converter;
4848
protected final EventConsumer eventConsumer;
4949

50-
public static class ListenExecutorBuilder extends RegularTaskExecutorBuilder<ListenTask> {
50+
public static class ListenExecutorBuilder
51+
extends RegularTaskExecutorBuilder<ListenTask, ListenExecutor> {
5152

5253
private EventRegistrationBuilderInfo registrationInfo;
5354
private TaskExecutor<?> loop;

impl/core/src/main/java/io/serverlessworkflow/impl/executors/RaiseExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public class RaiseExecutor extends RegularTaskExecutor<RaiseTask> {
4242

4343
private final BiFunction<WorkflowContext, TaskContext, WorkflowError> errorBuilder;
4444

45-
public static class RaiseExecutorBuilder extends RegularTaskExecutorBuilder<RaiseTask> {
45+
public static class RaiseExecutorBuilder
46+
extends RegularTaskExecutorBuilder<RaiseTask, RaiseExecutor> {
4647

4748
private final BiFunction<WorkflowContext, TaskContext, WorkflowError> errorBuilder;
4849
private final WorkflowValueResolver<String> typeFilter;

impl/core/src/main/java/io/serverlessworkflow/impl/executors/RegularTaskExecutor.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ public abstract class RegularTaskExecutor<T extends TaskBase> extends AbstractTa
2828

2929
protected TransitionInfo transition;
3030

31-
protected RegularTaskExecutor(RegularTaskExecutorBuilder<T> builder) {
31+
protected <V extends RegularTaskExecutor<T>> RegularTaskExecutor(
32+
RegularTaskExecutorBuilder<T, V> builder) {
3233
super(builder);
3334
}
3435

35-
public abstract static class RegularTaskExecutorBuilder<T extends TaskBase>
36-
extends AbstractTaskExecutorBuilder<T, RegularTaskExecutor<T>> {
36+
public abstract static class RegularTaskExecutorBuilder<
37+
T extends TaskBase, V extends RegularTaskExecutor<T>>
38+
extends AbstractTaskExecutorBuilder<T, V> {
3739

3840
private TransitionInfoBuilder transition;
3941

@@ -42,12 +44,13 @@ protected RegularTaskExecutorBuilder(
4244
super(position, task, definition);
4345
}
4446

47+
@Override
4548
public void connect(Map<String, TaskExecutorBuilder<?>> connections) {
4649
this.transition = next(task.getThen(), connections);
4750
}
4851

4952
@Override
50-
protected void buildTransition(RegularTaskExecutor<T> instance) {
53+
protected void buildTransition(V instance) {
5154
instance.transition = TransitionInfo.build(transition);
5255
}
5356
}
@@ -59,10 +62,8 @@ protected TransitionInfo getSkipTransition() {
5962

6063
protected CompletableFuture<TaskContext> execute(
6164
WorkflowContext workflow, TaskContext taskContext) {
62-
CompletableFuture<TaskContext> future =
63-
internalExecute(workflow, taskContext)
64-
.thenApply(node -> taskContext.rawOutput(node).transition(transition));
65-
return future;
65+
return internalExecute(workflow, taskContext)
66+
.thenApply(node -> taskContext.rawOutput(node).transition(transition));
6667
}
6768

6869
protected abstract CompletableFuture<WorkflowModel> internalExecute(

impl/core/src/main/java/io/serverlessworkflow/impl/executors/RunTaskExecutor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public class RunTaskExecutor extends RegularTaskExecutor<RunTask> {
3333
private static final ServiceLoader<RunnableTaskBuilder> runnables =
3434
ServiceLoader.load(RunnableTaskBuilder.class);
3535

36-
public static class RunTaskExecutorBuilder extends RegularTaskExecutorBuilder<RunTask> {
36+
public static class RunTaskExecutorBuilder
37+
extends RegularTaskExecutorBuilder<RunTask, RunTaskExecutor> {
3738
private CallableTask runnable;
3839

3940
protected RunTaskExecutorBuilder(

impl/core/src/main/java/io/serverlessworkflow/impl/executors/SetExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class SetExecutor extends RegularTaskExecutor<SetTask> {
3131

3232
private final WorkflowFilter setFilter;
3333

34-
public static class SetExecutorBuilder extends RegularTaskExecutorBuilder<SetTask> {
34+
public static class SetExecutorBuilder extends RegularTaskExecutorBuilder<SetTask, SetExecutor> {
3535

3636
private final WorkflowFilter setFilter;
3737

0 commit comments

Comments
 (0)