Skip to content

Commit 5c91148

Browse files
ricardozaninifjtirado
authored andcommitted
Small refactor
Signed-off-by: Ricardo Zanini <[email protected]>
1 parent 1243358 commit 5c91148

File tree

3 files changed

+46
-46
lines changed

3 files changed

+46
-46
lines changed

experimental/agentic/src/main/java/io/serverlessworkflow/impl/expressions/agentic/AgenticModelCollection.java

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package io.serverlessworkflow.impl.expressions.agentic;
1717

18-
import com.fasterxml.jackson.core.JsonProcessingException;
1918
import com.fasterxml.jackson.core.type.TypeReference;
2019
import com.fasterxml.jackson.databind.ObjectMapper;
2120
import dev.langchain4j.agentic.scope.AgenticScope;
@@ -27,7 +26,6 @@
2726
import java.io.IOException;
2827
import java.util.Collections;
2928
import java.util.Map;
30-
import java.util.Objects;
3129
import java.util.Optional;
3230

3331
public class AgenticModelCollection extends JavaModelCollection {
@@ -45,32 +43,22 @@ public boolean add(WorkflowModel e) {
4543
Optional<Map<String, Object>> asMap = e.asMap();
4644
if (asMap.isPresent()) {
4745
this.agenticScope.writeStates(asMap.get());
48-
} else {
49-
// Update the agenticScope with the event body, so agents can use the event data as input
50-
Object javaObj = e.asJavaObject();
51-
if (javaObj instanceof CloudEvent) {
52-
try {
53-
this.agenticScope.writeStates(
54-
mapper.readValue(
55-
Objects.requireNonNull(((CloudEvent) javaObj).getData()).toString(),
56-
new TypeReference<>() {}));
57-
} catch (JsonProcessingException ex) {
58-
throw new IllegalArgumentException(
59-
"Unable to parse CloudEvent, data must be a valid JSON", ex);
60-
}
61-
} else if (javaObj instanceof CloudEventData) {
62-
try {
63-
this.agenticScope.writeStates(
64-
mapper.readValue(
65-
Objects.requireNonNull(((CloudEventData) javaObj)).toBytes(),
66-
new TypeReference<>() {}));
67-
} catch (IOException ex) {
68-
throw new IllegalArgumentException(
69-
"Unable to parse CloudEventData, data must be a valid JSON", ex);
70-
}
46+
return super.add(e);
47+
}
48+
49+
// Update the agenticScope with the event body, so agents can use the event data as input
50+
Object javaObj = e.asJavaObject();
51+
try {
52+
if (javaObj instanceof CloudEvent ce && ce.getData() != null) {
53+
agenticScope.writeStates(
54+
mapper.readValue(ce.getData().toBytes(), new TypeReference<>() {}));
55+
} else if (javaObj instanceof CloudEventData ced) {
56+
agenticScope.writeStates(mapper.readValue(ced.toBytes(), new TypeReference<>() {}));
7157
} else {
72-
this.agenticScope.writeState(AgenticModelFactory.DEFAULT_AGENTIC_SCOPE_STATE_KEY, javaObj);
58+
agenticScope.writeState(AgenticModelFactory.DEFAULT_AGENTIC_SCOPE_STATE_KEY, javaObj);
7359
}
60+
} catch (IOException ex) {
61+
throw new IllegalArgumentException("Unable to parse CloudEvent data as JSON", ex);
7462
}
7563

7664
// add to the collection

experimental/agentic/src/main/java/io/serverlessworkflow/impl/expressions/agentic/AgenticModelFactory.java

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ class AgenticModelFactory implements WorkflowModelFactory {
3131
private final AgenticScopeRegistryAssessor scopeRegistryAssessor =
3232
new AgenticScopeRegistryAssessor();
3333

34+
private void updateAgenticScope(Object value) {
35+
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
36+
}
37+
38+
private void updateAgenticScope(Map<String, Object> state) {
39+
this.scopeRegistryAssessor.getAgenticScope().writeStates(state);
40+
}
41+
42+
private AgenticModel asAgenticModel(Object value) {
43+
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
44+
}
45+
3446
@Override
3547
@SuppressWarnings("unchecked")
3648
public WorkflowModel fromAny(WorkflowModel prev, Object obj) {
@@ -41,12 +53,12 @@ public WorkflowModel fromAny(WorkflowModel prev, Object obj) {
4153
}
4254

4355
if (obj instanceof Map) {
44-
this.scopeRegistryAssessor.getAgenticScope().writeStates((Map<String, Object>) obj);
56+
this.updateAgenticScope((Map<String, Object>) obj);
4557
} else {
46-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, obj);
58+
this.updateAgenticScope(obj);
4759
}
4860

49-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), obj);
61+
return asAgenticModel(obj);
5062
}
5163

5264
@Override
@@ -64,55 +76,55 @@ public WorkflowModelCollection createCollection() {
6476

6577
@Override
6678
public WorkflowModel from(boolean value) {
67-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
68-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
79+
this.updateAgenticScope(value);
80+
return asAgenticModel(value);
6981
}
7082

7183
@Override
7284
public WorkflowModel from(Number value) {
73-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
74-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
85+
this.updateAgenticScope(value);
86+
return asAgenticModel(value);
7587
}
7688

7789
@Override
7890
public WorkflowModel from(String value) {
79-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
80-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
91+
this.updateAgenticScope(value);
92+
return asAgenticModel(value);
8193
}
8294

8395
@Override
8496
public WorkflowModel from(CloudEvent ce) {
85-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), ce);
97+
return asAgenticModel(ce);
8698
}
8799

88100
@Override
89101
public WorkflowModel from(CloudEventData ce) {
90-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), ce);
102+
return asAgenticModel(ce);
91103
}
92104

93105
@Override
94106
public WorkflowModel from(OffsetDateTime value) {
95-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
96-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
107+
this.updateAgenticScope(value);
108+
return asAgenticModel(value);
97109
}
98110

99111
@Override
100112
public WorkflowModel from(Map<String, Object> map) {
101-
this.scopeRegistryAssessor.getAgenticScope().writeStates(map);
102-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), map);
113+
this.updateAgenticScope(map);
114+
return asAgenticModel(map);
103115
}
104116

105117
@Override
106118
public WorkflowModel fromNull() {
107-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), null);
119+
return asAgenticModel(null);
108120
}
109121

110122
@Override
111123
public WorkflowModel fromOther(Object value) {
112124
if (value instanceof AgenticScope scope) {
113125
return new AgenticModel(scope, scope.state());
114126
}
115-
this.scopeRegistryAssessor.getAgenticScope().writeState(DEFAULT_AGENTIC_SCOPE_STATE_KEY, value);
116-
return new AgenticModel(this.scopeRegistryAssessor.getAgenticScope(), value);
127+
this.updateAgenticScope(value);
128+
return asAgenticModel(value);
117129
}
118130
}

experimental/agentic/src/main/java/io/serverlessworkflow/impl/expressions/agentic/langchain4j/AgenticScopeRegistryAssessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ public AgenticScope getAgenticScope() {
5959
}
6060

6161
public void setAgenticScope(AgenticScope agenticScope) {
62-
this.agenticScope = agenticScope;
62+
this.agenticScope = Objects.requireNonNull(agenticScope, "AgenticScope cannot be null");
6363
}
6464

6565
@Override
6666
public AgenticScopeOwner withAgenticScope(DefaultAgenticScope agenticScope) {
67-
this.agenticScope = agenticScope;
67+
this.setAgenticScope(agenticScope);
6868
return this;
6969
}
7070

0 commit comments

Comments
 (0)