diff --git a/lib/taskana-core/src/main/java/pro/taskana/history/HistoryEventProducer.java b/lib/taskana-core/src/main/java/pro/taskana/history/HistoryEventProducer.java index 9a7502991..d6aa6ad76 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/history/HistoryEventProducer.java +++ b/lib/taskana-core/src/main/java/pro/taskana/history/HistoryEventProducer.java @@ -1,5 +1,6 @@ package pro.taskana.history; +import java.util.Objects; import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,7 +14,7 @@ public final class HistoryEventProducer { private static final Logger LOGGER = LoggerFactory.getLogger(HistoryEventProducer.class); private static HistoryEventProducer singleton; - private static boolean enabled = false; + private boolean enabled = false; private ServiceLoader serviceLoader; private HistoryEventProducer(TaskanaEngineConfiguration taskanaEngineConfiguration) { @@ -37,7 +38,7 @@ public final class HistoryEventProducer { } public static boolean isHistoryEnabled() { - return enabled; + return Objects.nonNull(singleton) && singleton.enabled; } public void createEvent(TaskanaHistoryEvent event) { diff --git a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java index 6d496647e..92d4e2fd0 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java +++ b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java @@ -21,8 +21,8 @@ public final class TaskRoutingManager { private static final Logger LOGGER = LoggerFactory.getLogger(TaskRoutingManager.class); private static TaskRoutingManager singleton; - private static boolean enabled = false; - private static List theTaskRoutingProviders = new ArrayList<>(); + private boolean enabled = false; + private List theTaskRoutingProviders = new ArrayList<>(); private ServiceLoader serviceLoader; private TaskRoutingManager(TaskanaEngine taskanaEngine) { @@ -48,7 +48,7 @@ public final class TaskRoutingManager { } public static boolean isTaskRoutingEnabled() { - return enabled; + return Objects.nonNull(singleton) && singleton.enabled; } /** diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java index d9764e418..fd26b152a 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java @@ -12,7 +12,7 @@ import java.time.LocalTime; import java.time.ZoneId; import java.util.List; import javax.sql.DataSource; -import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,42 +40,38 @@ import pro.taskana.sampledata.SampleDataGenerator; */ class ClassificationServiceImplIntAutoCommitTest { - static int counter = 0; - private DataSource dataSource; private ClassificationService classificationService; - private TaskanaEngineConfiguration taskanaEngineConfiguration; - private TaskanaEngine taskanaEngine; - private TaskanaEngineImpl taskanaEngineImpl; - - @BeforeAll - static void resetDb() { - DataSource ds = TaskanaEngineTestConfiguration.getDataSource(); - String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - new SampleDataGenerator(ds, schemaName).dropDb(); - } @BeforeEach void setup() throws SQLException { - dataSource = TaskanaEngineTestConfiguration.getDataSource(); + + DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); - taskanaEngineConfiguration = + TaskanaEngineConfiguration taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false, false, schemaName); - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); + TaskanaEngine taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); classificationService = taskanaEngine.getClassificationService(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; + TaskanaEngineImpl taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); new SampleDataGenerator(dataSource, schemaName).clearDb(); } + @AfterEach + void teardown() { + DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); + String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); + new SampleDataGenerator(dataSource, schemaName).dropDb(); + } + @Test void testFindAllClassifications() throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, InvalidArgumentException { - Classification classification0 = this.createDummyClassificationWithUniqueKey("", "TASK"); + Classification classification0 = classificationService.newClassification("TEST1", "", "TASK"); classificationService.createClassification(classification0); - Classification classification1 = this.createDummyClassificationWithUniqueKey("", "TASK"); + Classification classification1 = classificationService.newClassification("TEST2", "", "TASK"); classificationService.createClassification(classification1); - Classification classification2 = this.createDummyClassificationWithUniqueKey("", "TASK"); + Classification classification2 = classificationService.newClassification("TEST3", "", "TASK"); classification2.setParentId(classification0.getId()); classificationService.createClassification(classification2); @@ -88,7 +84,8 @@ class ClassificationServiceImplIntAutoCommitTest { NotAuthorizedException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException { final String description = "TEST SOMETHING"; - Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); + Classification classification = + classificationService.newClassification("TEST434", "DOMAIN_A", "TASK"); classification.setDescription(""); classification = classificationService.createClassification(classification); classification.setDescription("TEST SOMETHING"); @@ -104,7 +101,8 @@ class ClassificationServiceImplIntAutoCommitTest { void testInsertClassification() throws NotAuthorizedException, ClassificationAlreadyExistException, InvalidArgumentException, DomainNotFoundException { - Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); + Classification classification = + classificationService.newClassification("TEST1333", "DOMAIN_A", "TASK"); classificationService.createClassification(classification); List list = @@ -122,7 +120,8 @@ class ClassificationServiceImplIntAutoCommitTest { throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException { - Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); + Classification classification = + classificationService.newClassification("TEST32451", "DOMAIN_A", "TASK"); classification = classificationService.createClassification(classification); classification.setDescription("description"); classification = classificationService.updateClassification(classification); @@ -145,11 +144,12 @@ class ClassificationServiceImplIntAutoCommitTest { throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, ConcurrencyException, DomainNotFoundException, InvalidArgumentException { - Classification classification = this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); + Classification classification = + classificationService.newClassification("TEST7771", "DOMAIN_A", "TASK"); classification = classificationService.createClassification(classification); Classification classification1 = - this.createDummyClassificationWithUniqueKey("DOMAIN_A", "TASK"); + classificationService.newClassification("TEST1865", "DOMAIN_A", "TASK"); classification1 = classificationService.createClassification(classification1); classification1.setParentId(classification.getId()); @@ -190,11 +190,4 @@ class ClassificationServiceImplIntAutoCommitTest { LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant(); return new TimeInterval(begin, end); } - - private Classification createDummyClassificationWithUniqueKey(String domain, String type) { - Classification classification = - classificationService.newClassification("TEST" + counter, domain, type); - counter++; - return classification; - } } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java index ecb0593cd..582b9386c 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java @@ -15,7 +15,6 @@ import java.util.UUID; import javax.sql.DataSource; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -69,22 +68,22 @@ import pro.taskana.security.WithAccessId; @ExtendWith(JaasExtension.class) class TaskServiceImplIntExplicitTest { - private static DataSource dataSource; + private DataSource dataSource; - private static TaskServiceImpl taskServiceImpl; + private TaskServiceImpl taskServiceImpl; - private static TaskanaEngineConfiguration taskanaEngineConfiguration; + private TaskanaEngineConfiguration taskanaEngineConfiguration; - private static TaskanaEngine taskanaEngine; + private TaskanaEngine taskanaEngine; - private static TaskanaEngineImpl taskanaEngineImpl; + private TaskanaEngineImpl taskanaEngineImpl; - private static ClassificationService classificationService; + private ClassificationService classificationService; - private static WorkbasketService workbasketService; + private WorkbasketService workbasketService; - @BeforeAll - static void setup() throws SQLException { + @BeforeEach + void setup() throws SQLException { String userHomeDirectory = System.getProperty("user.home"); String propertiesFileName = userHomeDirectory + "/taskanaUnitTest.properties"; @@ -108,10 +107,7 @@ class TaskServiceImplIntExplicitTest { DbSchemaCreator creator = new DbSchemaCreator(dataSource, connection.getSchema()); creator.run(); } - } - @BeforeEach - void resetDb() { String schemaName = TaskanaEngineTestConfiguration.getSchemaName(); SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); sampleDataGenerator.clearDb(); @@ -232,8 +228,9 @@ class TaskServiceImplIntExplicitTest { wb.setName("dummy-WB"); wb.setType(WorkbasketType.PERSONAL); wb = workbasketService.createWorkbasket(wb); - this.createWorkbasketWithSecurity( - wb, CurrentUserContext.getUserid(), true, true, true, false); + workbasketService.createWorkbasketAccessItem( + this.createWorkbasketWithSecurity( + wb, CurrentUserContext.getUserid(), true, true, true, false)); Classification classification = classificationService.newClassification( UUID.randomUUID().toString(), wb.getDomain(), "t1"); // not persisted, @@ -330,13 +327,15 @@ class TaskServiceImplIntExplicitTest { wb.setType(WorkbasketType.PERSONAL); Workbasket sourceWB = workbasketService.createWorkbasket(wb); - createWorkbasketWithSecurity(wb, wb.getOwner(), true, true, true, true); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity(wb, wb.getOwner(), true, true, true, true)); connection.commit(); Assertions.assertThrows( WorkbasketAccessItemAlreadyExistException.class, () -> - createWorkbasketWithSecurity( - sourceWB, sourceWB.getOwner(), false, false, false, false)); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity( + sourceWB, sourceWB.getOwner(), false, false, false, false))); connection.rollback(); // Destination Workbasket @@ -347,8 +346,9 @@ class TaskServiceImplIntExplicitTest { wb.setType(WorkbasketType.TOPIC); Workbasket destinationWB = workbasketService.createWorkbasket(wb); - createWorkbasketWithSecurity( - destinationWB, destinationWB.getOwner(), false, true, true, true); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity( + destinationWB, destinationWB.getOwner(), false, true, true, true)); // Classification required for Task ClassificationImpl classification = @@ -406,16 +406,16 @@ class TaskServiceImplIntExplicitTest { final String user = "User"; // Set up Security for this Test - dataSource = TaskanaEngineTestConfiguration.getDataSource(); - taskanaEngineConfiguration = + final DataSource dataSource = TaskanaEngineTestConfiguration.getDataSource(); + final TaskanaEngineConfiguration taskanaEngineConfiguration = new TaskanaEngineConfiguration( dataSource, false, true, TaskanaEngineTestConfiguration.getSchemaName()); - taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; + final TaskanaEngine taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); + final TaskanaEngineImpl taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); - taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); - classificationService = taskanaEngine.getClassificationService(); - workbasketService = taskanaEngine.getWorkbasketService(); + final TaskServiceImpl taskServiceImpl = (TaskServiceImpl) taskanaEngine.getTaskService(); + final ClassificationService classificationService = taskanaEngine.getClassificationService(); + final WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("KEY", "DOMAIN_A", "TASK"); @@ -429,7 +429,8 @@ class TaskServiceImplIntExplicitTest { wb.setOwner(user); wb.setType(WorkbasketType.GROUP); WorkbasketImpl wbCreated = (WorkbasketImpl) workbasketService.createWorkbasket(wb); - createWorkbasketWithSecurity(wbCreated, wbCreated.getOwner(), true, true, true, true); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity(wbCreated, wbCreated.getOwner(), true, true, true, true)); WorkbasketImpl wbNoAppend = (WorkbasketImpl) workbasketService.newWorkbasket("keyNoAppend", "DOMAIN_B"); @@ -440,8 +441,9 @@ class TaskServiceImplIntExplicitTest { wbNoAppend.setType(WorkbasketType.CLEARANCE); WorkbasketImpl wbNoAppendCreated = (WorkbasketImpl) workbasketService.createWorkbasket(wbNoAppend); - createWorkbasketWithSecurity( - wbNoAppendCreated, wbNoAppendCreated.getOwner(), true, true, false, true); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity( + wbNoAppendCreated, wbNoAppendCreated.getOwner(), true, true, false, true)); WorkbasketImpl wbNoTransfer = (WorkbasketImpl) workbasketService.newWorkbasket("keyNoTransfer", "DOMAIN_A"); @@ -450,7 +452,9 @@ class TaskServiceImplIntExplicitTest { wbNoTransfer.setOwner(user); wbNoTransfer.setType(WorkbasketType.GROUP); wbNoTransfer = (WorkbasketImpl) workbasketService.createWorkbasket(wbNoTransfer); - createWorkbasketWithSecurity(wbNoTransfer, wbNoTransfer.getOwner(), true, true, true, false); + workbasketService.createWorkbasketAccessItem( + createWorkbasketWithSecurity( + wbNoTransfer, wbNoTransfer.getOwner(), true, true, true, false)); TaskImpl task = (TaskImpl) taskServiceImpl.newTask(wbCreated.getId()); task.setName("Task Name"); @@ -520,21 +524,19 @@ class TaskServiceImplIntExplicitTest { return task; } - private void createWorkbasketWithSecurity( + private WorkbasketAccessItem createWorkbasketWithSecurity( Workbasket wb, String accessId, boolean permOpen, boolean permRead, boolean permAppend, - boolean permTransfer) - throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException, - WorkbasketAccessItemAlreadyExistException { + boolean permTransfer) { WorkbasketAccessItem accessItem = workbasketService.newWorkbasketAccessItem(wb.getId(), accessId); accessItem.setPermOpen(permOpen); accessItem.setPermRead(permRead); accessItem.setPermAppend(permAppend); accessItem.setPermTransfer(permTransfer); - workbasketService.createWorkbasketAccessItem(accessItem); + return accessItem; } } diff --git a/rest/taskana-rest-spring-example-common/src/main/java/pro/taskana/ldap/LdapCacheTestImpl.java b/rest/taskana-rest-spring-example-common/src/main/java/pro/taskana/ldap/LdapCacheTestImpl.java index c2f10fa85..5b35f3d48 100644 --- a/rest/taskana-rest-spring-example-common/src/main/java/pro/taskana/ldap/LdapCacheTestImpl.java +++ b/rest/taskana-rest-spring-example-common/src/main/java/pro/taskana/ldap/LdapCacheTestImpl.java @@ -22,9 +22,9 @@ public class LdapCacheTestImpl implements LdapCache { * Dictionary is a {@link Map} collection that contains {@link AccessIdResource} as key (user) and * {@link List} as value (groups of which the user is a member) . */ - private static Map> users; + private Map> users; - private static List accessIds = + private List accessIds = new ArrayList<>( Arrays.asList( new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"), @@ -298,7 +298,7 @@ public class LdapCacheTestImpl implements LdapCache { public List findGroupsOfUser( String searchFor, int maxNumberOfReturnedAccessIds) { if (users == null) { - addUsersToGroups(); + users = addUsersToGroups(); } return findAcessIdResource(searchFor, maxNumberOfReturnedAccessIds, true); } @@ -341,9 +341,9 @@ public class LdapCacheTestImpl implements LdapCache { return result; } - private void addUsersToGroups() { + private Map> addUsersToGroups() { List groups = new ArrayList<>(); - users = new HashMap<>(); + Map> users = new HashMap<>(); accessIds.forEach( item -> { @@ -402,5 +402,6 @@ public class LdapCacheTestImpl implements LdapCache { } countUser = (countUser + 1) % 4; } + return users; } } diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/ldap/LdapCacheTestImpl.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/ldap/LdapCacheTestImpl.java index e62841040..c0d2b9a13 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/ldap/LdapCacheTestImpl.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/ldap/LdapCacheTestImpl.java @@ -20,9 +20,9 @@ public class LdapCacheTestImpl implements LdapCache { * Dictionary is a {@link Map} collection that contains {@link AccessIdResource} as key (user) and * {@link List} as value (groups of which the user is a member) . */ - private static Map> users; + private Map> users; - private static List accessIds = + private List accessIds = new ArrayList<>( Arrays.asList( new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"),