Skip to content

Commit c977a8a

Browse files
committed
[Fix #1738] Adding safeguard to avoid overriding keys set by user
Signed-off-by: Francisco Javier Tirado Sarti <ftirados@ibm.com>
1 parent de5f360 commit c977a8a

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

‎impl/persistence/api/src/main/java/io/serverlessworkflow/impl/persistence/WorkflowPersistenceInstance.java‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,16 @@
2424
import io.serverlessworkflow.impl.WorkflowMutableInstance;
2525
import io.serverlessworkflow.impl.WorkflowStatus;
2626
import io.serverlessworkflow.impl.executors.TransitionInfo;
27+
import java.util.HashSet;
2728
import java.util.Optional;
29+
import java.util.Set;
2830
import java.util.concurrent.CompletableFuture;
31+
import java.util.function.Supplier;
2932

3033
public class WorkflowPersistenceInstance extends WorkflowMutableInstance {
3134

3235
private final PersistenceWorkflowInfo info;
36+
private Set<String> userMetaKeys = new HashSet<>();
3337

3438
public static WorkflowInstance of(WorkflowDefinition definition, PersistenceWorkflowInfo info) {
3539
return definition
@@ -100,6 +104,19 @@ public void restoreContext(WorkflowContext workflow, TaskContext context) {
100104
searchContext = tryContext.parent();
101105
}
102106
}
103-
taskInfo.additionalObjects().forEach(additionalObjects::put);
107+
taskInfo
108+
.additionalObjects()
109+
.forEach(
110+
(k, v) -> {
111+
if (!userMetaKeys.contains(k)) {
112+
additionalObjects.put(k, v);
113+
}
114+
});
115+
}
116+
117+
@Override
118+
public <T> T addMetadataIfAbsent(String key, Supplier<T> supplier) {
119+
userMetaKeys.add(key);
120+
return super.addMetadataIfAbsent(key, supplier);
104121
}
105122
}

0 commit comments

Comments
 (0)