TSK-987: Fix Spotbugs - Write to static field from instance method

This commit is contained in:
Benjamin Eckstein 2020-01-23 16:52:38 +01:00
parent 1ddc5bbc95
commit 0d9ebe07c5
6 changed files with 77 additions and 80 deletions

View File

@ -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<TaskanaHistory> 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) {

View File

@ -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<TaskRoutingProvider> theTaskRoutingProviders = new ArrayList<>();
private boolean enabled = false;
private List<TaskRoutingProvider> theTaskRoutingProviders = new ArrayList<>();
private ServiceLoader<TaskRoutingProvider> 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;
}
/**

View File

@ -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<ClassificationSummary> 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;
}
}

View File

@ -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);
workbasketService.createWorkbasketAccessItem(
this.createWorkbasketWithSecurity(
wb, CurrentUserContext.getUserid(), true, true, true, false);
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,
() ->
workbasketService.createWorkbasketAccessItem(
createWorkbasketWithSecurity(
sourceWB, sourceWB.getOwner(), false, false, false, false));
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);
workbasketService.createWorkbasketAccessItem(
createWorkbasketWithSecurity(
destinationWB, destinationWB.getOwner(), false, true, true, true);
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);
workbasketService.createWorkbasketAccessItem(
createWorkbasketWithSecurity(
wbNoAppendCreated, wbNoAppendCreated.getOwner(), true, true, false, true);
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;
}
}

View File

@ -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<AccessIdResource, List<AccessIdResource>> users;
private Map<AccessIdResource, List<AccessIdResource>> users;
private static List<AccessIdResource> accessIds =
private List<AccessIdResource> 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<AccessIdResource> 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<AccessIdResource, List<AccessIdResource>> addUsersToGroups() {
List<AccessIdResource> groups = new ArrayList<>();
users = new HashMap<>();
Map<AccessIdResource, List<AccessIdResource>> users = new HashMap<>();
accessIds.forEach(
item -> {
@ -402,5 +402,6 @@ public class LdapCacheTestImpl implements LdapCache {
}
countUser = (countUser + 1) % 4;
}
return users;
}
}

View File

@ -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<AccessIdResource, List<AccessIdResource>> users;
private Map<AccessIdResource, List<AccessIdResource>> users;
private static List<AccessIdResource> accessIds =
private List<AccessIdResource> accessIds =
new ArrayList<>(
Arrays.asList(
new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"),