Skip to content

Commit 75fbd15

Browse files
authored
Merge pull request #710 from fjtirado/Fix_#708
[Fix_708] Fixing recursivity when using then loop
2 parents 953d08b + 2e5829d commit 75fbd15

File tree

15 files changed

+54
-20
lines changed

15 files changed

+54
-20
lines changed

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ public abstract class AbstractTaskExecutor<T extends TaskBase> implements TaskEx
6161
private final Optional<SchemaValidator> contextSchemaValidator;
6262
private final Optional<WorkflowPredicate> ifFilter;
6363

64-
public abstract static class AbstractTaskExecutorBuilder<T extends TaskBase>
64+
public abstract static class AbstractTaskExecutorBuilder<
65+
T extends TaskBase, V extends AbstractTaskExecutor<T>>
6566
implements TaskExecutorBuilder<T> {
6667
private Optional<WorkflowFilter> inputProcessor = Optional.empty();
6768
private Optional<WorkflowFilter> outputProcessor = Optional.empty();
@@ -77,7 +78,7 @@ public abstract static class AbstractTaskExecutorBuilder<T extends TaskBase>
7778
protected final Workflow workflow;
7879
protected final ResourceLoader resourceLoader;
7980

80-
private TaskExecutor<T> instance;
81+
private V instance;
8182

8283
protected AbstractTaskExecutorBuilder(
8384
WorkflowMutablePosition position,
@@ -145,17 +146,20 @@ private TaskExecutorBuilder<?> next(Map<String, TaskExecutorBuilder<?>> connecti
145146
return next;
146147
}
147148

148-
public TaskExecutor<T> build() {
149+
public V build() {
149150
if (instance == null) {
150151
instance = buildInstance();
152+
buildTransition(instance);
151153
}
152154
return instance;
153155
}
154156

155-
protected abstract TaskExecutor<T> buildInstance();
157+
protected abstract V buildInstance();
158+
159+
protected abstract void buildTransition(V instance);
156160
}
157161

158-
protected AbstractTaskExecutor(AbstractTaskExecutorBuilder<T> builder) {
162+
protected AbstractTaskExecutor(AbstractTaskExecutorBuilder<T, ?> builder) {
159163
this.task = builder.task;
160164
this.taskName = builder.taskName;
161165
this.position = builder.position;

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
@@ -46,7 +46,7 @@ protected CallTaskExecutorBuilder(
4646
}
4747

4848
@Override
49-
public TaskExecutor<T> buildInstance() {
49+
public CallTaskExecutor<T> buildInstance() {
5050
return new CallTaskExecutor<>(this);
5151
}
5252
}

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
@@ -46,7 +46,7 @@ protected DoExecutorBuilder(
4646
}
4747

4848
@Override
49-
public TaskExecutor<DoTask> buildInstance() {
49+
public DoExecutor buildInstance() {
5050
return new DoExecutor(this);
5151
}
5252
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ protected EmitExecutorBuilder(
6161
}
6262

6363
@Override
64-
public TaskExecutor<EmitTask> buildInstance() {
64+
public EmitExecutor buildInstance() {
6565
return new EmitExecutor(this);
6666
}
6767
}

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
@@ -68,7 +68,7 @@ protected WorkflowValueResolver<Collection<?>> buildCollectionFilter() {
6868
}
6969

7070
@Override
71-
public TaskExecutor<ForTask> buildInstance() {
71+
public ForExecutor buildInstance() {
7272
return new ForExecutor(this);
7373
}
7474
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ protected ForkExecutorBuilder(
6262
}
6363

6464
@Override
65-
public TaskExecutor<ForkTask> buildInstance() {
65+
public ForkExecutor buildInstance() {
6666
return new ForkExecutor(this);
6767
}
6868
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private EventRegistrationBuilder from(EventFilter filter) {
155155
}
156156

157157
@Override
158-
public TaskExecutor<ListenTask> buildInstance() {
158+
public ListenExecutor buildInstance() {
159159
return registrations.isAnd() ? new AndListenExecutor(this) : new OrListenExecutor(this);
160160
}
161161
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private Error findError(String raiseErrorReference) {
114114
}
115115

116116
@Override
117-
public TaskExecutor<RaiseTask> buildInstance() {
117+
public RaiseExecutor buildInstance() {
118118
return new RaiseExecutor(this);
119119
}
120120
}

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,14 @@
2828

2929
public abstract class RegularTaskExecutor<T extends TaskBase> extends AbstractTaskExecutor<T> {
3030

31-
protected final TransitionInfo transition;
31+
protected TransitionInfo transition;
3232

3333
protected RegularTaskExecutor(RegularTaskExecutorBuilder<T> builder) {
3434
super(builder);
35-
this.transition = TransitionInfo.build(builder.transition);
3635
}
3736

3837
public abstract static class RegularTaskExecutorBuilder<T extends TaskBase>
39-
extends AbstractTaskExecutorBuilder<T> {
38+
extends AbstractTaskExecutorBuilder<T, RegularTaskExecutor<T>> {
4039

4140
private TransitionInfoBuilder transition;
4241

@@ -52,6 +51,11 @@ protected RegularTaskExecutorBuilder(
5251
public void connect(Map<String, TaskExecutorBuilder<?>> connections) {
5352
this.transition = next(task.getThen(), connections);
5453
}
54+
55+
@Override
56+
protected void buildTransition(RegularTaskExecutor<T> instance) {
57+
instance.transition = TransitionInfo.build(transition);
58+
}
5559
}
5660

5761
@Override

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
@@ -54,7 +54,7 @@ protected SetExecutorBuilder(
5454
}
5555

5656
@Override
57-
public TaskExecutor<SetTask> buildInstance() {
57+
public SetExecutor buildInstance() {
5858
return new SetExecutor(this);
5959
}
6060
}

0 commit comments

Comments
 (0)