diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java index efbb2fc52..27e1d3872 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java @@ -31,6 +31,17 @@ public class AbstractAccTest { private static DataSource dataSource; private static String schemaName = null; + static { + String userHomeDirectroy = System.getProperty("user.home"); + String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; + File f = new File(propertiesFileName); + if (f.exists() && !f.isDirectory()) { + dataSource = createDataSourceFromProperties(propertiesFileName); + } else { + dataSource = createDefaultDataSource(); + } + } + protected AbstractAccTest() { // not called } @@ -56,17 +67,6 @@ public class AbstractAccTest { writer.generateTestData(dataSource); } - static { - String userHomeDirectroy = System.getProperty("user.home"); - String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; - File f = new File(propertiesFileName); - if (f.exists() && !f.isDirectory()) { - dataSource = createDataSourceFromProperties(propertiesFileName); - } else { - dataSource = createDefaultDataSource(); - } - } - public static DataSource getDataSource() { if (dataSource == null) { throw new RuntimeException("Datasource should be already initialized"); diff --git a/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java b/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java index 98d1bfe63..2f7bf319a 100644 --- a/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java @@ -34,8 +34,10 @@ public class TaskanaEngineConfigurationTest extends AbstractAccTest { resetDb("SOMECUSTOMSCHEMANAME"); long count = getHistoryService().createHistoryQuery().workbasketKeyIn("wbKey1").count(); assertEquals(0, count); - getHistoryService().create( - AbstractAccTest.createHistoryEvent("wbKey1", "taskId1", "type1", "Some comment", "wbKey2")); + getHistoryService() + .create( + AbstractAccTest.createHistoryEvent( + "wbKey1", "taskId1", "type1", "Some comment", "wbKey2")); count = getHistoryService().createHistoryQuery().workbasketKeyIn("wbKey1").count(); assertEquals(1, count); } diff --git a/history/taskana-simplehistory-spring-test/src/test/java/pro/taskana/doc/api/TaskHistoryEventControllerRestDocumentation.java b/history/taskana-simplehistory-spring-test/src/test/java/pro/taskana/doc/api/TaskHistoryEventControllerRestDocumentation.java index 5bf1383b7..a7f760b01 100644 --- a/history/taskana-simplehistory-spring-test/src/test/java/pro/taskana/doc/api/TaskHistoryEventControllerRestDocumentation.java +++ b/history/taskana-simplehistory-spring-test/src/test/java/pro/taskana/doc/api/TaskHistoryEventControllerRestDocumentation.java @@ -167,10 +167,10 @@ public class TaskHistoryEventControllerRestDocumentation { fieldWithPath("taskHistoryEvents[].newData") .description(taskHistoryEventFieldDescriptionsMap.get("newData")), fieldWithPath("_links.self.href").ignored(), - fieldWithPath("page.size").ignored(), - fieldWithPath("page.totalElements").ignored(), - fieldWithPath("page.totalPages").ignored(), - fieldWithPath("page.number").ignored() + fieldWithPath("page.size").ignored(), + fieldWithPath("page.totalElements").ignored(), + fieldWithPath("page.totalPages").ignored(), + fieldWithPath("page.number").ignored() }; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java b/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java index 3aa4f509b..8e4b614ef 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java @@ -76,7 +76,6 @@ public interface InternalTaskanaEngine { */ TaskRoutingManager getTaskRoutingManager(); - /** * This method is supposed to skip further permission checks if we are already in a secured * environment. With great power comes great responsibility. diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java index f64abbb4b..800ba84e5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java @@ -332,31 +332,6 @@ public class TaskanaEngineImpl implements TaskanaEngine { } } - @Override - public T runAsAdmin(Supplier supplier) { - - Subject subject = Subject.getSubject(AccessController.getContext()); - if (subject == null) { - // dont add authorisation if none is available. - return supplier.get(); - } - - Set principalsCopy = new HashSet<>(subject.getPrincipals()); - Set privateCredentialsCopy = new HashSet<>(subject.getPrivateCredentials()); - Set publicCredentialsCopy = new HashSet<>(subject.getPublicCredentials()); - - String adminName = - this.getEngine().getConfiguration().getRoleMap().get(TaskanaRole.ADMIN).stream() - .findFirst() - .orElseThrow(() -> new TaskanaRuntimeException("There is no admin configured")); - - principalsCopy.add(new GroupPrincipal(adminName)); - Subject subject1 = - new Subject(true, principalsCopy, privateCredentialsCopy, publicCredentialsCopy); - - return Subject.doAs(subject1, (PrivilegedAction) supplier::get); - } - @Override public void returnConnection() { if (mode != ConnectionManagementMode.EXPLICIT) { @@ -421,5 +396,30 @@ public class TaskanaEngineImpl implements TaskanaEngine { public TaskRoutingManager getTaskRoutingManager() { return taskRoutingManager; } + + @Override + public T runAsAdmin(Supplier supplier) { + + Subject subject = Subject.getSubject(AccessController.getContext()); + if (subject == null) { + // dont add authorisation if none is available. + return supplier.get(); + } + + Set principalsCopy = new HashSet<>(subject.getPrincipals()); + Set privateCredentialsCopy = new HashSet<>(subject.getPrivateCredentials()); + Set publicCredentialsCopy = new HashSet<>(subject.getPublicCredentials()); + + String adminName = + this.getEngine().getConfiguration().getRoleMap().get(TaskanaRole.ADMIN).stream() + .findFirst() + .orElseThrow(() -> new TaskanaRuntimeException("There is no admin configured")); + + principalsCopy.add(new GroupPrincipal(adminName)); + Subject subject1 = + new Subject(true, principalsCopy, privateCredentialsCopy, publicCredentialsCopy); + + return Subject.doAs(subject1, (PrivilegedAction) supplier::get); + } } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/ScheduledJob.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/ScheduledJob.java index 39d9ce2ea..0a8cac9df 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/ScheduledJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/ScheduledJob.java @@ -108,24 +108,6 @@ public class ScheduledJob { this.retryCount = retryCount; } - /** - * This enum tracks the state of a job. - * - * @author bbr - */ - public enum State { - READY, - FAILED - } - - /** This enum controls the type of a job. */ - public enum Type { - CLASSIFICATIONCHANGEDJOB, - UPDATETASKSJOB, - TASKCLEANUPJOB, - WORKBASKETCLEANUPJOB; - } - @Override public int hashCode() { return Objects.hash( @@ -177,4 +159,22 @@ public class ScheduledJob { + arguments + "]"; } + + /** + * This enum tracks the state of a job. + * + * @author bbr + */ + public enum State { + READY, + FAILED + } + + /** This enum controls the type of a job. */ + public enum Type { + CLASSIFICATIONCHANGEDJOB, + UPDATETASKSJOB, + TASKCLEANUPJOB, + WORKBASKETCLEANUPJOB; + } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/mappings/JobMapper.java b/lib/taskana-core/src/main/java/pro/taskana/mappings/JobMapper.java index 2986a2ecd..b45a9bcda 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/mappings/JobMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/mappings/JobMapper.java @@ -31,9 +31,7 @@ public interface JobMapper { + "" + ", #{job.priority}, #{job.created}, #{job.due}, #{job.state}, #{job.lockedBy}, #{job.lockExpires}, #{job.type}, #{job.retryCount}, #{job.arguments,javaType=java.util.Map,typeHandler=pro.taskana.impl.persistence.MapTypeHandler} )" + "") - @Results( - value = { - @Result(property = "jobId", column = "JOB_ID")}) + @Results(value = {@Result(property = "jobId", column = "JOB_ID")}) Integer insertJob(@Param("job") ScheduledJob job); @Select( diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java b/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java index 02c805ddf..77a8ec851 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java @@ -24,8 +24,6 @@ public final class TaskanaEngineTestConfiguration { private static DataSource dataSource; private static String schemaName = null; - private TaskanaEngineTestConfiguration() {} - static { String userHomeDirectroy = System.getProperty("user.home"); String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; @@ -37,6 +35,8 @@ public final class TaskanaEngineTestConfiguration { } } + private TaskanaEngineTestConfiguration() {} + /** * returns the Datasource used for Junit test. If the file {user.home}/taskanaUnitTest.properties * is present, the Datasource is created according to the properties jdbcDriver, jdbcUrl, diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaRestExceptionHandler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaRestExceptionHandler.java index a3db161c4..3f8449e8b 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaRestExceptionHandler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskanaRestExceptionHandler.java @@ -113,7 +113,7 @@ public class TaskanaRestExceptionHandler extends ResponseEntityExceptionHandler WorkbasketAlreadyExistException ex, WebRequest req) { return buildResponse(ex, req, HttpStatus.CONFLICT); } - + @ExceptionHandler(WorkbasketAccessItemAlreadyExistException.class) protected ResponseEntity handleWorkbasketAccessItemAlreadyExist( WorkbasketAccessItemAlreadyExistException ex, WebRequest req) { diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java index 6ae40c189..b74bfaae9 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/doc/api/WorkbasketAccessItemControllerRestDocumentation.java @@ -105,10 +105,10 @@ class WorkbasketAccessItemControllerRestDocumentation extends BaseRestDocumentat .description(accessItemFieldDescriptionsMap.get("accessItems.permCustom12")), fieldWithPath("_links.self.href") .description(accessItemFieldDescriptionsMap.get("_links.self.href")), - fieldWithPath("page.size").ignored(), - fieldWithPath("page.totalElements").ignored(), - fieldWithPath("page.totalPages").ignored(), - fieldWithPath("page.number").ignored() + fieldWithPath("page.size").ignored(), + fieldWithPath("page.totalElements").ignored(), + fieldWithPath("page.totalPages").ignored(), + fieldWithPath("page.number").ignored() }; } diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java index dde0b1153..f60fb6ae0 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/WorkbasketControllerIntTest.java @@ -109,9 +109,8 @@ class WorkbasketControllerIntTest { } /** - * Bug Ticket TSK-1029. - * Businessadmin is allowed to delete any workbasket ticket without user related access - * restrictions. + * Bug Ticket TSK-1029. Businessadmin is allowed to delete any workbasket ticket without user + * related access restrictions. */ @Test void testDeleteWorkbasketAsBusinessAdminWithoutExplicitReadPermission() {