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 181191aaf..81d392a15 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 @@ -6,6 +6,7 @@ import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.history.api.TaskanaHistory; import pro.taskana.history.api.TaskanaHistoryEvent; @@ -16,26 +17,30 @@ public final class HistoryEventProducer { private static final Logger LOGGER = LoggerFactory.getLogger(HistoryEventProducer.class); + TaskanaEngineConfiguration taskanaEngineConfiguration; private static HistoryEventProducer emitterInstance; private ServiceLoader serviceLoader; private boolean enabled = false; - public static synchronized HistoryEventProducer getInstance() { + + public static synchronized HistoryEventProducer getInstance(TaskanaEngineConfiguration taskanaEngineConfiguration) { if (emitterInstance == null) { - emitterInstance = new HistoryEventProducer(); + emitterInstance = new HistoryEventProducer(taskanaEngineConfiguration); } return emitterInstance; } public static boolean isHistoryEnabled() { - return getInstance().isEnabled(); + return getInstance(null).isEnabled(); } - private HistoryEventProducer() { + private HistoryEventProducer(TaskanaEngineConfiguration taskanaEngineConfiguration) { + this.taskanaEngineConfiguration = taskanaEngineConfiguration; serviceLoader = ServiceLoader.load(TaskanaHistory.class); Iterator serviceIterator = serviceLoader.iterator(); while (serviceIterator.hasNext()) { TaskanaHistory history = serviceIterator.next(); + history.initialize(taskanaEngineConfiguration); LOGGER.info("Registered history provider: {}", history.getClass().getName()); enabled = true; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistory.java b/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistory.java index 5fae29357..df71a0b82 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistory.java +++ b/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistory.java @@ -1,10 +1,20 @@ package pro.taskana.history.api; +import pro.taskana.configuration.TaskanaEngineConfiguration; + /** * Interface for TASKANA History Service Provider. */ public interface TaskanaHistory { + /** + * Initialize TaskanaHistory service. + * + * @param taskanaEngineConfiguration + * {@link TaskanaEngineConfiguration} The Taskana engine configuration for needed initialization. + */ + void initialize(TaskanaEngineConfiguration taskanaEngineConfiguration); + /** * Create a new history event. * diff --git a/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistoryEvent.java b/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistoryEvent.java index a67ac4cde..84242a659 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistoryEvent.java +++ b/lib/taskana-core/src/main/java/pro/taskana/history/api/TaskanaHistoryEvent.java @@ -9,7 +9,7 @@ import pro.taskana.security.CurrentUserContext; */ public class TaskanaHistoryEvent { - protected long id; + protected String id; protected String type; protected String userId; protected Instant created; @@ -19,11 +19,11 @@ public class TaskanaHistoryEvent { userId = CurrentUserContext.getUserid(); } - public long getId() { + public String getId() { return id; } - public void setId(long id) { + public void setId(String id) { this.id = id; } 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 b17964a05..cae0cb77e 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 @@ -68,7 +68,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { this.taskanaEngineConfiguration = taskanaEngineConfiguration; createTransactionFactory(taskanaEngineConfiguration.getUseManagedTransactions()); this.sessionManager = createSqlSessionManager(); - this.historyEventProducer = HistoryEventProducer.getInstance(); + this.historyEventProducer = HistoryEventProducer.getInstance(taskanaEngineConfiguration); } public static TaskanaEngine createTaskanaEngine(TaskanaEngineConfiguration taskanaEngineConfiguration) { diff --git a/lib/taskana-spring-example/src/main/java/pro/taskana/TaskanaConfig.java b/lib/taskana-spring-example/src/main/java/pro/taskana/TaskanaConfig.java index b1d7e4129..24e8c46aa 100644 --- a/lib/taskana-spring-example/src/main/java/pro/taskana/TaskanaConfig.java +++ b/lib/taskana-spring-example/src/main/java/pro/taskana/TaskanaConfig.java @@ -15,10 +15,6 @@ import org.springframework.context.annotation.PropertySource; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; -import pro.taskana.ClassificationService; -import pro.taskana.TaskService; -import pro.taskana.TaskanaEngine; -import pro.taskana.WorkbasketService; import pro.taskana.configuration.SpringTaskanaEngineConfiguration; /** @@ -93,6 +89,6 @@ public class TaskanaConfig { @Bean public ExampleBootstrap exampleBootstrap() { - return new ExampleBootstrap() ; + return new ExampleBootstrap(); } }