Skip to content

Commit

Permalink
[Fix apache/incubator-kie-issues#1457] Converter deserialization
Browse files Browse the repository at this point in the history
  • Loading branch information
fjtirado committed Oct 4, 2024
1 parent 8bc0786 commit c2ea8f3
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ProcessInstanceDataEvent<?> deserialize(JsonParser jp, DeserializationCon
String type = node.get("type").asText();

switch (type) {
case "MultipleProcessInstanceDataEvent":
case MultipleProcessInstanceDataEvent.TYPE:
return jp.getCodec().treeToValue(node, MultipleProcessInstanceDataEvent.class);
case "ProcessInstanceErrorDataEvent":
return (ProcessInstanceDataEvent<?>) jp.getCodec().treeToValue(node, ProcessInstanceErrorDataEvent.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public UserTaskInstanceDataEvent<?> deserialize(JsonParser jp, DeserializationCo
String type = node.get("type").asText();

switch (type) {
case "MultipleUserTaskInstanceDataEvent":
case MultipleUserTaskInstanceDataEvent.TYPE:
return jp.getCodec().treeToValue(node, MultipleUserTaskInstanceDataEvent.class);
case "UserTaskInstanceAssignmentDataEvent":
return (UserTaskInstanceDataEvent<?>) jp.getCodec().treeToValue(node, UserTaskInstanceAssignmentDataEvent.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public ProcessInstanceDataEvent<?> deserialize(JsonParser jp, DeserializationCon
String type = node.get("type").asText();

switch (type) {
case "MultipleProcessInstanceDataEvent":
case MultipleProcessInstanceDataEvent.TYPE:
return jp.getCodec().treeToValue(node, MultipleProcessInstanceDataEvent.class);
case "ProcessInstanceErrorDataEvent":
return (ProcessInstanceDataEvent<?>) jp.getCodec().treeToValue(node, ProcessInstanceErrorDataEvent.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public UserTaskInstanceDataEvent<?> deserialize(JsonParser jp, DeserializationCo
String type = node.get("type").asText();

switch (type) {
case "MultipleUserTaskInstanceDataEvent":
case MultipleUserTaskInstanceDataEvent.TYPE:
return jp.getCodec().treeToValue(node, MultipleUserTaskInstanceDataEvent.class);
case "UserTaskInstanceAssignmentDataEvent":
return (UserTaskInstanceDataEvent<?>) jp.getCodec().treeToValue(node, UserTaskInstanceAssignmentDataEvent.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,20 @@ void testComplexMergeWithDot() {
assertThat(JsonUtils.mergeVariable("key.user1", "manolo", ObjectMapperFactory.get().createObjectNode().set("key", ObjectMapperFactory.get().createObjectNode().put("user2", "pepe"))))
.isEqualTo(expected);
}

@Test
void testMergeWorkflowdata() {
ObjectNode result = ObjectMapperFactory.get().createObjectNode().put("link", "link1").put("name", "name1");
ObjectNode base = ObjectMapperFactory.get().createObjectNode().set("workflowdata", ObjectMapperFactory.get().createObjectNode().put("user1", "manolo").put("user2", "pepe"));
ObjectNode expected = base.deepCopy();
((ObjectNode) expected.get("workflowdata")).set("result", result);
assertThat(JsonUtils.mergeVariable("workflowdata.result", result, base)).isEqualTo(expected);
}

@Test
void testSelfMerge() {
ObjectNode source = ObjectMapperFactory.get().createObjectNode().put("user1", "Javierito").put("user2", "Vicentito");
ObjectNode target = ObjectMapperFactory.get().createObjectNode().set("workflowdata", ObjectMapperFactory.get().createObjectNode().put("user1", "manolo").put("user2", "pepe"));
assertThat(JsonUtils.mergeVariable("workflowdata", source, target)).isEqualTo(ObjectMapperFactory.get().createObjectNode().set("workflowdata", source));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.eclipse.microprofile.reactive.messaging.Message;
import org.kie.kogito.event.AbstractDataEvent;
import org.kie.kogito.event.DataEvent;
import org.kie.kogito.event.process.MultipleProcessInstanceDataEvent;
import org.kie.kogito.event.process.ProcessDefinitionDataEvent;
import org.kie.kogito.event.process.ProcessDefinitionEventBody;
import org.kie.kogito.event.process.ProcessInstanceDataEvent;
Expand All @@ -38,6 +39,7 @@
import org.kie.kogito.event.process.ProcessInstanceStateEventBody;
import org.kie.kogito.event.process.ProcessInstanceVariableDataEvent;
import org.kie.kogito.event.process.ProcessInstanceVariableEventBody;
import org.kie.kogito.event.usertask.MultipleUserTaskInstanceDataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentDataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceAssignmentEventBody;
import org.kie.kogito.event.usertask.UserTaskInstanceAttachmentDataEvent;
Expand Down Expand Up @@ -139,6 +141,8 @@ public void setObjectMapper(ObjectMapper objectMapper) {

private DataEvent<?> buildProcessInstanceDataEventVariant(CloudEvent cloudEvent) throws IOException {
switch (cloudEvent.getType()) {
case MultipleProcessInstanceDataEvent.TYPE:
return objectMapper.convertValue(cloudEvent, MultipleProcessInstanceDataEvent.class);
case "ProcessInstanceErrorDataEvent":
return buildDataEvent(cloudEvent, objectMapper, ProcessInstanceErrorDataEvent::new, ProcessInstanceErrorEventBody.class);
case "ProcessInstanceNodeDataEvent":
Expand All @@ -156,6 +160,8 @@ private DataEvent<?> buildProcessInstanceDataEventVariant(CloudEvent cloudEvent)

private DataEvent<?> buildUserTaskInstanceDataEvent(CloudEvent cloudEvent) throws IOException {
switch (cloudEvent.getType()) {
case MultipleUserTaskInstanceDataEvent.TYPE:
return objectMapper.convertValue(cloudEvent, MultipleUserTaskInstanceDataEvent.class);
case "UserTaskInstanceAssignmentDataEvent":
return buildDataEvent(cloudEvent, objectMapper, UserTaskInstanceAssignmentDataEvent::new, UserTaskInstanceAssignmentEventBody.class);
case "UserTaskInstanceAttachmentDataEvent":
Expand Down

0 comments on commit c2ea8f3

Please sign in to comment.