Closes #2211 classificationTypes are List instead of Set, because of sorting
This commit is contained in:
parent
54382bc8f5
commit
d73beb3a3c
|
@ -100,7 +100,7 @@ class TaskanaConfigurationTest {
|
||||||
Arrays.stream(TaskanaRole.values())
|
Arrays.stream(TaskanaRole.values())
|
||||||
.collect(Collectors.toMap(Function.identity(), r -> Set.of())));
|
.collect(Collectors.toMap(Function.identity(), r -> Set.of())));
|
||||||
// classification configuration
|
// classification configuration
|
||||||
assertThat(configuration.getClassificationTypes()).isEqualTo(Collections.emptySet());
|
assertThat(configuration.getClassificationTypes()).isEqualTo(Collections.emptyList());
|
||||||
assertThat(configuration.getClassificationCategoriesByType())
|
assertThat(configuration.getClassificationCategoriesByType())
|
||||||
.isEqualTo(Collections.emptyMap());
|
.isEqualTo(Collections.emptyMap());
|
||||||
// working time configuration
|
// working time configuration
|
||||||
|
@ -171,7 +171,7 @@ class TaskanaConfigurationTest {
|
||||||
Map.entry(TaskanaRole.TASK_ADMIN, Set.of("taskadmin-1", "taskadmin-2")),
|
Map.entry(TaskanaRole.TASK_ADMIN, Set.of("taskadmin-1", "taskadmin-2")),
|
||||||
Map.entry(TaskanaRole.TASK_ROUTER, Set.of("taskrouter-1", "taskrouter-2"))));
|
Map.entry(TaskanaRole.TASK_ROUTER, Set.of("taskrouter-1", "taskrouter-2"))));
|
||||||
// classification configuration
|
// classification configuration
|
||||||
assertThat(configuration.getClassificationTypes()).isEqualTo(Set.of("TASK", "DOCUMENT"));
|
assertThat(configuration.getClassificationTypes()).isEqualTo(List.of("TASK", "DOCUMENT"));
|
||||||
assertThat(configuration.getClassificationCategoriesByType())
|
assertThat(configuration.getClassificationCategoriesByType())
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
Map.ofEntries(
|
Map.ofEntries(
|
||||||
|
@ -247,7 +247,7 @@ class TaskanaConfigurationTest {
|
||||||
Map.entry(TaskanaRole.TASK_ADMIN, Set.of("task_admin")),
|
Map.entry(TaskanaRole.TASK_ADMIN, Set.of("task_admin")),
|
||||||
Map.entry(TaskanaRole.TASK_ROUTER, Set.of("task_router")));
|
Map.entry(TaskanaRole.TASK_ROUTER, Set.of("task_router")));
|
||||||
// classification configuration
|
// classification configuration
|
||||||
Set<String> expectedClassificationTypes = Set.of("TYPE_A", "TYPE_B");
|
List<String> expectedClassificationTypes = List.of("TYPE_A", "TYPE_B");
|
||||||
Map<String, Set<String>> expectedClassificationCategories =
|
Map<String, Set<String>> expectedClassificationCategories =
|
||||||
Map.of("TYPE_A", Set.of("CATEGORY_A"), "TYPE_B", Set.of("CATEGORY_B"));
|
Map.of("TYPE_A", Set.of("CATEGORY_A"), "TYPE_B", Set.of("CATEGORY_B"));
|
||||||
// working time configuration
|
// working time configuration
|
||||||
|
@ -435,7 +435,7 @@ class TaskanaConfigurationTest {
|
||||||
// authentication configuration
|
// authentication configuration
|
||||||
.roleMap(Map.of(TaskanaRole.ADMIN, Set.of("admin")))
|
.roleMap(Map.of(TaskanaRole.ADMIN, Set.of("admin")))
|
||||||
// classification configuration
|
// classification configuration
|
||||||
.classificationTypes(Set.of("typeA", "typeB"))
|
.classificationTypes(List.of("typeA", "typeB"))
|
||||||
.classificationCategoriesByType(
|
.classificationCategoriesByType(
|
||||||
Map.of("typeA", Set.of("categoryA"), "typeB", Set.of("categoryB")))
|
Map.of("typeA", Set.of("categoryA"), "typeB", Set.of("categoryB")))
|
||||||
// working time configuration
|
// working time configuration
|
||||||
|
@ -624,7 +624,7 @@ class TaskanaConfigurationTest {
|
||||||
new TaskanaConfiguration.Builder(
|
new TaskanaConfiguration.Builder(
|
||||||
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
// necessary to bypass validation since Classification Categories will be an empty Map
|
// necessary to bypass validation since Classification Categories will be an empty Map
|
||||||
.classificationTypes(Set.of(""));
|
.classificationTypes(List.of(""));
|
||||||
initializeWithMutableCollectionsAsMapValues(builder);
|
initializeWithMutableCollectionsAsMapValues(builder);
|
||||||
Stream<Field> fields =
|
Stream<Field> fields =
|
||||||
ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream()
|
ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream()
|
||||||
|
@ -672,7 +672,7 @@ class TaskanaConfigurationTest {
|
||||||
new TaskanaConfiguration.Builder(
|
new TaskanaConfiguration.Builder(
|
||||||
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
// necessary to bypass validation since Classification Categories will be an empty Map
|
// necessary to bypass validation since Classification Categories will be an empty Map
|
||||||
.classificationTypes(Set.of());
|
.classificationTypes(List.of());
|
||||||
initializeWithMutableMaps(builder);
|
initializeWithMutableMaps(builder);
|
||||||
Stream<Field> fields =
|
Stream<Field> fields =
|
||||||
ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream()
|
ReflectionUtil.retrieveAllFields(TaskanaConfiguration.class).stream()
|
||||||
|
@ -919,7 +919,7 @@ class TaskanaConfigurationTest {
|
||||||
TaskanaConfiguration.Builder builder =
|
TaskanaConfiguration.Builder builder =
|
||||||
new TaskanaConfiguration.Builder(
|
new TaskanaConfiguration.Builder(
|
||||||
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
.classificationTypes(Set.of("valid"))
|
.classificationTypes(List.of("valid"))
|
||||||
.classificationCategoriesByType(Map.of("does_not_exist", Set.of("a", "b")));
|
.classificationCategoriesByType(Map.of("does_not_exist", Set.of("a", "b")));
|
||||||
|
|
||||||
ThrowingCallable call = builder::build;
|
ThrowingCallable call = builder::build;
|
||||||
|
@ -938,7 +938,7 @@ class TaskanaConfigurationTest {
|
||||||
TaskanaConfiguration.Builder builder =
|
TaskanaConfiguration.Builder builder =
|
||||||
new TaskanaConfiguration.Builder(
|
new TaskanaConfiguration.Builder(
|
||||||
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
.classificationTypes(Set.of("type1", "type2"))
|
.classificationTypes(List.of("type1", "type2"))
|
||||||
.classificationCategoriesByType(Map.of("type1", Set.of("a", "b")));
|
.classificationCategoriesByType(Map.of("type1", Set.of("a", "b")));
|
||||||
|
|
||||||
ThrowingCallable call = builder::build;
|
ThrowingCallable call = builder::build;
|
||||||
|
@ -948,7 +948,7 @@ class TaskanaConfigurationTest {
|
||||||
.hasMessageContaining(
|
.hasMessageContaining(
|
||||||
"Some Classification Categories for parameter classificationTypes "
|
"Some Classification Categories for parameter classificationTypes "
|
||||||
+ "(taskana.classification.types) are missing. "
|
+ "(taskana.classification.types) are missing. "
|
||||||
+ "configured: [TYPE2, TYPE1] detected: [TYPE1]");
|
+ "configured: [TYPE1, TYPE2] detected: [TYPE1]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ParameterizedTest
|
@ParameterizedTest
|
||||||
|
@ -988,7 +988,7 @@ class TaskanaConfigurationTest {
|
||||||
void should_MakeClassificationTypesUpperCase() {
|
void should_MakeClassificationTypesUpperCase() {
|
||||||
TaskanaConfiguration configuration =
|
TaskanaConfiguration configuration =
|
||||||
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
.classificationTypes(Set.of("a", "b"))
|
.classificationTypes(List.of("a", "b"))
|
||||||
.classificationCategoriesByType(
|
.classificationCategoriesByType(
|
||||||
Map.ofEntries(Map.entry("a", Set.of()), Map.entry("b", Set.of())))
|
Map.ofEntries(Map.entry("a", Set.of()), Map.entry("b", Set.of())))
|
||||||
.build();
|
.build();
|
||||||
|
@ -1000,7 +1000,7 @@ class TaskanaConfigurationTest {
|
||||||
void should_MakeClassificationCategoriesUpperCase() {
|
void should_MakeClassificationCategoriesUpperCase() {
|
||||||
TaskanaConfiguration configuration =
|
TaskanaConfiguration configuration =
|
||||||
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
|
||||||
.classificationTypes(Set.of("type_a", "type_b"))
|
.classificationTypes(List.of("type_a", "type_b"))
|
||||||
.classificationCategoriesByType(
|
.classificationCategoriesByType(
|
||||||
Map.ofEntries(
|
Map.ofEntries(
|
||||||
Map.entry("type_a", Set.of("a", "b")), Map.entry("type_b", Set.of("c", "d"))))
|
Map.entry("type_a", Set.of("a", "b")), Map.entry("type_b", Set.of("c", "d"))))
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class TaskanaConfiguration {
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region classification configuration
|
// region classification configuration
|
||||||
private final Set<String> classificationTypes;
|
private final List<String> classificationTypes;
|
||||||
|
|
||||||
private final Map<String, Set<String>> classificationCategoriesByType;
|
private final Map<String, Set<String>> classificationCategoriesByType;
|
||||||
// endregion
|
// endregion
|
||||||
|
@ -142,7 +142,7 @@ public class TaskanaConfiguration {
|
||||||
Collectors.toUnmodifiableMap(
|
Collectors.toUnmodifiableMap(
|
||||||
Entry::getKey, e -> Collections.unmodifiableSet(e.getValue())));
|
Entry::getKey, e -> Collections.unmodifiableSet(e.getValue())));
|
||||||
// classification configuration
|
// classification configuration
|
||||||
this.classificationTypes = Collections.unmodifiableSet(builder.classificationTypes);
|
this.classificationTypes = Collections.unmodifiableList(builder.classificationTypes);
|
||||||
this.classificationCategoriesByType =
|
this.classificationCategoriesByType =
|
||||||
builder.classificationCategoriesByType.entrySet().stream()
|
builder.classificationCategoriesByType.entrySet().stream()
|
||||||
.collect(
|
.collect(
|
||||||
|
@ -252,7 +252,7 @@ public class TaskanaConfiguration {
|
||||||
return roleMap;
|
return roleMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getClassificationTypes() {
|
public List<String> getClassificationTypes() {
|
||||||
return classificationTypes;
|
return classificationTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,7 +629,7 @@ public class TaskanaConfiguration {
|
||||||
|
|
||||||
// region classification configuration
|
// region classification configuration
|
||||||
@TaskanaProperty("taskana.classification.types")
|
@TaskanaProperty("taskana.classification.types")
|
||||||
private Set<String> classificationTypes = new HashSet<>();
|
private List<String> classificationTypes = new ArrayList<>();
|
||||||
|
|
||||||
@TaskanaProperty("taskana.classification.categories")
|
@TaskanaProperty("taskana.classification.categories")
|
||||||
private Map<String, Set<String>> classificationCategoriesByType = new HashMap<>();
|
private Map<String, Set<String>> classificationCategoriesByType = new HashMap<>();
|
||||||
|
@ -928,7 +928,7 @@ public class TaskanaConfiguration {
|
||||||
|
|
||||||
// region classification configuration
|
// region classification configuration
|
||||||
|
|
||||||
public Builder classificationTypes(Set<String> classificationTypes) {
|
public Builder classificationTypes(List<String> classificationTypes) {
|
||||||
this.classificationTypes = classificationTypes;
|
this.classificationTypes = classificationTypes;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -1171,7 +1171,7 @@ public class TaskanaConfiguration {
|
||||||
private void adjustConfiguration() {
|
private void adjustConfiguration() {
|
||||||
domains = domains.stream().map(String::toUpperCase).collect(Collectors.toList());
|
domains = domains.stream().map(String::toUpperCase).collect(Collectors.toList());
|
||||||
classificationTypes =
|
classificationTypes =
|
||||||
classificationTypes.stream().map(String::toUpperCase).collect(Collectors.toSet());
|
classificationTypes.stream().map(String::toUpperCase).collect(Collectors.toList());
|
||||||
classificationCategoriesByType =
|
classificationCategoriesByType =
|
||||||
classificationCategoriesByType.entrySet().stream()
|
classificationCategoriesByType.entrySet().stream()
|
||||||
.map(
|
.map(
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class TaskanaEngineController {
|
||||||
*/
|
*/
|
||||||
@GetMapping(path = RestEndpoints.URL_CLASSIFICATION_TYPES)
|
@GetMapping(path = RestEndpoints.URL_CLASSIFICATION_TYPES)
|
||||||
@Transactional(readOnly = true, rollbackFor = Exception.class)
|
@Transactional(readOnly = true, rollbackFor = Exception.class)
|
||||||
public ResponseEntity<Set<String>> getClassificationTypes() {
|
public ResponseEntity<List<String>> getClassificationTypes() {
|
||||||
return ResponseEntity.ok(taskanaConfiguration.getClassificationTypes());
|
return ResponseEntity.ok(taskanaConfiguration.getClassificationTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue