Closes #2211 domains are List instead of Set, because of sorting

This commit is contained in:
arolfes 2023-04-12 10:18:45 +02:00 committed by Alex
parent ea5c004c04
commit 54382bc8f5
4 changed files with 16 additions and 13 deletions

View File

@ -92,7 +92,7 @@ class TaskanaConfigurationTest {
// general configuration // general configuration
assertThat(configuration.isSecurityEnabled()).isTrue(); assertThat(configuration.isSecurityEnabled()).isTrue();
assertThat(configuration.getDomains()).isEqualTo(Collections.emptySet()); assertThat(configuration.getDomains()).isEqualTo(Collections.emptyList());
assertThat(configuration.isEnforceServiceLevel()).isTrue(); assertThat(configuration.isEnforceServiceLevel()).isTrue();
// authentication configuration // authentication configuration
assertThat(configuration.getRoleMap()) assertThat(configuration.getRoleMap())
@ -234,7 +234,7 @@ class TaskanaConfigurationTest {
boolean expectedUseManagedTransactions = false; boolean expectedUseManagedTransactions = false;
String expectedSchemaName = "TASKANA"; String expectedSchemaName = "TASKANA";
boolean expectedSecurityEnabled = false; boolean expectedSecurityEnabled = false;
Set<String> expectedDomains = Set.of("A", "B"); List<String> expectedDomains = List.of("A", "B");
boolean expectedEnforceServiceLevel = false; boolean expectedEnforceServiceLevel = false;
// authentication configuration // authentication configuration
@ -430,7 +430,7 @@ class TaskanaConfigurationTest {
TaskanaConfiguration configuration = TaskanaConfiguration configuration =
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA", false) new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA", false)
// general configuration // general configuration
.domains(Set.of("A", "B")) .domains(List.of("A", "B"))
.enforceServiceLevel(false) .enforceServiceLevel(false)
// authentication configuration // authentication configuration
.roleMap(Map.of(TaskanaRole.ADMIN, Set.of("admin"))) .roleMap(Map.of(TaskanaRole.ADMIN, Set.of("admin")))
@ -978,7 +978,7 @@ class TaskanaConfigurationTest {
void should_MakeDomainUpperCase() { void should_MakeDomainUpperCase() {
TaskanaConfiguration configuration = TaskanaConfiguration configuration =
new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA") new Builder(TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
.domains(Set.of("a", "b")) .domains(List.of("a", "b"))
.build(); .build();
assertThat(configuration.getDomains()).containsExactlyInAnyOrder("A", "B"); assertThat(configuration.getDomains()).containsExactlyInAnyOrder("A", "B");

View File

@ -12,6 +12,7 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -57,7 +58,7 @@ public class TaskanaConfiguration {
private final String schemaName; private final String schemaName;
private final boolean securityEnabled; private final boolean securityEnabled;
private final Set<String> domains; private final List<String> domains;
private final boolean enforceServiceLevel; private final boolean enforceServiceLevel;
// endregion // endregion
@ -132,7 +133,7 @@ public class TaskanaConfiguration {
this.useManagedTransactions = builder.useManagedTransactions; this.useManagedTransactions = builder.useManagedTransactions;
this.schemaName = builder.schemaName; this.schemaName = builder.schemaName;
this.securityEnabled = builder.securityEnabled; this.securityEnabled = builder.securityEnabled;
this.domains = Collections.unmodifiableSet(builder.domains); this.domains = Collections.unmodifiableList(builder.domains);
this.enforceServiceLevel = builder.enforceServiceLevel; this.enforceServiceLevel = builder.enforceServiceLevel;
// authentication configuration // authentication configuration
this.roleMap = this.roleMap =
@ -239,7 +240,7 @@ public class TaskanaConfiguration {
return securityEnabled; return securityEnabled;
} }
public Set<String> getDomains() { public List<String> getDomains() {
return domains; return domains;
} }
@ -615,7 +616,7 @@ public class TaskanaConfiguration {
private final boolean securityEnabled; private final boolean securityEnabled;
@TaskanaProperty("taskana.domains") @TaskanaProperty("taskana.domains")
private Set<String> domains = new HashSet<>(); private List<String> domains = new ArrayList<>();
@TaskanaProperty("taskana.servicelevel.validation.enforce") @TaskanaProperty("taskana.servicelevel.validation.enforce")
private boolean enforceServiceLevel = true; private boolean enforceServiceLevel = true;
@ -904,7 +905,7 @@ public class TaskanaConfiguration {
// region general configuration // region general configuration
public Builder domains(Set<String> domains) { public Builder domains(List<String> domains) {
this.domains = domains; this.domains = domains;
return this; return this;
} }
@ -1139,6 +1140,7 @@ public class TaskanaConfiguration {
private void addMasterDomain() { private void addMasterDomain() {
// Master Domain is treat as empty string // Master Domain is treat as empty string
// it must be always added to the configuration // it must be always added to the configuration
// add the master domain always at the end of the list
if (!this.domains.contains(MASTER_DOMAIN)) { if (!this.domains.contains(MASTER_DOMAIN)) {
this.domains.add(MASTER_DOMAIN); this.domains.add(MASTER_DOMAIN);
} }
@ -1167,7 +1169,7 @@ public class TaskanaConfiguration {
} }
private void adjustConfiguration() { private void adjustConfiguration() {
domains = domains.stream().map(String::toUpperCase).collect(Collectors.toSet()); 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.toSet());
classificationCategoriesByType = classificationCategoriesByType =

View File

@ -3,8 +3,8 @@ package pro.taskana.testapi;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static pro.taskana.common.api.SharedConstants.MASTER_DOMAIN; import static pro.taskana.common.api.SharedConstants.MASTER_DOMAIN;
import java.util.List;
import java.util.OptionalInt; import java.util.OptionalInt;
import java.util.Set;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance;
@ -48,7 +48,7 @@ class TaskanaInitializationExtensionTest {
@Override @Override
public TaskanaConfiguration.Builder modify(TaskanaConfiguration.Builder builder) { public TaskanaConfiguration.Builder modify(TaskanaConfiguration.Builder builder) {
return builder.domains(Set.of("A", "B")); return builder.domains(List.of("A", "B"));
} }
@Test @Test

View File

@ -1,5 +1,6 @@
package pro.taskana.common.rest; package pro.taskana.common.rest;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -48,7 +49,7 @@ public class TaskanaEngineController {
*/ */
@GetMapping(path = RestEndpoints.URL_DOMAIN) @GetMapping(path = RestEndpoints.URL_DOMAIN)
@Transactional(readOnly = true, rollbackFor = Exception.class) @Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity<Set<String>> getDomains() { public ResponseEntity<List<String>> getDomains() {
return ResponseEntity.ok(taskanaConfiguration.getDomains()); return ResponseEntity.ok(taskanaConfiguration.getDomains());
} }