diff --git a/common/taskana-common-logging/pom.xml b/common/taskana-common-logging/pom.xml
index 3dac43a3b..eecab98c1 100644
--- a/common/taskana-common-logging/pom.xml
+++ b/common/taskana-common-logging/pom.xml
@@ -45,8 +45,7 @@
org.mockito
- ${version.mockito-inline}
- mockito-inline
+ mockito-core
test
diff --git a/history/taskana-loghistory-provider/pom.xml b/history/taskana-loghistory-provider/pom.xml
index f75d902de..c6529c887 100644
--- a/history/taskana-loghistory-provider/pom.xml
+++ b/history/taskana-loghistory-provider/pom.xml
@@ -59,8 +59,7 @@
org.mockito
- ${version.mockito-inline}
- mockito-inline
+ mockito-core
test
diff --git a/history/taskana-simplehistory-provider/pom.xml b/history/taskana-simplehistory-provider/pom.xml
index b7205be7d..c2a2bccc1 100644
--- a/history/taskana-simplehistory-provider/pom.xml
+++ b/history/taskana-simplehistory-provider/pom.xml
@@ -66,8 +66,7 @@
org.mockito
- ${version.mockito-inline}
- mockito-inline
+ mockito-core
test
diff --git a/history/taskana-simplehistory-rest-spring/pom.xml b/history/taskana-simplehistory-rest-spring/pom.xml
index 75be5376e..5d4db6d58 100644
--- a/history/taskana-simplehistory-rest-spring/pom.xml
+++ b/history/taskana-simplehistory-rest-spring/pom.xml
@@ -104,7 +104,7 @@
org.springframework.plugin
spring-plugin-core
- ${version.spring.core}
+ ${version.spring.plugin.core}
test
diff --git a/lib/taskana-cdi-example/pom.xml b/lib/taskana-cdi-example/pom.xml
index 21346f922..f509cff79 100644
--- a/lib/taskana-cdi-example/pom.xml
+++ b/lib/taskana-cdi-example/pom.xml
@@ -19,12 +19,25 @@
+
+
+
+ org.wildfly.bom
+ wildfly-ee
+ ${version.wildfly}
+ import
+ pom
+
+
+ org.jboss.arquillian
+ arquillian-bom
+ ${version.arquillian}
+ import
+ pom
+
+
+
-
- pro.taskana
- taskana-common-logging
- ${project.version}
-
jakarta.platform
jakarta.jakartaee-api
@@ -36,5 +49,171 @@
taskana-cdi
${project.version}
+
+
+ org.slf4j
+ jcl-over-slf4j
+ test
+
+
+ org.slf4j
+ slf4j-simple
+ test
+
+
+ org.assertj
+ assertj-core
+ ${version.assertj}
+ test
+
+
+ org.awaitility
+ awaitility
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+ test
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+ test
+
+
+ com.h2database
+ h2
+ test
+
+
+ org.jboss.arquillian.junit
+ arquillian-junit-container
+ test
+
+
+ org.jboss.shrinkwrap.resolver
+ shrinkwrap-resolver-impl-maven
+ test
+
+
+ org.jboss.shrinkwrap.resolver
+ shrinkwrap-resolver-api-maven
+ test
+
+
+ org.wildfly.arquillian
+ wildfly-arquillian-container-managed
+ ${version.arquillian.managed.wildfly}
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${version.maven.dependency}
+
+
+ unpack-wildfly
+ process-test-classes
+
+ unpack
+
+
+
+
+ org.wildfly
+ wildfly-dist
+ ${version.wildfly}
+ zip
+ false
+ ${project.build.directory}
+
+
+
+
+
+ copy-latest-h2-db-driver
+ process-test-classes
+
+ copy
+
+
+
+
+ com.h2database
+ h2
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${version.maven.resources}
+
+
+ copy-h2-module-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+ src/test/resources
+
+ module.xml
+
+
+
+
+
+
+ copy-wildfly-config-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/standalone/configuration
+
+
+
+ src/test/resources
+
+ int-test-standalone.xml
+
+
+
+
+
+
+
+
+
+
+
+
+ jboss
+ https://repository.jboss.org/nexus/content/groups/public-jboss/
+
+
diff --git a/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleBootstrap.java b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
index d56886abe..2e8596855 100644
--- a/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
+++ b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
@@ -1,57 +1,77 @@
package pro.taskana.example;
-import jakarta.annotation.PostConstruct;
-import jakarta.ejb.EJB;
import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.enterprise.context.Initialized;
import jakarta.enterprise.event.Observes;
-import pro.taskana.classification.api.exceptions.ClassificationNotFoundException;
-import pro.taskana.common.api.exceptions.InvalidArgumentException;
-import pro.taskana.task.api.exceptions.AttachmentPersistenceException;
-import pro.taskana.task.api.exceptions.InvalidOwnerException;
-import pro.taskana.task.api.exceptions.InvalidTaskStateException;
-import pro.taskana.task.api.exceptions.ObjectReferencePersistenceException;
-import pro.taskana.task.api.exceptions.TaskAlreadyExistException;
-import pro.taskana.task.api.exceptions.TaskNotFoundException;
+import jakarta.enterprise.event.Startup;
+import jakarta.inject.Inject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import pro.taskana.classification.api.models.Classification;
+import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.task.api.models.Task;
import pro.taskana.task.internal.models.ObjectReferenceImpl;
-import pro.taskana.workbasket.api.exceptions.NotAuthorizedOnWorkbasketException;
-import pro.taskana.workbasket.api.exceptions.WorkbasketNotFoundException;
+import pro.taskana.workbasket.api.WorkbasketType;
+import pro.taskana.workbasket.api.models.Workbasket;
/** Example Bootstrap Application. */
@ApplicationScoped
public class ExampleBootstrap {
- @EJB private TaskanaEjb taskanaEjb;
+ private static final Logger LOGGER = LoggerFactory.getLogger(ExampleBootstrap.class);
- @PostConstruct
- public void init(@Observes @Initialized(ApplicationScoped.class) Object init)
- throws TaskNotFoundException,
- WorkbasketNotFoundException,
- ClassificationNotFoundException,
- InvalidOwnerException,
- TaskAlreadyExistException,
- InvalidArgumentException,
- AttachmentPersistenceException,
- ObjectReferencePersistenceException,
- NotAuthorizedOnWorkbasketException,
- InvalidTaskStateException {
- System.out.println("---------------------------> Start App");
- ObjectReferenceImpl objRef = new ObjectReferenceImpl();
- objRef.setCompany("aCompany");
- objRef.setSystem("aSystem");
- objRef.setSystemInstance("anInstance");
- objRef.setType("aType");
- objRef.setValue("aValue");
- Task task = taskanaEjb.getTaskService().newTask(null);
- task.setPrimaryObjRef(objRef);
- task = taskanaEjb.getTaskService().createTask(task);
- System.out.println("---------------------------> Task started: " + task.getId());
- taskanaEjb.getTaskService().claim(task.getId());
- System.out.println(
- "---------------------------> Task claimed: "
- + taskanaEjb.getTaskService().getTask(task.getId()).getOwner());
- taskanaEjb.getTaskService().completeTask(task.getId());
- System.out.println("---------------------------> Task completed");
+ private static final String CDIDOMAIN = "CDIDOMAIN";
+ private static final String CLASSIFICATION_TYPE = "T1";
+
+ private final TaskanaEjb taskanaEjb;
+
+ public ExampleBootstrap() {
+ this.taskanaEjb = null;
+ }
+
+ @Inject
+ public ExampleBootstrap(TaskanaEjb taskanaEjb) {
+ this.taskanaEjb = taskanaEjb;
+ }
+
+ /**
+ * The parameter `@Observes Startup` makes sure that the dependency injection framework calls this
+ * method on system startup. And to do that, it needs to call `@PostConstruct start()` first.
+ *
+ * @param startup just the startup event
+ * @throws ExampleStartupException in case of task creation fails
+ */
+ public void init(@Observes Startup startup) throws ExampleStartupException {
+ try {
+ LOGGER.info("---------------------------> Start App -- {}", startup);
+ Workbasket workbasket = taskanaEjb.getWorkbasketService().newWorkbasket("KEY", CDIDOMAIN);
+ workbasket.setName("wb");
+ workbasket.setType(WorkbasketType.PERSONAL);
+ workbasket = taskanaEjb.getWorkbasketService().createWorkbasket(workbasket);
+ Classification classification =
+ taskanaEjb
+ .getClassificationService()
+ .newClassification("TEST", CDIDOMAIN, CLASSIFICATION_TYPE);
+ taskanaEjb.getClassificationService().createClassification(classification);
+ ObjectReferenceImpl objRef = new ObjectReferenceImpl();
+ objRef.setCompany("aCompany");
+ objRef.setSystem("aSystem");
+ objRef.setSystemInstance("anInstance");
+ objRef.setType("aType");
+ objRef.setValue("aValue");
+ Task task = taskanaEjb.getTaskService().newTask(workbasket.getId());
+ task.setClassificationKey(classification.getKey());
+ task.setName("BootstrapTask");
+ task.setPrimaryObjRef(objRef);
+ task = taskanaEjb.getTaskService().createTask(task);
+ LOGGER.info("---------------------------> Task started: {}", task.getId());
+ taskanaEjb.getTaskService().claim(task.getId());
+ LOGGER.info(
+ "---------------------------> Task claimed: {}",
+ taskanaEjb.getTaskService().getTask(task.getId()).getOwner());
+ taskanaEjb.getTaskService().completeTask(task.getId());
+ LOGGER.info("---------------------------> Task completed");
+ } catch (TaskanaException e) {
+ throw new ExampleStartupException(e);
+ }
}
}
diff --git a/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleStartupException.java b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleStartupException.java
new file mode 100644
index 000000000..80cc1ba1a
--- /dev/null
+++ b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/ExampleStartupException.java
@@ -0,0 +1,8 @@
+package pro.taskana.example;
+
+public class ExampleStartupException extends RuntimeException {
+
+ public ExampleStartupException(Throwable cause) {
+ super("Can't bootstrap CDI example application", cause);
+ }
+}
diff --git a/lib/taskana-cdi-example/src/main/java/pro/taskana/example/TaskanaEjb.java b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/TaskanaEjb.java
index 72f294748..8c18e0b1e 100644
--- a/lib/taskana-cdi-example/src/main/java/pro/taskana/example/TaskanaEjb.java
+++ b/lib/taskana-cdi-example/src/main/java/pro/taskana/example/TaskanaEjb.java
@@ -2,15 +2,45 @@ package pro.taskana.example;
import jakarta.ejb.Stateless;
import jakarta.inject.Inject;
+import pro.taskana.classification.api.ClassificationService;
import pro.taskana.task.api.TaskService;
+import pro.taskana.workbasket.api.WorkbasketService;
/** example Taskana EJB. */
@Stateless
public class TaskanaEjb {
- @Inject private TaskService taskService;
+ private final TaskService taskService;
+
+ private final ClassificationService classificationService;
+
+ private final WorkbasketService workbasketService;
+
+ public TaskanaEjb() {
+ this.taskService = null;
+ this.classificationService = null;
+ this.workbasketService = null;
+ }
+
+ @Inject
+ public TaskanaEjb(
+ TaskService taskService,
+ ClassificationService classificationService,
+ WorkbasketService workbasketService) {
+ this.taskService = taskService;
+ this.classificationService = classificationService;
+ this.workbasketService = workbasketService;
+ }
public TaskService getTaskService() {
return taskService;
}
+
+ public ClassificationService getClassificationService() {
+ return classificationService;
+ }
+
+ public WorkbasketService getWorkbasketService() {
+ return workbasketService;
+ }
}
diff --git a/lib/taskana-cdi-example/src/main/resources/META-INF/beans.xml b/lib/taskana-cdi-example/src/main/resources/META-INF/beans.xml
new file mode 100644
index 000000000..3235afa2f
--- /dev/null
+++ b/lib/taskana-cdi-example/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,3 @@
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi-example/src/main/resources/taskana.properties b/lib/taskana-cdi-example/src/main/resources/taskana.properties
index 61c2f89cd..8c44c99cf 100644
--- a/lib/taskana-cdi-example/src/main/resources/taskana.properties
+++ b/lib/taskana-cdi-example/src/main/resources/taskana.properties
@@ -1 +1,19 @@
datasource.jndi=java:jboss/datasources/Taskana
+taskana.domains=CDIDOMAIN
+taskana.classification.types=T1
+taskana.classification.categories.T1=DEFAULT
+# enable or disable the jobscheduler at all
+# set it to false and no jobs are running
+taskana.jobs.scheduler.enabled=true
+# wait time before the first job run
+taskana.jobs.scheduler.initialStartDelay=100
+# sleeping time befor the next job runs
+taskana.jobs.scheduler.period=1
+# timeunit for the initial start delay and the sleeping period
+# Possible values: MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS
+taskana.jobs.scheduler.periodTimeUnit=HOURS
+taskana.jobs.cleanup.task.enable=true
+taskana.jobs.priority.task.enable=true
+taskana.jobs.cleanup.workbasket.enable=true
+taskana.jobs.refresh.user.enable=false
+taskana.jobs.cleanup.history.simple.enable=false
diff --git a/lib/taskana-cdi-example/src/main/webapp/META-INF/MANIFEST.MF b/lib/taskana-cdi-example/src/main/webapp/META-INF/MANIFEST.MF
deleted file mode 100644
index 254272e1c..000000000
--- a/lib/taskana-cdi-example/src/main/webapp/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path:
-
diff --git a/lib/taskana-cdi-example/src/main/webapp/WEB-INF/beans.xml b/lib/taskana-cdi-example/src/main/webapp/WEB-INF/beans.xml
deleted file mode 100644
index df8f4fd28..000000000
--- a/lib/taskana-cdi-example/src/main/webapp/WEB-INF/beans.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
diff --git a/lib/taskana-cdi-example/src/main/webapp/WEB-INF/web.xml b/lib/taskana-cdi-example/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index a0d739cc7..000000000
--- a/lib/taskana-cdi-example/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/lib/taskana-cdi-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java b/lib/taskana-cdi-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java
new file mode 100644
index 000000000..dd5612ffa
--- /dev/null
+++ b/lib/taskana-cdi-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java
@@ -0,0 +1,111 @@
+package pro.taskana.example;
+
+import static org.awaitility.Awaitility.await;
+import static org.awaitility.Durations.ONE_HUNDRED_MILLISECONDS;
+import static org.awaitility.Durations.TWO_SECONDS;
+import static org.hamcrest.CoreMatchers.equalTo;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import org.apache.commons.io.FileUtils;
+import org.h2.jdbc.JdbcSQLNonTransientConnectionException;
+import org.h2.jdbc.JdbcSQLSyntaxErrorException;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(Arquillian.class)
+public class ExampleBootstrapTest {
+
+ @Deployment(testable = false, order = 10)
+ public static Archive> createDeployment() throws Exception {
+ EnterpriseArchive deployment = ShrinkWrap.create(EnterpriseArchive.class, "taskana.ear");
+
+ File[] libs =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importCompileAndRuntimeDependencies()
+ .resolve()
+ .withTransitivity()
+ .asFile();
+ deployment.addAsLibraries(libs);
+
+ JavaArchive ejbModule = ShrinkWrap.create(JavaArchive.class, "taskana.jar");
+ ejbModule.addClasses(TaskanaEjb.class, ExampleBootstrap.class, ExampleStartupException.class);
+ ejbModule.addAsResource("taskana.properties");
+ deployment.addAsModule(ejbModule);
+
+ deployment.addAsManifestResource("META-INF/beans.xml", "beans.xml");
+ return deployment;
+ }
+
+ @BeforeClass
+ public static void cleanTaskanaH2DataFolder() throws IOException {
+ // Delete Taskana folder if exists
+ Path taskanaH2Data = Path.of(System.getProperty("user.home"), "taskana-h2-data");
+ if (Files.exists(taskanaH2Data)) {
+ FileUtils.deleteDirectory(taskanaH2Data.toFile());
+ }
+ }
+
+ @Test
+ public void should_count_tasks_after_example_cdi_application_was_deployed() throws Exception {
+ // this test method is started that fast that the commit
+ // from pro.taskana.example.ExampleBootstrap.init is not completed
+ // so we need to wait here a bit
+ // https://www.baeldung.com/awaitility-testing
+ await()
+ .atLeast(ONE_HUNDRED_MILLISECONDS)
+ .atMost(TWO_SECONDS)
+ .with()
+ .pollInterval(ONE_HUNDRED_MILLISECONDS)
+ .until(
+ () -> {
+ try {
+ return countTasksByName("BootstrapTask");
+ } catch (JdbcSQLSyntaxErrorException | JdbcSQLNonTransientConnectionException e) {
+ // ignore this Exception, because in the beginning the schema is not created
+ return 0;
+ }
+ },
+ equalTo(1));
+ }
+
+ private Connection getConnection() throws Exception {
+ return DriverManager.getConnection(
+ "jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;"
+ + "IGNORECASE=TRUE;LOCK_MODE=0",
+ "sa",
+ "");
+ }
+
+ private int countTasksByName(String taskName) throws Exception {
+
+ Class.forName("org.h2.Driver");
+ int resultCount = 0;
+ try (Connection conn = getConnection();
+ PreparedStatement statement =
+ conn.prepareStatement("SELECT COUNT(ID) FROM TASKANA.TASK WHERE NAME = ?")) {
+ statement.setString(1, taskName);
+ ResultSet rs = statement.executeQuery();
+
+ while (rs.next()) {
+ resultCount = rs.getInt(1);
+ }
+ }
+ return resultCount;
+ }
+}
diff --git a/lib/taskana-cdi-example/src/test/resources/arquillian.xml b/lib/taskana-cdi-example/src/test/resources/arquillian.xml
new file mode 100644
index 000000000..3fcbf32bf
--- /dev/null
+++ b/lib/taskana-cdi-example/src/test/resources/arquillian.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ target/wildfly-27.0.1.Final
+ int-test-standalone.xml
+
+
+
+
+
+ -Djava.util.logging.manager=org.jboss.logmanager.LogManager
+
+
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi-example/src/test/resources/int-test-standalone.xml b/lib/taskana-cdi-example/src/test/resources/int-test-standalone.xml
new file mode 100644
index 000000000..e08f36936
--- /dev/null
+++ b/lib/taskana-cdi-example/src/test/resources/int-test-standalone.xml
@@ -0,0 +1,673 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
+ h2
+
+ sa
+
+
+
+
+
+ jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0
+
+ h2
+
+ sa
+
+
+
+
+
+ org.h2.jdbcx.JdbcDataSource
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${jboss.bind.address:127.0.0.1}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi-example/src/test/resources/module.xml b/lib/taskana-cdi-example/src/test/resources/module.xml
new file mode 100644
index 000000000..933f1e534
--- /dev/null
+++ b/lib/taskana-cdi-example/src/test/resources/module.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/taskana-cdi/pom.xml b/lib/taskana-cdi/pom.xml
index b638ea470..666f1280b 100644
--- a/lib/taskana-cdi/pom.xml
+++ b/lib/taskana-cdi/pom.xml
@@ -18,7 +18,7 @@
org.wildfly.bom
- wildfly-jakartaee8
+ wildfly-ee
${version.wildfly}
import
pom
@@ -35,33 +35,14 @@
pro.taskana
- taskana-common-logging
+ taskana-core
${project.version}
jakarta.platform
jakarta.jakartaee-api
${version.jakartaee-api}
-
-
- jakarta.enterprise
- jakarta.enterprise.cdi-api
- ${version.jakarta.enterprise.cdi-api}
-
-
- jakarta.annotation
- jakarta.annotation-api
- ${version.jakarta.annotation-api}
-
-
- jakarta.inject
- jakarta.inject-api
- ${version.jakarta.inject-api}
-
-
- pro.taskana
- taskana-core
- ${project.version}
+ provided
@@ -119,7 +100,7 @@
org.wildfly.arquillian
wildfly-arquillian-container-managed
- 3.0.1.Final
+ ${version.arquillian.managed.wildfly}
test
@@ -195,6 +176,26 @@
+
+ copy-wildfly-config-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/standalone/configuration
+
+
+
+ src/test/resources
+
+ int-test-standalone.xml
+
+
+
+
+
@@ -203,7 +204,7 @@
jboss
- http://repository.jboss.org/nexus/content/groups/public-jboss/
+ https://repository.jboss.org/nexus/content/groups/public-jboss/
diff --git a/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaCdiStartupException.java b/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaCdiStartupException.java
new file mode 100644
index 000000000..a4e716784
--- /dev/null
+++ b/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaCdiStartupException.java
@@ -0,0 +1,8 @@
+package pro.taskana.common.internal;
+
+public class TaskanaCdiStartupException extends RuntimeException {
+
+ public TaskanaCdiStartupException(Throwable cause) {
+ super("Can't init TaskanaProducers", cause);
+ }
+}
diff --git a/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaProducers.java b/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaProducers.java
index 76d499d13..5e475c1b6 100644
--- a/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaProducers.java
+++ b/lib/taskana-cdi/src/main/java/pro/taskana/common/internal/TaskanaProducers.java
@@ -2,6 +2,8 @@ package pro.taskana.common.internal;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
+import jakarta.enterprise.event.Startup;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Inject;
import java.io.IOException;
@@ -30,10 +32,31 @@ public class TaskanaProducers {
private static final String TASKANA_PROPERTIES = "taskana.properties";
- @Inject private TaskanaEngine taskanaEngine;
-
+ // initalized during post construct
private TaskanaConfiguration taskanaConfiguration;
+ private final TaskanaEngine taskanaEngine;
+
+ public TaskanaProducers() {
+ this.taskanaEngine = null;
+ }
+
+ @Inject
+ public TaskanaProducers(TaskanaEngine taskanaEngine) {
+ this.taskanaEngine = taskanaEngine;
+ }
+
+ /**
+ * The parameter `@Observes Startup` makes sure that the dependency injection framework calls this
+ * method on system startup. And to do that, it needs to call `@PostConstruct start()` first.
+ *
+ * @param startup just the startup event
+ */
+ @SuppressWarnings("unused")
+ private void forceEagerInitialization(@Observes Startup startup) {
+ LOGGER.info("startup={}", startup);
+ }
+
@PostConstruct
public void init() {
// Load Properties and get Datasource via Context
@@ -57,7 +80,7 @@ public class TaskanaProducers {
.initTaskanaProperties()
.build();
} catch (NamingException | SQLException | IOException e) {
- LOGGER.error("Could not start Taskana: ", e);
+ throw new TaskanaCdiStartupException(e);
}
}
diff --git a/lib/taskana-cdi/src/main/resources/META-INF/beans.xml b/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
index b02d9578c..3235afa2f 100644
--- a/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
+++ b/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
@@ -1,8 +1,3 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaCdiTestRestController.java b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaCdiTestRestController.java
index 9f745e8a4..df06ea0be 100644
--- a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaCdiTestRestController.java
+++ b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaCdiTestRestController.java
@@ -1,6 +1,5 @@
package pro.taskana;
-import jakarta.ejb.EJB;
import jakarta.inject.Inject;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
@@ -24,9 +23,21 @@ public class TaskanaCdiTestRestController {
private static final String CDIDOMAIN = "CDIDOMAIN";
private static final String CLASSIFICATION_TYPE = "T1";
- @EJB private TaskanaEjb taskanaEjb;
+ private final TaskanaEjb taskanaEjb;
- @Inject private ClassificationService classificationService;
+ private final ClassificationService classificationService;
+
+ public TaskanaCdiTestRestController() {
+ this.taskanaEjb = null;
+ this.classificationService = null;
+ }
+
+ @Inject
+ public TaskanaCdiTestRestController(
+ TaskanaEjb taskanaEjb, ClassificationService classificationService) {
+ this.taskanaEjb = taskanaEjb;
+ this.classificationService = classificationService;
+ }
@GET
public Response startTask() throws Exception {
diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaEjb.java b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaEjb.java
index bc2822fd8..8d74d2c3a 100644
--- a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaEjb.java
+++ b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaEjb.java
@@ -11,11 +11,27 @@ import pro.taskana.workbasket.api.WorkbasketService;
@Stateless
public class TaskanaEjb {
- @Inject private TaskService taskService;
+ private final TaskService taskService;
- @Inject private ClassificationService classificationService;
+ private final ClassificationService classificationService;
- @Inject private WorkbasketService workbasketService;
+ private final WorkbasketService workbasketService;
+
+ public TaskanaEjb() {
+ this.taskService = null;
+ this.classificationService = null;
+ this.workbasketService = null;
+ }
+
+ @Inject
+ public TaskanaEjb(
+ TaskService taskService,
+ ClassificationService classificationService,
+ WorkbasketService workbasketService) {
+ this.taskService = taskService;
+ this.classificationService = classificationService;
+ this.workbasketService = workbasketService;
+ }
public TaskService getTaskService() {
return taskService;
diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java b/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
index e438ef42c..7fad289d9 100644
--- a/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
+++ b/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
@@ -49,14 +49,15 @@ public class TaskanaProducersTest {
File[] libs =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeAndTestDependencies()
+ .importCompileAndRuntimeDependencies()
.resolve()
.withTransitivity()
.asFile();
deployment.addAsLibraries(libs);
JavaArchive ejbModule = ShrinkWrap.create(JavaArchive.class, "taskana.jar");
- ejbModule.addClasses(TaskanaProducers.class, TaskanaEjb.class);
+ ejbModule.addClasses(
+ TaskanaProducers.class, TaskanaEjb.class, TaskanaCdiStartupException.class);
ejbModule.addAsResource("taskana.properties");
deployment.addAsModule(ejbModule);
diff --git a/lib/taskana-cdi/src/test/resources/arquillian.xml b/lib/taskana-cdi/src/test/resources/arquillian.xml
index 909953c08..3fcbf32bf 100644
--- a/lib/taskana-cdi/src/test/resources/arquillian.xml
+++ b/lib/taskana-cdi/src/test/resources/arquillian.xml
@@ -2,22 +2,16 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
-
+
- target/wildfly-25.0.1.Final
- ../../../../src/test/resources/int-test-standalone.xml
-
+ target/wildfly-27.0.1.Final
+ int-test-standalone.xml
-
-
- --add-opens java.base/java.util=ALL-UNNAMED
- -Dh2.bindAddress=127.0.0.1
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
diff --git a/lib/taskana-cdi/src/test/resources/int-test-standalone.xml b/lib/taskana-cdi/src/test/resources/int-test-standalone.xml
index ffdf2454c..356454a3c 100644
--- a/lib/taskana-cdi/src/test/resources/int-test-standalone.xml
+++ b/lib/taskana-cdi/src/test/resources/int-test-standalone.xml
@@ -1,6 +1,6 @@
-
+
-
+
@@ -12,7 +12,6 @@
-
@@ -24,6 +23,7 @@
+
@@ -95,6 +95,9 @@
+
+
+
@@ -115,7 +118,7 @@
-
+
@@ -128,7 +131,7 @@
-
+
-
+
+
+
+
+
+
@@ -209,7 +221,7 @@
managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
-
+
@@ -233,13 +245,9 @@
-
-
+
+
-
-
-
@@ -267,7 +275,7 @@
-
@@ -416,31 +424,43 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ modules="org.wildfly.clustering.singleton.server">
@@ -464,10 +484,9 @@
-
-
+
@@ -496,13 +515,12 @@
-
-
+
-
+
@@ -555,12 +573,12 @@
-
+
-
+
@@ -581,10 +599,11 @@
statistics-enabled="${wildfly.transactions.statistics-enabled:${wildfly.statistics-enabled:false}}"/>
-
+
-
+
diff --git a/lib/taskana-cdi/src/test/resources/module.xml b/lib/taskana-cdi/src/test/resources/module.xml
index 6ef36ea27..933f1e534 100644
--- a/lib/taskana-cdi/src/test/resources/module.xml
+++ b/lib/taskana-cdi/src/test/resources/module.xml
@@ -1,13 +1,28 @@
-
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/taskana-core/pom.xml b/lib/taskana-core/pom.xml
index 68c1846db..c7f9ae008 100644
--- a/lib/taskana-core/pom.xml
+++ b/lib/taskana-core/pom.xml
@@ -65,8 +65,7 @@
org.mockito
- ${version.mockito-inline}
- mockito-inline
+ mockito-core
test
diff --git a/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleBootstrap.java b/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
index 1923b4e99..a32aea1e9 100644
--- a/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
+++ b/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleBootstrap.java
@@ -1,11 +1,14 @@
package pro.taskana.example;
import jakarta.annotation.PostConstruct;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import pro.taskana.classification.api.models.Classification;
import pro.taskana.common.api.TaskanaEngine;
+import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.models.Task;
import pro.taskana.task.internal.models.ObjectReferenceImpl;
@@ -17,40 +20,52 @@ import pro.taskana.workbasket.api.models.Workbasket;
@Transactional
public class ExampleBootstrap {
- @Autowired private TaskService taskService;
+ private static final Logger LOGGER = LoggerFactory.getLogger(ExampleBootstrap.class);
- @Autowired private TaskanaEngine taskanaEngine;
+ private final TaskService taskService;
+
+ private final TaskanaEngine taskanaEngine;
+
+ public ExampleBootstrap(
+ @Autowired TaskService taskService, @Autowired TaskanaEngine taskanaEngine) {
+ this.taskService = taskService;
+ this.taskanaEngine = taskanaEngine;
+ }
@PostConstruct
- public void test() throws Exception {
- System.out.println("---------------------------> Start App");
+ public void postConstruct() throws Exception {
+ try {
+ LOGGER.info("---------------------------> Start App");
- Workbasket wb = taskanaEngine.getWorkbasketService().newWorkbasket("workbasket", "DOMAIN_A");
- wb.setName("workbasket");
- wb.setType(WorkbasketType.GROUP);
- taskanaEngine.getWorkbasketService().createWorkbasket(wb);
- Classification classification =
- taskanaEngine.getClassificationService().newClassification("TEST", "DOMAIN_A", "TASK");
- classification.setServiceLevel("P1D");
- taskanaEngine.getClassificationService().createClassification(classification);
+ Workbasket wb = taskanaEngine.getWorkbasketService().newWorkbasket("workbasket", "DOMAIN_A");
+ wb.setName("workbasket");
+ wb.setType(WorkbasketType.GROUP);
+ taskanaEngine.getWorkbasketService().createWorkbasket(wb);
+ Classification classification =
+ taskanaEngine.getClassificationService().newClassification("TEST", "DOMAIN_A", "TASK");
+ classification.setServiceLevel("P1D");
+ taskanaEngine.getClassificationService().createClassification(classification);
- Task task = taskanaEngine.getTaskService().newTask(wb.getId());
- task.setName("Spring example task");
- task.setClassificationKey(classification.getKey());
- ObjectReferenceImpl objRef = new ObjectReferenceImpl();
- objRef.setCompany("aCompany");
- objRef.setSystem("aSystem");
- objRef.setSystemInstance("anInstance");
- objRef.setType("aType");
- objRef.setValue("aValue");
- task.setPrimaryObjRef(objRef);
- task = taskService.createTask(task);
- System.out.println("---------------------------> Task started: " + task.getId());
- taskService.claim(task.getId());
- System.out.println(
- "---------------------------> Task claimed: "
- + taskService.getTask(task.getId()).getOwner());
- taskService.forceCompleteTask(task.getId());
- System.out.println("---------------------------> Task completed");
+ Task task = taskanaEngine.getTaskService().newTask(wb.getId());
+ task.setName("Spring example task");
+ task.setClassificationKey(classification.getKey());
+ ObjectReferenceImpl objRef = new ObjectReferenceImpl();
+ objRef.setCompany("aCompany");
+ objRef.setSystem("aSystem");
+ objRef.setSystemInstance("anInstance");
+ objRef.setType("aType");
+ objRef.setValue("aValue");
+ task.setPrimaryObjRef(objRef);
+ task = taskService.createTask(task);
+ LOGGER.info("---------------------------> Task started: {}", task.getId());
+ taskService.claim(task.getId());
+ LOGGER.info(
+ "---------------------------> Task claimed: {}",
+ taskService.getTask(task.getId()).getOwner());
+ taskService.forceCompleteTask(task.getId());
+ LOGGER.info("---------------------------> Task completed");
+ } catch (TaskanaException e) {
+ throw new ExampleStartupException(e);
+ }
}
}
diff --git a/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleStartupException.java b/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleStartupException.java
new file mode 100644
index 000000000..6259f0850
--- /dev/null
+++ b/lib/taskana-spring-example/src/main/java/pro/taskana/example/ExampleStartupException.java
@@ -0,0 +1,8 @@
+package pro.taskana.example;
+
+public class ExampleStartupException extends RuntimeException {
+
+ public ExampleStartupException(Throwable cause) {
+ super("Can't bootstrap Spring example application", cause);
+ }
+}
diff --git a/lib/taskana-spring-example/src/main/java/pro/taskana/example/TaskanaConfig.java b/lib/taskana-spring-example/src/main/java/pro/taskana/example/TaskanaConfig.java
index e2c23c107..f66f315d2 100644
--- a/lib/taskana-spring-example/src/main/java/pro/taskana/example/TaskanaConfig.java
+++ b/lib/taskana-spring-example/src/main/java/pro/taskana/example/TaskanaConfig.java
@@ -96,8 +96,8 @@ public class TaskanaConfig {
}
@Bean
- public ExampleBootstrap exampleBootstrap() {
- return new ExampleBootstrap();
+ public ExampleBootstrap exampleBootstrap(TaskService taskService, TaskanaEngine taskanaEngine) {
+ return new ExampleBootstrap(taskService, taskanaEngine);
}
@Profile("inmemorydb")
diff --git a/lib/taskana-spring-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java b/lib/taskana-spring-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java
new file mode 100644
index 000000000..75232d887
--- /dev/null
+++ b/lib/taskana-spring-example/src/test/java/pro/taskana/example/ExampleBootstrapTest.java
@@ -0,0 +1,41 @@
+package pro.taskana.example;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.ClassOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestClassOrder;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(
+ classes = TaskanaConfigTestApplication.class,
+ webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ActiveProfiles({"inmemorydb", "dev"})
+@Import({TransactionalJobsConfiguration.class})
+// This BootstrapTest must be executed before all other tests
+// especially before TaskanaTransactionIntTest (There is everything deleted...
+// here we only test the execution of PostConstruct method
+@TestClassOrder(ClassOrderer.OrderAnnotation.class)
+@Order(1)
+class ExampleBootstrapTest {
+
+ @Autowired private JdbcTemplate jdbcTemplate;
+
+ @Test
+ void should_count_tasks_after_psotConstruc_method_was_executed() {
+ Integer actualNumberOfTasks = jdbcTemplate.queryForObject(
+ "SELECT COUNT(ID) FROM TASK WHERE NAME = ?",
+ Integer.class,
+ "Spring example task");
+
+ assertThat(actualNumberOfTasks).isEqualTo(1);
+ }
+}
diff --git a/lib/taskana-spring-example/src/test/java/pro/taskana/example/TaskanaTransactionIntTest.java b/lib/taskana-spring-example/src/test/java/pro/taskana/example/TaskanaTransactionIntTest.java
index 9fdec444c..e6bf0f5f8 100644
--- a/lib/taskana-spring-example/src/test/java/pro/taskana/example/TaskanaTransactionIntTest.java
+++ b/lib/taskana-spring-example/src/test/java/pro/taskana/example/TaskanaTransactionIntTest.java
@@ -9,7 +9,10 @@ import java.util.List;
import javax.sql.DataSource;
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.ClassOrderer;
+import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestClassOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -47,6 +50,8 @@ import pro.taskana.workbasket.internal.models.WorkbasketImpl;
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles({"inmemorydb", "dev"})
@Import({TransactionalJobsConfiguration.class})
+@TestClassOrder(ClassOrderer.OrderAnnotation.class)
+@Order(2)
class TaskanaTransactionIntTest {
private static final String INTERNAL_SERVER_ERROR_MESSAGE = "Internal Server Error";
@@ -59,6 +64,7 @@ class TaskanaTransactionIntTest {
@BeforeEach
void before() {
+
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.execute("DELETE FROM TASK");
jdbcTemplate.execute("DELETE FROM WORKBASKET");
diff --git a/lib/taskana-spring-example/src/test/resources/junit-platform.properties b/lib/taskana-spring-example/src/test/resources/junit-platform.properties
new file mode 100644
index 000000000..b7f5acdc8
--- /dev/null
+++ b/lib/taskana-spring-example/src/test/resources/junit-platform.properties
@@ -0,0 +1,2 @@
+junit.jupiter.testclass.order.default=org.junit.jupiter.api.ClassOrderer$OrderAnnotation
+
diff --git a/lib/taskana-test-api/pom.xml b/lib/taskana-test-api/pom.xml
index 2aacd5ca2..ce8a47934 100644
--- a/lib/taskana-test-api/pom.xml
+++ b/lib/taskana-test-api/pom.xml
@@ -35,8 +35,7 @@
org.mockito
- ${version.mockito-inline}
- mockito-inline
+ mockito-core
org.testcontainers
diff --git a/pom.xml b/pom.xml
index 29114f9ed..055ee6d55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,24 +65,21 @@
2.1.1
- 3.0.0
+ 3.0.0
3.1.5
- 2.1.1
+ 3.0.2
- 25.0.1.Final
+ 27.0.1.Final
7.20.0
- 2.7.0.Final
10.0.0
- 4.0.1
- 2.0.1
6.0.0
- 1.5.0.Final
- 3.0.1.Final
+ 1.7.1.Final
+ 5.0.1.Final
3.24.2
@@ -93,7 +90,6 @@
3.0.1
2.0.11
1.19.0
- 5.2.0
1.14.0
@@ -101,9 +97,9 @@
0.3.0
- 2.3.3
- 2.3.0.1
- 2.3.8
+ 4.0.1
+ 4.0.3
+ 4.0.3
2.1.2
@@ -128,9 +124,12 @@
common
lib
- rest
-
+
history
+ rest
ci/taskana-sonar-test-coverage
routing
diff --git a/rest/taskana-rest-spring-example-common/pom.xml b/rest/taskana-rest-spring-example-common/pom.xml
index acc226842..a0db7459e 100644
--- a/rest/taskana-rest-spring-example-common/pom.xml
+++ b/rest/taskana-rest-spring-example-common/pom.xml
@@ -50,7 +50,7 @@
org.springframework.plugin
spring-plugin-core
- ${version.spring.core}
+ ${version.spring.plugin.core}
org.springframework.ldap
diff --git a/rest/taskana-rest-spring-example-wildfly/pom.xml b/rest/taskana-rest-spring-example-wildfly/pom.xml
index 91306e758..d7fcbf7d2 100644
--- a/rest/taskana-rest-spring-example-wildfly/pom.xml
+++ b/rest/taskana-rest-spring-example-wildfly/pom.xml
@@ -19,7 +19,7 @@
org.wildfly.bom
- wildfly-jakartaee8
+ wildfly-ee
${version.wildfly}
import
pom
@@ -62,7 +62,7 @@
org.springframework.plugin
spring-plugin-core
- ${version.spring.core}
+ ${version.spring.plugin.core}
jakarta.servlet
@@ -218,6 +218,26 @@
+
+ copy-wildfly-config-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/standalone/configuration
+
+
+
+ src/test/resources
+
+ int-test-standalone.xml
+
+
+
+
+
copy-documentation-to-static-folder
prepare-package
@@ -245,7 +265,7 @@
jboss
- http://repository.jboss.org/nexus/content/groups/public-jboss/
+ https://repository.jboss.org/nexus/content/groups/public-jboss/
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java
index d0a30ac9a..e7b049b6d 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java
@@ -77,7 +77,7 @@ public class AbstractAccTest {
protected String parseServerLog() throws Exception {
// TO-DO: make log4j log into rollingFile from log4j.xml
- File file = new File("target/wildfly-25.0.1.Final/standalone/log/server.log");
+ File file = new File("target/wildfly-27.0.1.Final/standalone/log/server.log");
BufferedReader br = new BufferedReader(new FileReader(file));
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyTest.java
index ea282f9e6..66baa4253 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyTest.java
@@ -51,7 +51,7 @@ public class TaskanaWildflyTest extends AbstractAccTest {
File[] files =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeDependencies()
+ .importCompileAndRuntimeDependencies()
.resolve()
.withTransitivity()
.asFile();
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java
index 791db072b..114b63cde 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java
@@ -57,8 +57,7 @@ public class TaskanaWildflyWithHistoryLoggerEnabledTest extends AbstractAccTest
File[] files =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeDependencies()
- .addDependency(historyLoggerDependency)
+ .importCompileAndRuntimeDependencies()
.resolve()
.withTransitivity()
.asFile();
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java
index ac2e08ef2..c286e69a4 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java
@@ -73,7 +73,7 @@ public class TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest extends
File[] files =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeDependencies()
+ .importCompileAndRuntimeDependencies()
.addDependency(simpleHistoryDependency)
.addDependency(historyLoggerDependency)
.resolve()
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java
index 1224ef318..b97705bf2 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java
@@ -55,14 +55,13 @@ public class TaskanaWildflyWithSimpleHistoryEnabledTest extends AbstractAccTest
DEPENDENCY_VERSION,
PackagingType.JAR,
null);
-
MavenDependency simpleHistoryDependency =
new MavenDependencyImpl(simpleHistoryCoordinate, ScopeType.TEST, false);
File[] files =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeDependencies()
+ .importCompileAndRuntimeDependencies()
.addDependency(simpleHistoryDependency)
.resolve()
.withTransitivity()
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithUserConfigTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithUserConfigTest.java
index 44efb8e26..b38521ea2 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithUserConfigTest.java
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithUserConfigTest.java
@@ -54,7 +54,7 @@ public class TaskanaWildflyWithUserConfigTest extends AbstractAccTest {
File[] files =
Maven.resolver()
.loadPomFromFile("pom.xml")
- .importRuntimeDependencies()
+ .importCompileAndRuntimeDependencies()
.resolve()
.withTransitivity()
.asFile();
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/arquillian.xml b/rest/taskana-rest-spring-example-wildfly/src/test/resources/arquillian.xml
index 1b3f293b7..10043bef1 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/arquillian.xml
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/arquillian.xml
@@ -2,24 +2,18 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
-
-
+
+
- target/wildfly-25.0.1.Final
- ../../../../src/test/resources/int-test-standalone.xml
-
-
-
-
-
-
-
-
+ target/wildfly-27.0.1.Final
+ int-test-standalone.xml
+
+
+
+
+
- --add-opens java.base/java.util=ALL-UNNAMED
--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED
- -Dh2.bindAddress=127.0.0.1
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/int-test-standalone.xml b/rest/taskana-rest-spring-example-wildfly/src/test/resources/int-test-standalone.xml
index 3e2855a46..d0084b89f 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/int-test-standalone.xml
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/int-test-standalone.xml
@@ -1,6 +1,6 @@
-
+
-
+
@@ -12,7 +12,6 @@
-
@@ -24,6 +23,7 @@
+
@@ -168,7 +168,7 @@
-
+
@@ -181,7 +181,7 @@
-
+
- org.postgresql.Driver
-
+ org.postgresql.Driver
@@ -233,7 +232,16 @@
runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
-
+
+
+
+
+
+
@@ -275,7 +283,7 @@
managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
-
+
@@ -299,13 +307,9 @@
-
-
+
+
-
-
-
@@ -333,7 +337,7 @@
-
@@ -513,31 +517,43 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ modules="org.wildfly.clustering.singleton.server">
@@ -561,10 +577,9 @@
-
-
+
@@ -593,13 +608,12 @@
-
-
+
-
+
@@ -652,12 +666,12 @@
-
+
-
+
@@ -678,10 +692,11 @@
statistics-enabled="${wildfly.transactions.statistics-enabled:${wildfly.statistics-enabled:false}}"/>
-
+
-
@@ -702,7 +716,7 @@
+ header-name="Server" header-value="WildFly/27"/>
@@ -726,7 +740,7 @@
-
+
diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml b/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml
index 6fb52c877..00aacf6e6 100644
--- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml
+++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml
@@ -1,13 +1,15 @@
-
+
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
diff --git a/rest/taskana-rest-spring/pom.xml b/rest/taskana-rest-spring/pom.xml
index c36bc5f7f..9464b502a 100644
--- a/rest/taskana-rest-spring/pom.xml
+++ b/rest/taskana-rest-spring/pom.xml
@@ -126,7 +126,7 @@
org.springframework.plugin
spring-plugin-core
- ${version.spring.core}
+ ${version.spring.plugin.core}
test
diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java
index afe334153..4f5b35b7d 100644
--- a/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java
+++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/task/rest/TaskController.java
@@ -600,7 +600,7 @@ public class TaskController {
if (!taskRepresentationModel.getAttachments().stream()
.filter(att -> Objects.nonNull(att.getTaskId()))
.filter(att -> !att.getTaskId().equals(taskRepresentationModel.getTaskId()))
- .collect(Collectors.toList())
+ .toList()
.isEmpty()) {
throw new InvalidArgumentException(
"An attachments' taskId must be empty or equal to the id of the task it belongs to");
diff --git a/routing/taskana-routing-rest/pom.xml b/routing/taskana-routing-rest/pom.xml
index 12d3c2da6..9f4e9ec3c 100644
--- a/routing/taskana-routing-rest/pom.xml
+++ b/routing/taskana-routing-rest/pom.xml
@@ -37,14 +37,14 @@
${version.jakarta.xml.bind-api}
- com.sun.xml.bind
+ org.glassfish.jaxb
jaxb-core
- ${version.jaxb-core}
+ ${version.glassfish-jaxb-core}
- com.sun.xml.bind
- jaxb-impl
- ${version.jaxb-impl}
+ org.glassfish.jaxb
+ jaxb-runtime
+ ${version.glassfish-jaxb-runtime}
jakarta.activation
@@ -105,7 +105,7 @@
org.springframework.plugin
spring-plugin-core
- ${version.spring.core}
+ ${version.spring.plugin.core}
test