From 0da827b9bc86dc748931cf66f85b88070bfa4a8b Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 5 Sep 2025 13:08:21 +0200 Subject: [PATCH 1/2] [NAE-2200] Elastic TaskPair maps incorrect task ID Introduced ElasticTaskPair as a new class to represent task and transition pairs. Updated ElasticCase to include a set of ElasticTaskPair objects and modified relevant methods for proper mapping and initialization. This enhances task handling and improves data structure clarity. --- .../objects/elastic/domain/ElasticCase.java | 4 ++++ .../elastic/domain/ElasticTaskPair.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java index db53acdee60..91a48a61286 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java @@ -57,6 +57,8 @@ public abstract class ElasticCase implements Serializable { private Set taskMongoIds; + private Set tasks; + private Map> permissions; private Map> userRefs; @@ -92,6 +94,7 @@ public ElasticCase(Case useCase) { authorUsername = useCase.getAuthor().getUsername(); taskIds = useCase.getTasks().stream().map(TaskPair::getTransition).collect(Collectors.toSet()); taskMongoIds = useCase.getTasks().stream().map(TaskPair::getTask).collect(Collectors.toSet()); + tasks = useCase.getTasks().stream().map(tp -> new ElasticTaskPair(tp.getTask(), tp.getTransition())).collect(Collectors.toSet()); enabledRoles = new HashSet<>(useCase.getEnabledRoles()); viewRoles = new HashSet<>(useCase.getViewRoles()); viewUserRefs = new HashSet<>(useCase.getViewUserRefs()); @@ -110,6 +113,7 @@ public void update(ElasticCase useCase) { title = useCase.getTitle(); taskIds = useCase.getTaskIds(); taskMongoIds = useCase.getTaskMongoIds(); + tasks = useCase.getTasks(); enabledRoles = useCase.getEnabledRoles(); viewRoles = useCase.getViewRoles(); viewUserRefs = useCase.getViewUserRefs(); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java new file mode 100644 index 00000000000..0c62e369739 --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java @@ -0,0 +1,18 @@ +package com.netgrif.application.engine.objects.elastic.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ElasticTaskPair implements Serializable { + + private String task; + + private String transition; + +} From abcd4014b79a8cd9559814036c8b751417d3993d Mon Sep 17 00:00:00 2001 From: Milan Mladoniczky <6153201+tuplle@users.noreply.github.com> Date: Fri, 5 Sep 2025 21:51:28 +0200 Subject: [PATCH 2/2] [NAE-2200] Elastic TaskPair maps incorrect task ID - Introduced `serialVersionUID` in `ElasticTaskPair` for serialization compatibility. - Added null checks in `ElasticCase` for `taskIds`, `taskMongoIds`, and `tasks` initialization. --- .../engine/objects/elastic/domain/ElasticCase.java | 6 +++--- .../engine/objects/elastic/domain/ElasticTaskPair.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java index 91a48a61286..c16316c9671 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java @@ -92,9 +92,9 @@ public ElasticCase(Case useCase) { authorRealm = useCase.getAuthor().getRealmId(); authorName = useCase.getAuthor().getFullName(); authorUsername = useCase.getAuthor().getUsername(); - taskIds = useCase.getTasks().stream().map(TaskPair::getTransition).collect(Collectors.toSet()); - taskMongoIds = useCase.getTasks().stream().map(TaskPair::getTask).collect(Collectors.toSet()); - tasks = useCase.getTasks().stream().map(tp -> new ElasticTaskPair(tp.getTask(), tp.getTransition())).collect(Collectors.toSet()); + taskIds = useCase.getTasks() == null ? Collections.emptySet() : useCase.getTasks().stream().map(TaskPair::getTransition).collect(Collectors.toSet()); + taskMongoIds = useCase.getTasks() == null ? Collections.emptySet() : useCase.getTasks().stream().map(TaskPair::getTask).collect(Collectors.toSet()); + tasks = useCase.getTasks() == null ? Collections.emptySet() : useCase.getTasks().stream().map(tp -> new ElasticTaskPair(tp.getTask(), tp.getTransition())).collect(Collectors.toSet()); enabledRoles = new HashSet<>(useCase.getEnabledRoles()); viewRoles = new HashSet<>(useCase.getViewRoles()); viewUserRefs = new HashSet<>(useCase.getViewUserRefs()); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java index 0c62e369739..65f5c9844f5 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTaskPair.java @@ -4,6 +4,7 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; import java.io.Serializable; @Data @@ -11,8 +12,17 @@ @AllArgsConstructor public class ElasticTaskPair implements Serializable { + @Serial + private static final long serialVersionUID = 8399390623172906801L; + + /** + * Represents a MongoDB ObjectId in the hex-string form of the task process resource. + */ private String task; + /** + * Represents an import id of the transition of the task. + */ private String transition; }