From d73beb3a3c99c0792dc14a20137cc237f4f3338c Mon Sep 17 00:00:00 2001 From: arolfes Date: Wed, 12 Apr 2023 10:43:20 +0200 Subject: [PATCH] Closes #2211 classificationTypes are List instead of Set, because of sorting --- .../acceptance/TaskanaConfigurationTest.java | 22 +++++++++---------- .../pro/taskana/TaskanaConfiguration.java | 12 +++++----- .../common/rest/TaskanaEngineController.java | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/lib/taskana-core-test/src/test/java/acceptance/TaskanaConfigurationTest.java b/lib/taskana-core-test/src/test/java/acceptance/TaskanaConfigurationTest.java index 487371723..a99016c82 100644 --- a/lib/taskana-core-test/src/test/java/acceptance/TaskanaConfigurationTest.java +++ b/lib/taskana-core-test/src/test/java/acceptance/TaskanaConfigurationTest.java @@ -100,7 +100,7 @@ class TaskanaConfigurationTest { Arrays.stream(TaskanaRole.values()) .collect(Collectors.toMap(Function.identity(), r -> Set.of()))); // classification configuration - assertThat(configuration.getClassificationTypes()).isEqualTo(Collections.emptySet()); + assertThat(configuration.getClassificationTypes()).isEqualTo(Collections.emptyList()); assertThat(configuration.getClassificationCategoriesByType()) .isEqualTo(Collections.emptyMap()); // working time configuration @@ -171,7 +171,7 @@ class TaskanaConfigurationTest { Map.entry(TaskanaRole.TASK_ADMIN, Set.of("taskadmin-1", "taskadmin-2")), Map.entry(TaskanaRole.TASK_ROUTER, Set.of("taskrouter-1", "taskrouter-2")))); // classification configuration - assertThat(configuration.getClassificationTypes()).isEqualTo(Set.of("TASK", "DOCUMENT")); + assertThat(configuration.getClassificationTypes()).isEqualTo(List.of("TASK", "DOCUMENT")); assertThat(configuration.getClassificationCategoriesByType()) .isEqualTo( Map.ofEntries( @@ -247,7 +247,7 @@ class TaskanaConfigurationTest { Map.entry(TaskanaRole.TASK_ADMIN, Set.of("task_admin")), Map.entry(TaskanaRole.TASK_ROUTER, Set.of("task_router"))); // classification configuration - Set expectedClassificationTypes = Set.of("TYPE_A", "TYPE_B"); + List expectedClassificationTypes = List.of("TYPE_A", "TYPE_B"); Map> expectedClassificationCategories = Map.of("TYPE_A", Set.of("CATEGORY_A"), "TYPE_B", Set.of("CATEGORY_B")); // working time configuration @@ -435,7 +435,7 @@ class TaskanaConfigurationTest { // authentication configuration .roleMap(Map.of(TaskanaRole.ADMIN, Set.of("admin"))) // classification configuration - .classificationTypes(Set.of("typeA", "typeB")) + .classificationTypes(List.of("typeA", "typeB")) .classificationCategoriesByType( Map.of("typeA", Set.of("categoryA"), "typeB", Set.of("categoryB"))) // working time configuration @@ -624,7 +624,7 @@ class TaskanaConfigurationTest { new TaskanaConfiguration.Builder( TestContainerExtension.createDataSourceForH2(), false, "TASKANA") // necessary to bypass validation since Classification Categories will be an empty Map - .classificationTypes(Set.of("")); + .classificationTypes(List.of("")); initializeWithMutableCollectionsAsMapValues(builder); Stream fields = ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream() @@ -672,7 +672,7 @@ class TaskanaConfigurationTest { new TaskanaConfiguration.Builder( TestContainerExtension.createDataSourceForH2(), false, "TASKANA") // necessary to bypass validation since Classification Categories will be an empty Map - .classificationTypes(Set.of()); + .classificationTypes(List.of()); initializeWithMutableMaps(builder); Stream fields = ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream() @@ -919,7 +919,7 @@ class TaskanaConfigurationTest { TaskanaConfiguration.Builder builder = new TaskanaConfiguration.Builder( TestContainerExtension.createDataSourceForH2(), false, "TASKANA") - .classificationTypes(Set.of("valid")) + .classificationTypes(List.of("valid")) .classificationCategoriesByType(Map.of("does_not_exist", Set.of("a", "b"))); ThrowingCallable call = builder::build; @@ -938,7 +938,7 @@ class TaskanaConfigurationTest { TaskanaConfiguration.Builder builder = new TaskanaConfiguration.Builder( TestContainerExtension.createDataSourceForH2(), false, "TASKANA") - .classificationTypes(Set.of("type1", "type2")) + .classificationTypes(List.of("type1", "type2")) .classificationCategoriesByType(Map.of("type1", Set.of("a", "b"))); ThrowingCallable call = builder::build; @@ -948,7 +948,7 @@ class TaskanaConfigurationTest { .hasMessageContaining( "Some Classification Categories for parameter classificationTypes " + "(taskana.classification.types) are missing. " - + "configured: [TYPE2, TYPE1] detected: [TYPE1]"); + + "configured: [TYPE1, TYPE2] detected: [TYPE1]"); } @ParameterizedTest @@ -988,7 +988,7 @@ class TaskanaConfigurationTest { void should_MakeClassificationTypesUpperCase() { TaskanaConfiguration configuration = new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA") - .classificationTypes(Set.of("a", "b")) + .classificationTypes(List.of("a", "b")) .classificationCategoriesByType( Map.ofEntries(Map.entry("a", Set.of()), Map.entry("b", Set.of()))) .build(); @@ -1000,7 +1000,7 @@ class TaskanaConfigurationTest { void should_MakeClassificationCategoriesUpperCase() { TaskanaConfiguration configuration = new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA") - .classificationTypes(Set.of("type_a", "type_b")) + .classificationTypes(List.of("type_a", "type_b")) .classificationCategoriesByType( Map.ofEntries( Map.entry("type_a", Set.of("a", "b")), Map.entry("type_b", Set.of("c", "d")))) diff --git a/lib/taskana-core/src/main/java/pro/taskana/TaskanaConfiguration.java b/lib/taskana-core/src/main/java/pro/taskana/TaskanaConfiguration.java index 63130b464..c96940f78 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/TaskanaConfiguration.java +++ b/lib/taskana-core/src/main/java/pro/taskana/TaskanaConfiguration.java @@ -67,7 +67,7 @@ public class TaskanaConfiguration { // endregion // region classification configuration - private final Set classificationTypes; + private final List classificationTypes; private final Map> classificationCategoriesByType; // endregion @@ -142,7 +142,7 @@ public class TaskanaConfiguration { Collectors.toUnmodifiableMap( Entry::getKey, e -> Collections.unmodifiableSet(e.getValue()))); // classification configuration - this.classificationTypes = Collections.unmodifiableSet(builder.classificationTypes); + this.classificationTypes = Collections.unmodifiableList(builder.classificationTypes); this.classificationCategoriesByType = builder.classificationCategoriesByType.entrySet().stream() .collect( @@ -252,7 +252,7 @@ public class TaskanaConfiguration { return roleMap; } - public Set getClassificationTypes() { + public List getClassificationTypes() { return classificationTypes; } @@ -629,7 +629,7 @@ public class TaskanaConfiguration { // region classification configuration @TaskanaProperty("taskana.classification.types") - private Set classificationTypes = new HashSet<>(); + private List classificationTypes = new ArrayList<>(); @TaskanaProperty("taskana.classification.categories") private Map> classificationCategoriesByType = new HashMap<>(); @@ -928,7 +928,7 @@ public class TaskanaConfiguration { // region classification configuration - public Builder classificationTypes(Set classificationTypes) { + public Builder classificationTypes(List classificationTypes) { this.classificationTypes = classificationTypes; return this; } @@ -1171,7 +1171,7 @@ public class TaskanaConfiguration { private void adjustConfiguration() { domains = domains.stream().map(String::toUpperCase).collect(Collectors.toList()); classificationTypes = - classificationTypes.stream().map(String::toUpperCase).collect(Collectors.toSet()); + classificationTypes.stream().map(String::toUpperCase).collect(Collectors.toList()); classificationCategoriesByType = classificationCategoriesByType.entrySet().stream() .map( diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaEngineController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaEngineController.java index 9cf927674..820d1c91f 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaEngineController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaEngineController.java @@ -78,7 +78,7 @@ public class TaskanaEngineController { */ @GetMapping(path = RestEndpoints.URL_CLASSIFICATION_TYPES) @Transactional(readOnly = true, rollbackFor = Exception.class) - public ResponseEntity> getClassificationTypes() { + public ResponseEntity> getClassificationTypes() { return ResponseEntity.ok(taskanaConfiguration.getClassificationTypes()); }