Skip to content

Commit 70e4f52

Browse files
committed
Ensure not workflowmodel is returned within a Map or Collection
Signed-off-by: fjtirado <ftirados@redhat.com>
1 parent f08c840 commit 70e4f52

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

experimental/lambda/src/main/java/io/serverlessworkflow/impl/expressions/JavaModel.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121
import java.util.Collection;
2222
import java.util.Collections;
2323
import java.util.Map;
24+
import java.util.Map.Entry;
2425
import java.util.Optional;
2526
import java.util.function.BiConsumer;
27+
import java.util.stream.Collectors;
2628

27-
public class JavaModel implements WorkflowModel {
29+
class JavaModel implements WorkflowModel {
2830

2931
private Object object;
3032

@@ -33,7 +35,7 @@ public class JavaModel implements WorkflowModel {
3335
static final JavaModel NullModel = new JavaModel(null);
3436

3537
JavaModel(Object object) {
36-
this.object = object;
38+
this.object = asJavaObject(object);
3739
}
3840

3941
@Override
@@ -89,6 +91,20 @@ public Object asJavaObject() {
8991
return object;
9092
}
9193

94+
static Object asJavaObject(Object object) {
95+
if (object instanceof WorkflowModel model) {
96+
return model.asJavaObject();
97+
} else if (object instanceof Map map) {
98+
return ((Map<String, Object>) map)
99+
.entrySet().stream()
100+
.collect(Collectors.toMap(Entry::getKey, e -> asJavaObject(e.getValue())));
101+
} else if (object instanceof Collection col) {
102+
return col.stream().map(JavaModel::asJavaObject).collect(Collectors.toList());
103+
} else {
104+
return object;
105+
}
106+
}
107+
92108
@Override
93109
public Object asIs() {
94110
return object;

experimental/lambda/src/main/java/io/serverlessworkflow/impl/expressions/JavaModelCollection.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import java.util.Iterator;
2323
import java.util.Optional;
2424

25-
public class JavaModelCollection implements Collection<WorkflowModel>, WorkflowModelCollection {
25+
class JavaModelCollection implements Collection<WorkflowModel>, WorkflowModelCollection {
2626

2727
private final Collection object;
2828

@@ -31,7 +31,7 @@ public class JavaModelCollection implements Collection<WorkflowModel>, WorkflowM
3131
}
3232

3333
JavaModelCollection(Collection<?> object) {
34-
this.object = object;
34+
this.object = (Collection) JavaModel.asJavaObject(object);
3535
}
3636

3737
@Override
@@ -86,12 +86,12 @@ public <T> T[] toArray(T[] a) {
8686

8787
@Override
8888
public boolean add(WorkflowModel e) {
89-
return object.add(e.asIs());
89+
return object.add(e.asJavaObject());
9090
}
9191

9292
@Override
9393
public boolean remove(Object o) {
94-
return object.remove(((WorkflowModel) o).asIs());
94+
return object.remove(((WorkflowModel) o).asJavaObject());
9595
}
9696

9797
@Override

experimental/lambda/src/main/java/io/serverlessworkflow/impl/expressions/JavaModelFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.time.OffsetDateTime;
2424
import java.util.Map;
2525

26-
public class JavaModelFactory implements WorkflowModelFactory {
26+
class JavaModelFactory implements WorkflowModelFactory {
2727

2828
@Override
2929
public WorkflowModel combine(Map<String, WorkflowModel> workflowVariables) {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy