From 271e293969fd50acf4a45d46ebf79f64849ae77c Mon Sep 17 00:00:00 2001 From: Mustapha Zorgati <15628173+mustaphazorgati@users.noreply.github.com> Date: Thu, 18 Jul 2019 12:10:45 +0200 Subject: [PATCH] TSK-865: seperated taskanaEngine in two engines (internal + external) --- .../main/java/pro/taskana/TaskanaEngine.java | 57 +++++++ .../taskana/history/HistoryEventProducer.java | 34 ++--- ...AbstractWorkbasketAccessItemQueryImpl.java | 8 +- .../impl/CategoryReportBuilderImpl.java | 4 +- .../taskana/impl/ClassificationQueryImpl.java | 14 +- .../impl/ClassificationReportBuilderImpl.java | 6 +- .../impl/ClassificationServiceImpl.java | 23 ++- .../CustomFieldValueReportBuilderImpl.java | 4 +- .../java/pro/taskana/impl/JobServiceImpl.java | 9 +- .../impl/ObjectReferenceQueryImpl.java | 6 +- .../taskana/impl/TaskMonitorServiceImpl.java | 19 +-- .../java/pro/taskana/impl/TaskQueryImpl.java | 44 +++--- .../pro/taskana/impl/TaskServiceImpl.java | 114 ++++++++------ .../impl/TaskStatusReportBuilderImpl.java | 8 +- .../pro/taskana/impl/TaskanaEngineImpl.java | 142 +++++++++--------- .../impl/TimeIntervalReportBuilderImpl.java | 15 +- .../impl/TimestampReportBuilderImpl.java | 4 +- .../impl/WorkbasketAccessItemQueryImpl.java | 9 +- .../pro/taskana/impl/WorkbasketQueryImpl.java | 12 +- .../impl/WorkbasketReportBuilderImpl.java | 6 +- .../taskana/impl/WorkbasketServiceImpl.java | 58 +++---- .../history/TaskEventProducerTest.java | 7 +- .../acceptance/task/CreateTaskAccTest.java | 18 ++- .../acceptance/task/QueryTasksAccTest.java | 21 ++- .../impl/CategoryReportBuilderImplTest.java | 60 +++++--- .../impl/ClassificationQueryImplTest.java | 17 +-- .../ClassificationReportBuilderImplTest.java | 87 ++++++----- .../impl/ClassificationServiceImplTest.java | 49 +----- ...CustomFieldValueReportBuilderImplTest.java | 47 +++--- .../impl/ObjectReferenceQueryImplTest.java | 3 +- .../pro/taskana/impl/TaskQueryImplTest.java | 23 ++- .../pro/taskana/impl/TaskServiceImplTest.java | 43 +++--- .../impl/TaskStatusReportBuilderImplTest.java | 32 ++-- .../impl/TaskanaEngineProxyForTest.java | 14 +- .../WorkbasketAccessItemQueryImplTest.java | 17 +-- .../taskana/impl/WorkbasketQueryImplTest.java | 16 +- .../impl/WorkbasketReportBuilderImplTest.java | 80 +++++----- .../impl/WorkbasketServiceImplTest.java | 59 ++++---- ...orkbasketServiceImplIntAutocommitTest.java | 11 +- 39 files changed, 635 insertions(+), 565 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/TaskanaEngine.java b/lib/taskana-core/src/main/java/pro/taskana/TaskanaEngine.java index b9cae36a0..91fb36cf5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/TaskanaEngine.java +++ b/lib/taskana-core/src/main/java/pro/taskana/TaskanaEngine.java @@ -2,8 +2,11 @@ package pro.taskana; import java.sql.SQLException; +import org.apache.ibatis.session.SqlSession; + import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.exceptions.NotAuthorizedException; +import pro.taskana.history.HistoryEventProducer; /** * The TaskanaEngine represents an overall set of all needed services. @@ -52,6 +55,12 @@ public interface TaskanaEngine { */ TaskanaEngineConfiguration getConfiguration(); + /** + * The HistoryEventProducer events and emits them to the registered history service providers. + * @return The HistoryEventProducer + */ + HistoryEventProducer getHistoryEventProducer(); + /** * sets the connection management mode for taskana. * @@ -112,4 +121,52 @@ public interface TaskanaEngine { EXPLICIT } + /** + * FOR INTERNAL USE ONLY. + * + * Contains all actions which are necessary within taskana. + */ + interface Internal { + + /** + * Opens the connection to the database. Has to be called at the begin of each Api call that accesses the database + */ + void openConnection(); + + /** + * Returns the database connection into the pool. In the case of nested calls, simply pops the latest session from + * the session stack. Closes the connection if the session stack is empty. In mode AUTOCOMMIT commits before the + * connection is closed. To be called at the end of each Api call that accesses the database + */ + void returnConnection(); + + /** + * Initializes the SqlSessionManager. + */ + void initSqlSession(); + + /** + * Returns true if the given domain does exist in the configuration. + * + * @param domain + * the domain specified in the configuration + * @return true if the domain exists + */ + boolean domainExists(String domain); + + /** + * retrieve the SqlSession used by taskana. + * + * @return the myBatis SqlSession object used by taskana + */ + SqlSession getSqlSession(); + + /** + * Retrieve TaskanaEngine. + * @return The nested TaskanaEngine. + */ + TaskanaEngine getEngine(); + + } + } 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 757cc8044..2b7dad0e8 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,6 +1,5 @@ package pro.taskana.history; -import java.util.Iterator; import java.util.ServiceLoader; import org.slf4j.Logger; @@ -16,12 +15,22 @@ import pro.taskana.history.api.TaskanaHistoryEvent; 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; + private HistoryEventProducer(TaskanaEngineConfiguration taskanaEngineConfiguration) { + serviceLoader = ServiceLoader.load(TaskanaHistory.class); + for (TaskanaHistory history : serviceLoader) { + history.initialize(taskanaEngineConfiguration); + LOGGER.info("Registered history provider: {}", history.getClass().getName()); + enabled = true; + } + if (!enabled) { + LOGGER.info("No history provider found. Running without history."); + } + } + public static synchronized HistoryEventProducer getInstance(TaskanaEngineConfiguration taskanaEngineConfiguration) { if (emitterInstance == null) { emitterInstance = new HistoryEventProducer(taskanaEngineConfiguration); @@ -39,23 +48,6 @@ public final class HistoryEventProducer { public void createEvent(TaskanaHistoryEvent event) { LOGGER.debug("Sending event to history service providers: {}", event); - serviceLoader.forEach(historyProvider -> { - historyProvider.create(event); - }); - } - - 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; - } - if (!enabled) { - LOGGER.info("No history provider found. Running without history."); - } + serviceLoader.forEach(historyProvider -> historyProvider.create(event)); } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java index 5b03cd090..01889bb7c 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/AbstractWorkbasketAccessItemQueryImpl.java @@ -33,12 +33,12 @@ abstract class AbstractWorkbasketAccessItemQueryImpl orderBy; private List orderColumns; - AbstractWorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + AbstractWorkbasketAccessItemQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; orderBy = new ArrayList<>(); orderColumns = new ArrayList<>(); } @@ -96,7 +96,7 @@ abstract class AbstractWorkbasketAccessItemQueryImpl orderBy; private List orderColumns; - ClassificationQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + ClassificationQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; this.orderBy = new ArrayList<>(); this.orderColumns = new ArrayList<>(); } @@ -241,7 +241,8 @@ public class ClassificationQueryImpl implements ClassificationQuery { } @Override - public ClassificationQuery customAttributeLike(String number, String... customLike) throws InvalidArgumentException { + public ClassificationQuery customAttributeLike(String number, String... customLike) + throws InvalidArgumentException { int num = 0; try { num = Integer.parseInt(number); @@ -334,7 +335,8 @@ public class ClassificationQueryImpl implements ClassificationQuery { } @Override - public ClassificationQuery orderByCustomAttribute(String number, SortDirection sortDirection) throws InvalidArgumentException { + public ClassificationQuery orderByCustomAttribute(String number, SortDirection sortDirection) + throws InvalidArgumentException { int num = 0; try { num = Integer.parseInt(number); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationReportBuilderImpl.java index 0a13e94d1..d910047e1 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationReportBuilderImpl.java @@ -26,7 +26,7 @@ public class ClassificationReportBuilderImpl private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationReport.Builder.class); - ClassificationReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + ClassificationReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { super(taskanaEngine, taskMonitorMapper); } @@ -43,7 +43,7 @@ public class ClassificationReportBuilderImpl @Override public ClassificationReport buildReport() throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to buildReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); ClassificationReport report = new ClassificationReport(this.columnHeaders); @@ -62,7 +62,7 @@ public class ClassificationReportBuilderImpl @Override public DetailedClassificationReport buildDetailedReport() throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to buildDetailedReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); DetailedClassificationReport report = new DetailedClassificationReport(this.columnHeaders); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java index 0bd218cb2..1210ab960 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java @@ -43,12 +43,11 @@ public class ClassificationServiceImpl implements ClassificationService { private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationServiceImpl.class); private ClassificationMapper classificationMapper; private TaskMapper taskMapper; - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; - ClassificationServiceImpl(TaskanaEngine taskanaEngine, ClassificationMapper classificationMapper, + ClassificationServiceImpl(TaskanaEngine.Internal taskanaEngine, ClassificationMapper classificationMapper, TaskMapper taskMapper) { - super(); - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + this.taskanaEngine = taskanaEngine; this.classificationMapper = classificationMapper; this.taskMapper = taskMapper; } @@ -79,7 +78,7 @@ public class ClassificationServiceImpl implements ClassificationService { throws ClassificationAlreadyExistException, NotAuthorizedException, DomainNotFoundException, InvalidArgumentException { LOGGER.debug("entry to createClassification(classification = {})", classification); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); if (!taskanaEngine.domainExists(classification.getDomain()) && !"".equals(classification.getDomain())) { throw new DomainNotFoundException(classification.getDomain(), "Domain " + classification.getDomain() + " does not exist in the configuration."); @@ -183,7 +182,7 @@ public class ClassificationServiceImpl implements ClassificationService { public Classification updateClassification(Classification classification) throws NotAuthorizedException, ConcurrencyException, ClassificationNotFoundException, InvalidArgumentException { LOGGER.debug("entry to updateClassification(Classification = {})", classification); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); ClassificationImpl classificationImpl = null; try { taskanaEngine.openConnection(); @@ -256,13 +255,13 @@ public class ClassificationServiceImpl implements ClassificationService { } if (classification.getType() != null - && !taskanaEngine.getConfiguration().getClassificationTypes().contains(classification.getType())) { + && !taskanaEngine.getEngine().getConfiguration().getClassificationTypes().contains(classification.getType())) { throw new InvalidArgumentException("Given classification type " + classification.getType() + " is not valid according to the configuration."); } if (classification.getCategory() != null - && !taskanaEngine.getConfiguration() + && !taskanaEngine.getEngine().getConfiguration() .getClassificationCategoriesByType(classification.getType()) .contains(classification.getCategory())) { throw new InvalidArgumentException( @@ -355,7 +354,7 @@ public class ClassificationServiceImpl implements ClassificationService { public void deleteClassification(String classificationKey, String domain) throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException { LOGGER.debug("entry to deleteClassification(key = {}, domain = {})", classificationKey, domain); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); Classification classification = this.classificationMapper.findByKeyAndDomain(classificationKey, domain); @@ -374,7 +373,7 @@ public class ClassificationServiceImpl implements ClassificationService { public void deleteClassification(String classificationId) throws ClassificationInUseException, ClassificationNotFoundException, NotAuthorizedException { LOGGER.debug("entry to deleteClassification(id = {})", classificationId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); Classification classification = this.classificationMapper.findById(classificationId); @@ -460,7 +459,7 @@ public class ClassificationServiceImpl implements ClassificationService { */ private void updateCategoryOnAssociatedTasks(ClassificationImpl classificationImpl, Classification oldClassification) { - List taskSummaries = taskanaEngine.getTaskService() + List taskSummaries = taskanaEngine.getEngine().getTaskService() .createTaskQuery() .classificationIdIn(oldClassification.getId()) .list(); @@ -515,7 +514,7 @@ public class ClassificationServiceImpl implements ClassificationService { ScheduledJob job = new ScheduledJob(); job.setArguments(args); job.setType(ScheduledJob.Type.CLASSIFICATIONCHANGEDJOB); - taskanaEngine.getJobService().createJob(job); + taskanaEngine.getEngine().getJobService().createJob(job); } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/CustomFieldValueReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/CustomFieldValueReportBuilderImpl.java index f0b819dbd..291dc0f4a 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/CustomFieldValueReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/CustomFieldValueReportBuilderImpl.java @@ -27,7 +27,7 @@ public class CustomFieldValueReportBuilderImpl private CustomField customField; - CustomFieldValueReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper, + CustomFieldValueReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper, CustomField customField) { super(taskanaEngine, taskMonitorMapper); this.customField = customField; @@ -47,7 +47,7 @@ public class CustomFieldValueReportBuilderImpl public CustomFieldValueReport buildReport() throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to buildReport(customField = {}), this = {}", this.customField, this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR); try { this.taskanaEngine.openConnection(); CustomFieldValueReport report = new CustomFieldValueReport(this.columnHeaders); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/JobServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/JobServiceImpl.java index 21d397fd6..49c167363 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/JobServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/JobServiceImpl.java @@ -21,11 +21,10 @@ public class JobServiceImpl implements JobService { private static final Logger LOGGER = LoggerFactory.getLogger(JobServiceImpl.class); private JobMapper jobMapper; - private TaskanaEngineImpl taskanaEngineImpl; + private TaskanaEngine.Internal taskanaEngineImpl; - public JobServiceImpl(TaskanaEngine taskanaEngine, JobMapper jobMapper) { - super(); - this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; + public JobServiceImpl(TaskanaEngine.Internal taskanaEngine, JobMapper jobMapper) { + this.taskanaEngineImpl = taskanaEngine; this.jobMapper = jobMapper; } @@ -94,7 +93,7 @@ public class JobServiceImpl implements JobService { if (job.getDue() == null) { job.setDue(Instant.now()); } - job.setRetryCount(taskanaEngineImpl.getConfiguration().getMaxNumberOfJobRetries()); + job.setRetryCount(taskanaEngineImpl.getEngine().getConfiguration().getMaxNumberOfJobRetries()); LOGGER.debug("Job after initialization: {}", job); return job; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java index f555a5b21..21140f033 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ObjectReferenceQueryImpl.java @@ -27,7 +27,7 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { private static final String LINK_TO_COUNTER = "pro.taskana.mappings.QueryMapper.countQueryObjectReferences"; private static final String LINK_TO_VALUEMAPPER = "pro.taskana.mappings.QueryMapper.queryObjectReferenceColumnValues"; private static final Logger LOGGER = LoggerFactory.getLogger(ObjectReferenceQueryImpl.class); - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private ObjectReferenceQueryColumnName columnName; private String[] company; private String[] system; @@ -36,8 +36,8 @@ public class ObjectReferenceQueryImpl implements ObjectReferenceQuery { private String[] value; private List orderBy; - ObjectReferenceQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + ObjectReferenceQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; this.orderBy = new ArrayList<>(); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskMonitorServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskMonitorServiceImpl.java index 0fe02d019..f2945a098 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskMonitorServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskMonitorServiceImpl.java @@ -2,6 +2,7 @@ package pro.taskana.impl; import pro.taskana.CustomField; import pro.taskana.TaskMonitorService; +import pro.taskana.TaskanaEngine; import pro.taskana.mappings.TaskMonitorMapper; import pro.taskana.report.CategoryReport; import pro.taskana.report.ClassificationReport; @@ -15,43 +16,43 @@ import pro.taskana.report.WorkbasketReport; */ public class TaskMonitorServiceImpl implements TaskMonitorService { - private TaskanaEngineImpl taskanaEngineImpl; + private TaskanaEngine.Internal taskanaEngine; private TaskMonitorMapper taskMonitorMapper; - TaskMonitorServiceImpl(TaskanaEngineImpl taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + TaskMonitorServiceImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { super(); - this.taskanaEngineImpl = taskanaEngine; + this.taskanaEngine = taskanaEngine; this.taskMonitorMapper = taskMonitorMapper; } @Override public WorkbasketReport.Builder createWorkbasketReportBuilder() { - return new WorkbasketReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper); + return new WorkbasketReportBuilderImpl(taskanaEngine, taskMonitorMapper); } @Override public CategoryReport.Builder createCategoryReportBuilder() { - return new CategoryReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper); + return new CategoryReportBuilderImpl(taskanaEngine, taskMonitorMapper); } @Override public ClassificationReport.Builder createClassificationReportBuilder() { - return new ClassificationReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper); + return new ClassificationReportBuilderImpl(taskanaEngine, taskMonitorMapper); } @Override public CustomFieldValueReport.Builder createCustomFieldValueReportBuilder(CustomField customField) { - return new CustomFieldValueReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper, customField); + return new CustomFieldValueReportBuilderImpl(taskanaEngine, taskMonitorMapper, customField); } @Override public TaskStatusReport.Builder createTaskStatusReportBuilder() { - return new TaskStatusReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper); + return new TaskStatusReportBuilderImpl(taskanaEngine, taskMonitorMapper); } @Override public TimestampReport.Builder createTimestampReportBuilder() { - return new TimestampReportBuilderImpl(taskanaEngineImpl, taskMonitorMapper); + return new TimestampReportBuilderImpl(taskanaEngine, taskMonitorMapper); } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java index bcee8cf90..edaa7dcb6 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskQueryImpl.java @@ -41,7 +41,7 @@ public class TaskQueryImpl implements TaskQuery { private static final String TIME_INTERVAL = "TimeInterval "; private static final String IS_INVALID = " is invalid."; private static final Logger LOGGER = LoggerFactory.getLogger(TaskQueryImpl.class); - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private TaskServiceImpl taskService; private TaskQueryColumnName columnName; private String[] nameIn; @@ -146,9 +146,9 @@ public class TaskQueryImpl implements TaskQuery { private boolean addClassificationNameToSelectClauseForOrdering = false; private boolean addAttachmentClassificationNameToSelectClauseForOrdering = false; - TaskQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; - this.taskService = (TaskServiceImpl) taskanaEngine.getTaskService(); + TaskQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; + this.taskService = (TaskServiceImpl) taskanaEngine.getEngine().getTaskService(); this.orderBy = new ArrayList<>(); this.orderColumns = new ArrayList<>(); this.filterByAccessIdIn = true; @@ -178,7 +178,6 @@ public class TaskQueryImpl implements TaskQuery { return this; } - @Override public TaskQuery nameLike(String... names) { this.nameLike = toUpperCopy(names); @@ -698,23 +697,23 @@ public class TaskQueryImpl implements TaskQuery { public TaskQuery orderByClassificationName(SortDirection sortDirection) { joinWithClassifications = true; addClassificationNameToSelectClauseForOrdering = true; - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? addOrderCriteria("CNAME", sortDirection) - : addOrderCriteria("c.NAME", sortDirection); + : addOrderCriteria("c.NAME", sortDirection); } @Override public TaskQuery orderByAttachmentClassificationName(SortDirection sortDirection) { joinWithAttachments = true; addAttachmentClassificationNameToSelectClauseForOrdering = true; - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? addOrderCriteria("ACNAME", sortDirection) - : addOrderCriteria("ac.NAME", sortDirection); + : addOrderCriteria("ac.NAME", sortDirection); } @Override public TaskQuery orderByClassificationKey(SortDirection sortDirection) { - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? addOrderCriteria("TCLASSIFICATION_KEY", sortDirection) : addOrderCriteria("t.CLASSIFICATION_KEY", sortDirection); } @@ -803,7 +802,7 @@ public class TaskQueryImpl implements TaskQuery { public TaskQuery orderByAttachmentClassificationKey(SortDirection sortDirection) { joinWithAttachments = true; addAttachmentColumnsToSelectClauseForOrdering = true; - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? addOrderCriteria("ACLASSIFICATION_KEY", sortDirection) : addOrderCriteria("a.CLASSIFICATION_KEY", sortDirection); } @@ -812,7 +811,7 @@ public class TaskQueryImpl implements TaskQuery { public TaskQuery orderByAttachmentClassificationId(SortDirection sortDirection) { joinWithAttachments = true; addAttachmentColumnsToSelectClauseForOrdering = true; - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? addOrderCriteria("ACLASSIFICATION_ID", sortDirection) : addOrderCriteria("a.CLASSIFICATION_ID", sortDirection); } @@ -976,19 +975,21 @@ public class TaskQueryImpl implements TaskQuery { } public String getLinkToMapperScript() { - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine + .getSqlSession() + .getConfiguration().getDatabaseId().equals("db2") ? LINK_TO_MAPPER_DB2 : LINK_TO_MAPPER; } public String getLinkToCounterTaskScript() { - return this.taskanaEngine.sessionManager.getConfiguration().getDatabaseId().equals("db2") + return this.taskanaEngine.getSqlSession().getConfiguration().getDatabaseId().equals("db2") ? LINK_TO_COUNTER_DB2 : LINK_TO_COUNTER; } private void setupAccessIds() { - if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN) || !filterByAccessIdIn) { + if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN) || !filterByAccessIdIn) { this.accessIdIn = null; } else if (this.accessIdIn == null) { String[] accessIds = new String[0]; @@ -1154,7 +1155,7 @@ public class TaskQueryImpl implements TaskQuery { } private void checkOpenAndReadPermissionForSpecifiedWorkbaskets() { - if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN)) { + if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN)) { LOGGER.debug("Skipping permissions check since user is in role ADMIN."); return; } @@ -1178,7 +1179,7 @@ public class TaskQueryImpl implements TaskQuery { private void checkOpenAndReadPermissionById(String workbasketId) throws NotAuthorizedException { try { - taskanaEngine.getWorkbasketService().checkAuthorization(workbasketId, + taskanaEngine.getEngine().getWorkbasketService().checkAuthorization(workbasketId, WorkbasketPermission.OPEN, WorkbasketPermission.READ); } catch (WorkbasketNotFoundException e) { LOGGER.warn("The workbasket with the ID '" + workbasketId + "' does not exist.", e); @@ -1187,7 +1188,7 @@ public class TaskQueryImpl implements TaskQuery { private void checkOpenAndReadPermissionByKeyDomain(KeyDomain keyDomain) throws NotAuthorizedException { try { - taskanaEngine.getWorkbasketService().checkAuthorization(keyDomain.getKey(), + taskanaEngine.getEngine().getWorkbasketService().checkAuthorization(keyDomain.getKey(), keyDomain.getDomain(), WorkbasketPermission.OPEN, WorkbasketPermission.READ); } catch (WorkbasketNotFoundException e) { LOGGER.warn("The workbasket with the KEY '" + keyDomain.getKey() + "' and DOMAIN '" @@ -1195,10 +1196,6 @@ public class TaskQueryImpl implements TaskQuery { } } - public TaskanaEngineImpl getTaskanaEngine() { - return taskanaEngine; - } - public String[] getTaskIds() { return taskIds; } @@ -1634,7 +1631,8 @@ public class TaskQueryImpl implements TaskQuery { return addClassificationNameToSelectClauseForOrdering; } - public void setAddClassificationNameToSelectClauseForOrdering(boolean addClassificationNameToSelectClauseForOrdering) { + public void setAddClassificationNameToSelectClauseForOrdering( + boolean addClassificationNameToSelectClauseForOrdering) { this.addClassificationNameToSelectClauseForOrdering = addClassificationNameToSelectClauseForOrdering; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java index 04524824d..dbb79c3ad 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.apache.ibatis.exceptions.PersistenceException; import org.slf4j.Logger; @@ -19,6 +20,7 @@ import org.slf4j.LoggerFactory; import pro.taskana.Attachment; import pro.taskana.BulkOperationResults; import pro.taskana.Classification; +import pro.taskana.ClassificationService; import pro.taskana.ClassificationSummary; import pro.taskana.ObjectReference; import pro.taskana.Task; @@ -79,17 +81,17 @@ public class TaskServiceImpl implements TaskService { private static final String ID_PREFIX_BUSINESS_PROCESS = "BPI"; private static final String MUST_NOT_BE_EMPTY = " must not be empty"; private static final Duration MAX_DURATION = Duration.ofSeconds(Long.MAX_VALUE, 999_999_999); - private static final Set ALLOWED_KEYS = new HashSet<>( - Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16")); + private static final Set ALLOWED_KEYS = + IntStream.rangeClosed(1, 16).mapToObj(String::valueOf).collect(Collectors.toSet()); private DaysToWorkingDaysConverter converter; - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private WorkbasketService workbasketService; - private ClassificationServiceImpl classificationService; + private ClassificationService classificationService; private TaskMapper taskMapper; private AttachmentMapper attachmentMapper; private HistoryEventProducer historyEventProducer; - TaskServiceImpl(TaskanaEngine taskanaEngine, TaskMapper taskMapper, + TaskServiceImpl(TaskanaEngine.Internal taskanaEngine, TaskMapper taskMapper, AttachmentMapper attachmentMapper) { super(); try { @@ -98,12 +100,12 @@ public class TaskServiceImpl implements TaskService { } catch (InvalidArgumentException e) { throw new SystemException("Internal error. Cannot initialize DaysToWorkingDaysConverter", e.getCause()); } - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + this.taskanaEngine = taskanaEngine; this.taskMapper = taskMapper; - this.workbasketService = taskanaEngine.getWorkbasketService(); + this.workbasketService = taskanaEngine.getEngine().getWorkbasketService(); this.attachmentMapper = attachmentMapper; - this.classificationService = (ClassificationServiceImpl) taskanaEngine.getClassificationService(); - this.historyEventProducer = ((TaskanaEngineImpl) taskanaEngine).getHistoryEventProducer(); + this.classificationService = taskanaEngine.getEngine().getClassificationService(); + this.historyEventProducer = taskanaEngine.getEngine().getHistoryEventProducer(); } @Override @@ -237,7 +239,8 @@ public class TaskServiceImpl implements TaskService { if (msg != null && (msg.contains("violation") || msg.contains("violates")) && msg.contains("external_id")) { - throw new TaskAlreadyExistException("Task with external id " + task.getExternalId() + " already exists"); + throw new TaskAlreadyExistException( + "Task with external id " + task.getExternalId() + " already exists"); } else { throw e; } @@ -280,7 +283,8 @@ public class TaskServiceImpl implements TaskService { List classifications; classifications = findClassificationForTaskImplAndAttachments(resultTask, attachmentImpls); - List attachments = addClassificationSummariesToAttachments(attachmentImpls, classifications); + List attachments = addClassificationSummariesToAttachments(attachmentImpls, + classifications); resultTask.setAttachments(attachments); String classificationId = resultTask.getClassificationSummary().getId(); @@ -413,7 +417,8 @@ public class TaskServiceImpl implements TaskService { try { taskanaEngine.openConnection(); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to transferTasks(targetWbId = {}, taskIds = {})", destinationWorkbasketId, LoggerUtils.listToString(taskIds)); + LOGGER.debug("entry to transferTasks(targetWbId = {}, taskIds = {})", destinationWorkbasketId, + LoggerUtils.listToString(taskIds)); } // Check pre-conditions with trowing Exceptions @@ -426,7 +431,8 @@ public class TaskServiceImpl implements TaskService { return transferTasks(taskIds, destinationWorkbasket); } finally { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("exit from transferTasks(targetWbKey = {}, taskIds = {})", destinationWorkbasketId, LoggerUtils.listToString(taskIds)); + LOGGER.debug("exit from transferTasks(targetWbKey = {}, taskIds = {})", destinationWorkbasketId, + LoggerUtils.listToString(taskIds)); } taskanaEngine.returnConnection(); @@ -440,7 +446,8 @@ public class TaskServiceImpl implements TaskService { try { taskanaEngine.openConnection(); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to transferTasks(targetWbKey = {}, domain = {}, taskIds = {})", destinationWorkbasketKey, + LOGGER.debug("entry to transferTasks(targetWbKey = {}, domain = {}, taskIds = {})", + destinationWorkbasketKey, destinationWorkbasketDomain, LoggerUtils.listToString(taskIds)); } @@ -455,7 +462,8 @@ public class TaskServiceImpl implements TaskService { return transferTasks(taskIds, destinationWorkbasket); } finally { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("exit from transferTasks(targetWbKey = {}, targetWbDomain = {}, destination taskIds = {})", destinationWorkbasketKey, + LOGGER.debug("exit from transferTasks(targetWbKey = {}, targetWbDomain = {}, destination taskIds = {})", + destinationWorkbasketKey, destinationWorkbasketDomain, LoggerUtils.listToString(taskIds)); } @@ -609,7 +617,8 @@ public class TaskServiceImpl implements TaskService { changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList()); taskMapper.updateTasks(changedTasks, updated, fieldSelector); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("updateTasks() updated the following tasks: {} ", LoggerUtils.listToString(changedTasks)); + LOGGER.debug("updateTasks() updated the following tasks: {} ", + LoggerUtils.listToString(changedTasks)); } } else { @@ -645,7 +654,8 @@ public class TaskServiceImpl implements TaskService { changedTasks = taskSummaries.stream().map(TaskSummary::getTaskId).collect(Collectors.toList()); taskMapper.updateTasks(changedTasks, updatedTask, fieldSelector); if (LOGGER.isDebugEnabled()) { - LOGGER.debug("updateTasks() updated the following tasks: {} ", LoggerUtils.listToString(changedTasks)); + LOGGER.debug("updateTasks() updated the following tasks: {} ", + LoggerUtils.listToString(changedTasks)); } } else { @@ -697,7 +707,7 @@ public class TaskServiceImpl implements TaskService { task.setTransferred(false); String creator = CurrentUserContext.getUserid(); - if (taskanaEngine.getConfiguration().isSecurityEnabled() && creator == null) { + if (taskanaEngine.getEngine().getConfiguration().isSecurityEnabled() && creator == null) { throw new SystemException( "TaskanaSecurity is enabled, but the current UserId is NULL while creating a Task."); } @@ -747,7 +757,7 @@ public class TaskServiceImpl implements TaskService { } - if (task.getName() == null && classification != null) { + if (task.getName() == null && classification != null) { task.setName(classification.getName()); } @@ -761,7 +771,8 @@ public class TaskServiceImpl implements TaskService { Workbasket destinationWorkbasket) throws InvalidArgumentException, WorkbasketNotFoundException, NotAuthorizedException { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to transferTasks(taskIdsToBeTransferred = {}, destinationWorkbasket = {})", LoggerUtils.listToString(taskIdsToBeTransferred), destinationWorkbasket); + LOGGER.debug("entry to transferTasks(taskIdsToBeTransferred = {}, destinationWorkbasket = {})", + LoggerUtils.listToString(taskIdsToBeTransferred), destinationWorkbasket); } workbasketService.checkAuthorization(destinationWorkbasket.getId(), WorkbasketPermission.APPEND); @@ -795,7 +806,8 @@ public class TaskServiceImpl implements TaskService { private void removeNonExistingTasksFromTaskIdList(List taskIds, BulkOperationResults bulkLog) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to removeNonExistingTasksFromTaskIdList(targetWbId = {}, taskIds = {})", taskIds, bulkLog); + LOGGER.debug("entry to removeNonExistingTasksFromTaskIdList(targetWbId = {}, taskIds = {})", taskIds, + bulkLog); } Iterator taskIdIterator = taskIds.iterator(); @@ -813,7 +825,8 @@ public class TaskServiceImpl implements TaskService { private void checkIfTransferConditionsAreFulfilled(List taskIds, List taskSummaries, BulkOperationResults bulkLog) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to checkIfTransferConditionsAreFulfilled(taskIds = {}, taskSummaries = {}, bulkLog = {})", + LOGGER.debug( + "entry to checkIfTransferConditionsAreFulfilled(taskIds = {}, taskSummaries = {}, bulkLog = {})", LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), bulkLog); } @@ -837,8 +850,10 @@ public class TaskServiceImpl implements TaskService { private void checkIfTasksMatchTransferCriteria(List taskIds, List taskSummaries, List sourceWorkbaskets, BulkOperationResults bulkLog) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to checkIfTasksMatchTransferCriteria(taskIds = {}, taskSummaries = {}, sourceWorkbaskets = {}, bulkLog = {})", - LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(sourceWorkbaskets), bulkLog); + LOGGER.debug( + "entry to checkIfTasksMatchTransferCriteria(taskIds = {}, taskSummaries = {}, sourceWorkbaskets = {}, bulkLog = {})", + LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries), + LoggerUtils.listToString(sourceWorkbaskets), bulkLog); } Iterator taskIdIterator = taskIds.iterator(); @@ -935,7 +950,8 @@ public class TaskServiceImpl implements TaskService { private void updateTasksToBeCompleted(List taskIds, List taskSummaries) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to updateTasksToBeCompleted(taskIds = {}, taskSummaries = {})", LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries)); + LOGGER.debug("entry to updateTasksToBeCompleted(taskIds = {}, taskSummaries = {})", + LoggerUtils.listToString(taskIds), LoggerUtils.listToString(taskSummaries)); } if (!taskIds.isEmpty() && !taskSummaries.isEmpty()) { @@ -985,7 +1001,8 @@ public class TaskServiceImpl implements TaskService { private void addClassificationSummariesToTaskSummaries(List tasks, List classifications) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to addClassificationSummariesToTaskSummaries(tasks = {}, classifications = {})", LoggerUtils.listToString(tasks), LoggerUtils.listToString(classifications)); + LOGGER.debug("entry to addClassificationSummariesToTaskSummaries(tasks = {}, classifications = {})", + LoggerUtils.listToString(tasks), LoggerUtils.listToString(classifications)); } if (tasks == null || tasks.isEmpty()) { @@ -1096,8 +1113,10 @@ public class TaskServiceImpl implements TaskService { private void addAttachmentSummariesToTaskSummaries(List taskSummaries, List attachmentSummaries, List classifications) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to addAttachmentSummariesToTaskSummaries(taskSummaries = {}, attachmentSummaries = {}, classifications = {})", - LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(attachmentSummaries), LoggerUtils.listToString(classifications)); + LOGGER.debug( + "entry to addAttachmentSummariesToTaskSummaries(taskSummaries = {}, attachmentSummaries = {}, classifications = {})", + LoggerUtils.listToString(taskSummaries), LoggerUtils.listToString(attachmentSummaries), + LoggerUtils.listToString(classifications)); } if (taskSummaries == null || taskSummaries.isEmpty()) { @@ -1181,7 +1200,8 @@ public class TaskServiceImpl implements TaskService { private TaskImpl initUpdatedTask(Map customFieldsToUpdate, CustomPropertySelector fieldSelector) throws InvalidArgumentException { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to initUpdatedTask(customFieldsToUpdate = {}, fieldSelector = {})", LoggerUtils.mapToString(customFieldsToUpdate), fieldSelector); + LOGGER.debug("entry to initUpdatedTask(customFieldsToUpdate = {}, fieldSelector = {})", + LoggerUtils.mapToString(customFieldsToUpdate), fieldSelector); } TaskImpl newTask = new TaskImpl(); @@ -1201,7 +1221,8 @@ public class TaskServiceImpl implements TaskService { private void validateCustomFields(Map customFieldsToUpdate) throws InvalidArgumentException { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to validateCustomFields(customFieldsToUpdate = {}, taskIds = {})", LoggerUtils.mapToString(customFieldsToUpdate)); + LOGGER.debug("entry to validateCustomFields(customFieldsToUpdate = {}, taskIds = {})", + LoggerUtils.mapToString(customFieldsToUpdate)); } if (customFieldsToUpdate == null || customFieldsToUpdate.isEmpty()) { @@ -1296,9 +1317,8 @@ public class TaskServiceImpl implements TaskService { } else { ClassificationSummary classificationSummary = attachment.getClassificationSummary(); if (classificationSummary != null) { - PrioDurationHolder newPrioDuraton = getNewPrioDuration(actualPrioDuration, + actualPrioDuration = getNewPrioDuration(actualPrioDuration, classificationSummary.getPriority(), classificationSummary.getServiceLevel()); - actualPrioDuration = newPrioDuraton; } } return actualPrioDuration; @@ -1405,7 +1425,8 @@ public class TaskServiceImpl implements TaskService { private PrioDurationHolder handleAttachmentsOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl) throws AttachmentPersistenceException { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to handleAttachmentsOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, newTaskImpl); + LOGGER.debug("entry to handleAttachmentsOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, + newTaskImpl); } PrioDurationHolder prioDuration = new PrioDurationHolder(MAX_DURATION, Integer.MIN_VALUE); @@ -1415,7 +1436,8 @@ public class TaskServiceImpl implements TaskService { while (i.hasNext()) { Attachment attachment = i.next(); if (attachment != null) { - prioDuration = handlePrioDurationOfOneAttachmentOnTaskUpdate(oldTaskImpl, newTaskImpl, prioDuration, attachment); + prioDuration = handlePrioDurationOfOneAttachmentOnTaskUpdate(oldTaskImpl, newTaskImpl, prioDuration, + attachment); } else { i.remove(); } @@ -1433,7 +1455,8 @@ public class TaskServiceImpl implements TaskService { private void deleteAttachmentOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to deleteAttachmentOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, newTaskImpl); + LOGGER.debug("entry to deleteAttachmentOnTaskUpdate(oldTaskImpl = {}, newTaskImpl = {})", oldTaskImpl, + newTaskImpl); } for (Attachment oldAttachment : oldTaskImpl.getAttachments()) { @@ -1491,7 +1514,7 @@ public class TaskServiceImpl implements TaskService { ClassificationSummary classification = attachment.getClassificationSummary(); if (classification != null) { - prioDuration = getNewPrioDuration(prioDuration, + prioDuration = getNewPrioDuration(prioDuration, classification.getPriority(), classification.getServiceLevel()); } @@ -1556,11 +1579,12 @@ public class TaskServiceImpl implements TaskService { LOGGER.debug("exit from handleAttachmentsOnClassificationUpdate(), returning {}", prioDuration); return prioDuration; - } + } private PrioDurationHolder getNewPrioDuration(PrioDurationHolder prioDurationHolder, int prioFromClassification, String serviceLevelFromClassification) { - LOGGER.debug("entry to getNewPrioDuration(prioDurationHolder = {}, prioFromClassification = {}, serviceLevelFromClassification = {})", + LOGGER.debug( + "entry to getNewPrioDuration(prioDurationHolder = {}, prioFromClassification = {}, serviceLevelFromClassification = {})", prioDurationHolder, prioFromClassification, serviceLevelFromClassification); Duration minDuration = prioDurationHolder.getDuration(); int maxPrio = prioDurationHolder.getPrio(); @@ -1832,7 +1856,7 @@ public class TaskServiceImpl implements TaskService { private void deleteTask(String taskId, boolean forceDelete) throws TaskNotFoundException, InvalidStateException, NotAuthorizedException { LOGGER.debug("entry to deleteTask(taskId = {} , forceDelete = {})", taskId, forceDelete); - taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN); TaskImpl task = null; try { taskanaEngine.openConnection(); @@ -1877,7 +1901,8 @@ public class TaskServiceImpl implements TaskService { List augmentTaskSummariesByContainedSummaries(List taskSummaries) { if (LOGGER.isDebugEnabled()) { - LOGGER.debug("entry to augmentTaskSummariesByContainedSummaries(taskSummaries= {})", LoggerUtils.listToString(taskSummaries)); + LOGGER.debug("entry to augmentTaskSummariesByContainedSummaries(taskSummaries= {})", + LoggerUtils.listToString(taskSummaries)); } List result = new ArrayList<>(); @@ -1909,6 +1934,7 @@ public class TaskServiceImpl implements TaskService { * @author bbr */ static class PrioDurationHolder { + private Duration duration; private int prio; @@ -1923,14 +1949,14 @@ public class TaskServiceImpl implements TaskService { return duration; } - public int getPrio() { - return prio; - } - public void setDuration(Duration duration) { this.duration = duration; } + public int getPrio() { + return prio; + } + public void setPrio(int prio) { this.prio = prio; } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskStatusReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskStatusReportBuilderImpl.java index 292d64ea8..1054b71c5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskStatusReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskStatusReportBuilderImpl.java @@ -19,13 +19,13 @@ import pro.taskana.report.TaskStatusReport; public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder { private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class); - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private TaskMonitorMapper taskMonitorMapper; private List domains; private List states; - TaskStatusReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + TaskStatusReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + this.taskanaEngine = taskanaEngine; this.taskMonitorMapper = taskMonitorMapper; } @@ -44,7 +44,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder { @Override public TaskStatusReport buildReport() throws NotAuthorizedException { LOGGER.debug("entry to buildReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); List tasks = this.taskMonitorMapper.getTasksCountByState(this.domains, this.states); 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 692fb1727..f5dc04bd3 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 @@ -63,12 +63,14 @@ public class TaskanaEngineImpl implements TaskanaEngine { protected ConnectionManagementMode mode = ConnectionManagementMode.PARTICIPATE; protected java.sql.Connection connection = null; protected HistoryEventProducer historyEventProducer; + private Internal internal; protected TaskanaEngineImpl(TaskanaEngineConfiguration taskanaEngineConfiguration) { this.taskanaEngineConfiguration = taskanaEngineConfiguration; createTransactionFactory(taskanaEngineConfiguration.getUseManagedTransactions()); this.sessionManager = createSqlSessionManager(); this.historyEventProducer = HistoryEventProducer.getInstance(taskanaEngineConfiguration); + this.internal = new Internal(); } public static TaskanaEngine createTaskanaEngine(TaskanaEngineConfiguration taskanaEngineConfiguration) { @@ -130,21 +132,21 @@ public class TaskanaEngineImpl implements TaskanaEngine { @Override public TaskService getTaskService() { SqlSession session = this.sessionManager; - return new TaskServiceImpl(this, session.getMapper(TaskMapper.class), + return new TaskServiceImpl(internal, session.getMapper(TaskMapper.class), session.getMapper(AttachmentMapper.class)); } @Override public TaskMonitorService getTaskMonitorService() { SqlSession session = this.sessionManager; - return new TaskMonitorServiceImpl(this, + return new TaskMonitorServiceImpl(internal, session.getMapper(TaskMonitorMapper.class)); } @Override public WorkbasketService getWorkbasketService() { SqlSession session = this.sessionManager; - return new WorkbasketServiceImpl(this, + return new WorkbasketServiceImpl(internal, session.getMapper(WorkbasketMapper.class), session.getMapper(DistributionTargetMapper.class), session.getMapper(WorkbasketAccessMapper.class)); @@ -153,14 +155,14 @@ public class TaskanaEngineImpl implements TaskanaEngine { @Override public ClassificationService getClassificationService() { SqlSession session = this.sessionManager; - return new ClassificationServiceImpl(this, session.getMapper(ClassificationMapper.class), + return new ClassificationServiceImpl(internal, session.getMapper(ClassificationMapper.class), session.getMapper(TaskMapper.class)); } @Override public JobService getJobService() { SqlSession session = this.sessionManager; - return new JobServiceImpl(this, session.getMapper(JobMapper.class)); + return new JobServiceImpl(internal, session.getMapper(JobMapper.class)); } @Override @@ -168,8 +170,9 @@ public class TaskanaEngineImpl implements TaskanaEngine { return this.taskanaEngineConfiguration; } + @Override public HistoryEventProducer getHistoryEventProducer() { - return this.historyEventProducer; + return historyEventProducer; } /** @@ -233,65 +236,6 @@ public class TaskanaEngineImpl implements TaskanaEngine { } } - /** - * Open the connection to the database. to be called at the begin of each Api call that accesses the database - */ - void openConnection() { - initSqlSession(); - try { - this.sessionManager.getConnection().setSchema(taskanaEngineConfiguration.getSchemaName()); - } catch (SQLException e) { - throw new SystemException( - "Method openConnection() could not open a connection to the database. No schema has been created.", - e.getCause()); - } - if (mode != ConnectionManagementMode.EXPLICIT) { - pushSessionToStack(this.sessionManager); - } - } - - /** - * Initializes the SqlSessionManager. - */ - void initSqlSession() { - if (mode == ConnectionManagementMode.EXPLICIT && this.connection == null) { - throw new ConnectionNotSetException(); - } else if (mode != ConnectionManagementMode.EXPLICIT && !this.sessionManager.isManagedSessionStarted()) { - this.sessionManager.startManagedSession(); - } - } - - /** - * Returns the database connection into the pool. In the case of nested calls, simply pops the latest session from - * the session stack. Closes the connection if the session stack is empty. In mode AUTOCOMMIT commits before the - * connection is closed. To be called at the end of each Api call that accesses the database - */ - void returnConnection() { - if (this.mode != ConnectionManagementMode.EXPLICIT) { - popSessionFromStack(); - if (getSessionStack().isEmpty() - && this.sessionManager != null && this.sessionManager.isManagedSessionStarted()) { - if (this.mode == ConnectionManagementMode.AUTOCOMMIT) { - try { - this.sessionManager.commit(); - } catch (Exception e) { - throw new AutocommitFailedException(e.getCause()); - } - } - this.sessionManager.close(); - } - } - } - - /** - * retrieve the SqlSession used by taskana. - * - * @return the myBatis SqlSession object used by taskana - */ - SqlSession getSqlSession() { - return this.sessionManager; - } - /** * Checks whether current user is member of any of the specified roles. * @@ -402,14 +346,66 @@ public class TaskanaEngineImpl implements TaskanaEngine { } /** - * Returns true if the given domain does exist in the configuration. - * - * @param domain - * the domain specified in the configuration - * @return true if the domain exists + * Internal Engine for internal operations. */ - public boolean domainExists(String domain) { - return getConfiguration().getDomains().contains(domain); - } + private class Internal implements TaskanaEngine.Internal { + @Override + public void openConnection() { + initSqlSession(); + try { + sessionManager.getConnection().setSchema(taskanaEngineConfiguration.getSchemaName()); + } catch (SQLException e) { + throw new SystemException( + "Method openConnection() could not open a connection to the database. No schema has been created.", + e.getCause()); + } + if (mode != ConnectionManagementMode.EXPLICIT) { + pushSessionToStack(sessionManager); + } + } + + @Override + public void initSqlSession() { + if (mode == ConnectionManagementMode.EXPLICIT && connection == null) { + throw new ConnectionNotSetException(); + } else if (mode != ConnectionManagementMode.EXPLICIT && !sessionManager.isManagedSessionStarted()) { + sessionManager.startManagedSession(); + } + } + + @Override + public void returnConnection() { + if (mode != ConnectionManagementMode.EXPLICIT) { + popSessionFromStack(); + if (getSessionStack().isEmpty() + && sessionManager != null && sessionManager.isManagedSessionStarted()) { + if (mode == ConnectionManagementMode.AUTOCOMMIT) { + try { + sessionManager.commit(); + } catch (Exception e) { + throw new AutocommitFailedException(e.getCause()); + } + } + sessionManager.close(); + } + } + } + + @Override + public boolean domainExists(String domain) { + return getConfiguration().getDomains().contains(domain); + } + + @Override + public SqlSession getSqlSession() { + return sessionManager; + } + + @Override + public TaskanaEngine getEngine() { + return TaskanaEngineImpl.this; + } + + } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TimeIntervalReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TimeIntervalReportBuilderImpl.java index b72aa1479..71e8a7d1d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TimeIntervalReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TimeIntervalReportBuilderImpl.java @@ -33,7 +33,7 @@ abstract class TimeIntervalReportBuilderImpl columnHeaders; protected boolean inWorkingDays; @@ -45,8 +45,8 @@ abstract class TimeIntervalReportBuilderImpl excludedClassificationIds; protected Map customAttributeFilter; - TimeIntervalReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + TimeIntervalReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + this.taskanaEngine = taskanaEngine; this.taskMonitorMapper = taskMonitorMapper; this.columnHeaders = Collections.emptyList(); configureDaysToWorkingDaysConverter(); @@ -113,7 +113,7 @@ abstract class TimeIntervalReportBuilderImpl convertWorkingDaysToDays(List selectedItems, diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TimestampReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TimestampReportBuilderImpl.java index b3fec2ff1..5b5a1675e 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TimestampReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TimestampReportBuilderImpl.java @@ -31,7 +31,7 @@ public class TimestampReportBuilderImpl extends private static final Logger LOGGER = LoggerFactory.getLogger(TimestampReport.Builder.class); private List status = Arrays.asList(Timestamp.CREATED, Timestamp.COMPLETED); - TimestampReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + TimestampReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { super(taskanaEngine, taskMonitorMapper); } @@ -65,7 +65,7 @@ public class TimestampReportBuilderImpl extends @Override public TimestampReport buildReport() throws NotAuthorizedException, InvalidArgumentException { LOGGER.debug("entry to buildDetailedReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); TimestampReport report = new TimestampReport(this.columnHeaders); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java index ee006719f..2627a04ba 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java @@ -33,12 +33,12 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery private String[] workbasketKeyLike; private String[] idIn; - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private List orderBy; private List orderColumns; - WorkbasketAccessItemQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + WorkbasketAccessItemQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; orderBy = new ArrayList<>(); orderColumns = new ArrayList<>(); } @@ -197,7 +197,8 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery } private WorkbasketAccessItemQuery addOrderCriteria(String colName, SortDirection sortDirection) { - String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString()); + String orderByDirection = + " " + (sortDirection == null ? SortDirection.ASCENDING.toString() : sortDirection.toString()); orderBy.add(colName + orderByDirection); orderColumns.add(colName); return this; diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java index 13b6416f2..17d4141f5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketQueryImpl.java @@ -70,7 +70,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { private String[] orgLevel4Like; private boolean markedForDeletion; - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private List orderBy; private List orderColumns; private boolean joinWithAccessList; @@ -78,8 +78,8 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { private boolean usedToAugmentTasks; private boolean callerRolesAndAccessIdsAlreadyHandled; - WorkbasketQueryImpl(TaskanaEngine taskanaEngine) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + WorkbasketQueryImpl(TaskanaEngine.Internal taskanaEngine) { + this.taskanaEngine = taskanaEngine; this.orderBy = new ArrayList<>(); this.orderColumns = new ArrayList<>(); this.callerRolesAndAccessIdsAlreadyHandled = false; @@ -354,7 +354,7 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { @Override public WorkbasketQuery accessIdsHavePermission(WorkbasketPermission permission, String... accessIds) throws InvalidArgumentException, NotAuthorizedException { - taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN); // Checking pre-conditions if (permission == null) { throw new InvalidArgumentException("Permission can´t be null."); @@ -670,10 +670,10 @@ public class WorkbasketQueryImpl implements WorkbasketQuery { // (f,t) -> cannot happen, cannot be matched to meaningful query joinWithAccessList = true; checkReadPermission = true; - if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN) && accessId == null) { + if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN) && accessId == null) { checkReadPermission = false; joinWithAccessList = false; - } else if (taskanaEngine.isUserInRole(TaskanaRole.BUSINESS_ADMIN) && !usedToAugmentTasks) { + } else if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.BUSINESS_ADMIN) && !usedToAugmentTasks) { checkReadPermission = false; if (accessId == null && permission == null) { joinWithAccessList = false; diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketReportBuilderImpl.java index 2de498f7d..dbbccad9f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketReportBuilderImpl.java @@ -26,7 +26,7 @@ public class WorkbasketReportBuilderImpl private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class); private List combinedClassificationFilter; - WorkbasketReportBuilderImpl(TaskanaEngine taskanaEngine, TaskMonitorMapper taskMonitorMapper) { + WorkbasketReportBuilderImpl(TaskanaEngine.Internal taskanaEngine, TaskMonitorMapper taskMonitorMapper) { super(taskanaEngine, taskMonitorMapper); } @@ -43,7 +43,7 @@ public class WorkbasketReportBuilderImpl @Override public WorkbasketReport buildReport() throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to buildReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); WorkbasketReport report = new WorkbasketReport(this.columnHeaders); @@ -62,7 +62,7 @@ public class WorkbasketReportBuilderImpl @Override public WorkbasketReport buildPlannedDateBasedReport() throws NotAuthorizedException, InvalidArgumentException { LOGGER.debug("entry to buildPlannedDateReport(), this = {}", this); - this.taskanaEngine.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + this.taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); try { this.taskanaEngine.openConnection(); WorkbasketReport report = new WorkbasketReport(this.columnHeaders); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java index 9dc7d8786..693b9038c 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketServiceImpl.java @@ -43,14 +43,14 @@ public class WorkbasketServiceImpl implements WorkbasketService { private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketServiceImpl.class); private static final String ID_PREFIX_WORKBASKET = "WBI"; private static final String ID_PREFIX_WORKBASKET_AUTHORIZATION = "WAI"; - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngine; private WorkbasketMapper workbasketMapper; private DistributionTargetMapper distributionTargetMapper; private WorkbasketAccessMapper workbasketAccessMapper; - WorkbasketServiceImpl(TaskanaEngine taskanaEngine, WorkbasketMapper workbasketMapper, + WorkbasketServiceImpl(TaskanaEngine.Internal taskanaEngine, WorkbasketMapper workbasketMapper, DistributionTargetMapper distributionTargetMapper, WorkbasketAccessMapper workbasketAccessMapper) { - this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; + this.taskanaEngine = taskanaEngine; this.workbasketMapper = workbasketMapper; this.distributionTargetMapper = distributionTargetMapper; this.workbasketAccessMapper = workbasketAccessMapper; @@ -68,7 +68,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { throw new WorkbasketNotFoundException(workbasketId, "Workbasket with id " + workbasketId + " was not found."); } - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { this.checkAuthorization(workbasketId, WorkbasketPermission.READ); } return result; @@ -90,7 +90,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { throw new WorkbasketNotFoundException(workbasketKey, domain, "Workbasket with key " + workbasketKey + " and domain " + domain + " was not found."); } - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { this.checkAuthorization(workbasketKey, domain, WorkbasketPermission.READ); } return result; @@ -104,8 +104,8 @@ public class WorkbasketServiceImpl implements WorkbasketService { public Workbasket createWorkbasket(Workbasket newWorkbasket) throws InvalidWorkbasketException, NotAuthorizedException, WorkbasketAlreadyExistException, DomainNotFoundException { - LOGGER.debug("entry to createWorkbasket(workbasket)", newWorkbasket); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + LOGGER.debug("entry to createtWorkbasket(workbasket)", newWorkbasket); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); WorkbasketImpl workbasket = (WorkbasketImpl) newWorkbasket; try { @@ -137,7 +137,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { public Workbasket updateWorkbasket(Workbasket workbasketToUpdate) throws NotAuthorizedException { LOGGER.debug("entry to updateWorkbasket(workbasket)", workbasketToUpdate); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); WorkbasketImpl workbasket = (WorkbasketImpl) workbasketToUpdate; try { @@ -168,7 +168,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { public WorkbasketAccessItem createWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem) throws InvalidArgumentException, NotAuthorizedException, WorkbasketNotFoundException { LOGGER.debug("entry to createWorkbasketAccessItemn(workbasketAccessItem = {})", workbasketAccessItem); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem; try { taskanaEngine.openConnection(); @@ -199,7 +199,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { public void setWorkbasketAccessItems(String workbasketId, List wbAccessItems) throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to setWorkbasketAccessItems(workbasketAccessItems = {})", wbAccessItems.toString()); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); List newItems = new ArrayList<>(); try { taskanaEngine.openConnection(); @@ -240,7 +240,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { @Override public void deleteWorkbasketAccessItem(String accessItemId) throws NotAuthorizedException { LOGGER.debug("entry to deleteWorkbasketAccessItem(id = {})", accessItemId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); workbasketAccessMapper.delete(accessItemId); @@ -254,7 +254,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { @Override public void deleteWorkbasketAccessItemsForAccessId(String accessId) throws NotAuthorizedException { LOGGER.debug("entry to deleteWorkbasketAccessItemsForAccessId(accessId = {})", accessId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); workbasketAccessMapper.deleteAccessItemsForAccessId(accessId); @@ -350,12 +350,12 @@ public class WorkbasketServiceImpl implements WorkbasketService { private boolean skipAuthorizationCheck() { // Skip permission check is security is not enabled - if (!taskanaEngine.getConfiguration().isSecurityEnabled()) { + if (!taskanaEngine.getEngine().getConfiguration().isSecurityEnabled()) { LOGGER.debug("Skipping permissions check since security is disabled."); return true; } - if (taskanaEngine.isUserInRole(TaskanaRole.ADMIN)) { + if (taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN)) { LOGGER.debug("Skipping permissions check since user is in role ADMIN."); return true; } @@ -367,7 +367,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { public WorkbasketAccessItem updateWorkbasketAccessItem(WorkbasketAccessItem workbasketAccessItem) throws InvalidArgumentException, NotAuthorizedException { LOGGER.debug("entry to updateWorkbasketAccessItem(workbasketAccessItem = {}", workbasketAccessItem); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); WorkbasketAccessItemImpl accessItem = (WorkbasketAccessItemImpl) workbasketAccessItem; try { taskanaEngine.openConnection(); @@ -394,7 +394,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { @Override public List getWorkbasketAccessItems(String workbasketId) throws NotAuthorizedException { LOGGER.debug("entry to getWorkbasketAccessItems(workbasketId = {})", workbasketId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); List result = new ArrayList<>(); try { taskanaEngine.openConnection(); @@ -521,7 +521,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { taskanaEngine.openConnection(); // check that source workbasket exists getWorkbasket(workbasketId); - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { checkAuthorization(workbasketId, WorkbasketPermission.READ); } List distributionTargets = workbasketMapper @@ -547,7 +547,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { taskanaEngine.openConnection(); // check that source workbasket exists Workbasket workbasket = getWorkbasket(workbasketKey, domain); - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { checkAuthorization(workbasket.getId(), WorkbasketPermission.READ); } List distributionTargets = workbasketMapper @@ -574,7 +574,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { taskanaEngine.openConnection(); // check that source workbasket exists getWorkbasket(workbasketId); - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { checkAuthorization(workbasketId, WorkbasketPermission.READ); } List distributionSources = workbasketMapper @@ -600,7 +600,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { taskanaEngine.openConnection(); // check that source workbasket exists Workbasket workbasket = getWorkbasket(workbasketKey, domain); - if (!taskanaEngine.isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { + if (!taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN)) { checkAuthorization(workbasket.getId(), WorkbasketPermission.READ); } List distributionSources = workbasketMapper @@ -625,7 +625,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { sourceWorkbasketId, LoggerUtils.listToString(targetWorkbasketIds)); } - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); // check existence of source workbasket @@ -660,7 +660,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { throws NotAuthorizedException, WorkbasketNotFoundException { LOGGER.debug("entry to addDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})", sourceWorkbasketId, targetWorkbasketId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); // check existence of source workbasket @@ -693,7 +693,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { throws NotAuthorizedException { LOGGER.debug("entry to removeDistributionTarget(sourceWorkbasketId = {}, targetWorkbasketId = {})", sourceWorkbasketId, targetWorkbasketId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); // don't check existence of source / target workbasket to enable cleanup even if the db is corrupted @@ -729,7 +729,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { public boolean deleteWorkbasket(String workbasketId) throws NotAuthorizedException, WorkbasketNotFoundException, WorkbasketInUseException, InvalidArgumentException { LOGGER.debug("entry to deleteWorkbasket(workbasketId = {})", workbasketId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); @@ -740,7 +740,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { // check if the workbasket does exist and is empty (Task) this.getWorkbasket(workbasketId); - long numTasksNotCompletedInWorkbasket = taskanaEngine.getTaskService() + long numTasksNotCompletedInWorkbasket = taskanaEngine.getEngine().getTaskService() .createTaskQuery() .workbasketIdIn(workbasketId) .stateNotIn( @@ -752,7 +752,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { "Workbasket " + workbasketId + " contains non-completed tasks and can´t be marked for deletion."); } - long numTasksInWorkbasket = taskanaEngine.getTaskService() + long numTasksInWorkbasket = taskanaEngine.getEngine().getTaskService() .createTaskQuery() .workbasketIdIn(workbasketId) .count(); @@ -774,7 +774,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { private void markWorkbasketForDeletion(String workbasketId) throws NotAuthorizedException, InvalidArgumentException { LOGGER.debug("entry to markWorkbasketForDeletion(workbasketId = {})", workbasketId); - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); @@ -797,7 +797,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { LOGGER.debug("entry to deleteWorkbaskets(workbasketId = {})", LoggerUtils.listToString(workbasketsIds)); } - taskanaEngine.checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN); try { taskanaEngine.openConnection(); @@ -834,7 +834,7 @@ public class WorkbasketServiceImpl implements WorkbasketService { @Override public WorkbasketAccessItemQuery createWorkbasketAccessItemQuery() throws NotAuthorizedException { - taskanaEngine.checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN); + taskanaEngine.getEngine().checkRoleMembership(TaskanaRole.ADMIN, TaskanaRole.BUSINESS_ADMIN); return new WorkbasketAccessItemQueryImpl(this.taskanaEngine); } diff --git a/lib/taskana-core/src/test/java/acceptance/history/TaskEventProducerTest.java b/lib/taskana-core/src/test/java/acceptance/history/TaskEventProducerTest.java index c23982f39..4571874c7 100644 --- a/lib/taskana-core/src/test/java/acceptance/history/TaskEventProducerTest.java +++ b/lib/taskana-core/src/test/java/acceptance/history/TaskEventProducerTest.java @@ -1,12 +1,11 @@ package acceptance.history; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import org.junit.Test; import acceptance.AbstractAccTest; import pro.taskana.history.HistoryEventProducer; -import pro.taskana.impl.TaskanaEngineImpl; /** * Acceptance test for historyEventProducer class. @@ -15,7 +14,7 @@ public class TaskEventProducerTest extends AbstractAccTest { @Test public void testHistoryEventProducerIsNotEnabled() { - HistoryEventProducer historyEventProducer = ((TaskanaEngineImpl) taskanaEngine).getHistoryEventProducer(); - assertEquals(false, historyEventProducer.isEnabled()); + HistoryEventProducer historyEventProducer = taskanaEngine.getHistoryEventProducer(); + assertFalse(historyEventProducer.isEnabled()); } } diff --git a/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java index 977e81263..97c512b4b 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/CreateTaskAccTest.java @@ -33,7 +33,6 @@ import pro.taskana.exceptions.TaskAlreadyExistException; import pro.taskana.exceptions.TaskNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.impl.DaysToWorkingDaysConverter; -import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.impl.report.header.TimeIntervalColumnHeader; import pro.taskana.mappings.AttachmentMapper; @@ -63,7 +62,8 @@ public class CreateTaskAccTest extends AbstractAccTest { TaskService taskService = taskanaEngine.getTaskService(); Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A"); newTask.setClassificationKey("T2100"); - ObjectReference objectReference = createObjectReference("COMPANY_A", "SYSTEM_A", "INSTANCE_A", "VNR", "1234567"); + ObjectReference objectReference = createObjectReference("COMPANY_A", "SYSTEM_A", "INSTANCE_A", "VNR", + "1234567"); newTask.setPrimaryObjRef(objectReference); newTask.setOwner("user_1_1"); Task createdTask = taskService.createTask(newTask); @@ -90,7 +90,7 @@ public class CreateTaskAccTest extends AbstractAccTest { @WithAccessId( userName = "user_1_1", - groupNames = { "group_1" }) + groupNames = {"group_1"}) @Test public void testCreateTaskWithPlanned() throws NotAuthorizedException, InvalidArgumentException, @@ -108,7 +108,7 @@ public class CreateTaskAccTest extends AbstractAccTest { assertNotNull(createdTask.getCreated()); assertNotNull(createdTask.getPlanned()); assertEquals(createdTask.getCreated().plus(2, ChronoUnit.HOURS).truncatedTo(ChronoUnit.SECONDS), - createdTask.getPlanned().truncatedTo(ChronoUnit.SECONDS)); + createdTask.getPlanned().truncatedTo(ChronoUnit.SECONDS)); } @WithAccessId( @@ -157,7 +157,8 @@ public class CreateTaskAccTest extends AbstractAccTest { @Test public void testCreateSimpleTaskWithCustomAttributes() throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException, - WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException { + WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException, NoSuchFieldException, + IllegalAccessException { TaskService taskService = taskanaEngine.getTaskService(); Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A"); @@ -183,7 +184,7 @@ public class CreateTaskAccTest extends AbstractAccTest { assertEquals(false, createdTask.isRead()); assertEquals(false, createdTask.isTransferred()); // verify that the database content is as expected - TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine); + TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine); try { SqlSession session = engineProxy.getSqlSession(); Configuration config = session.getConfiguration(); @@ -224,7 +225,8 @@ public class CreateTaskAccTest extends AbstractAccTest { @Test public void testCreateExternalTaskWithAttachment() throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException, - WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException { + WorkbasketNotFoundException, TaskAlreadyExistException, TaskNotFoundException, NoSuchFieldException, + IllegalAccessException { TaskService taskService = taskanaEngine.getTaskService(); Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A"); @@ -240,7 +242,7 @@ public class CreateTaskAccTest extends AbstractAccTest { assertThat(createdTask.getCreator(), equalTo(CurrentUserContext.getUserid())); // verify that the database content is as expected - TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine); + TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine); try { SqlSession session = engineProxy.getSqlSession(); AttachmentMapper mapper = session.getMapper(AttachmentMapper.class); diff --git a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java index 96ae99b5e..446e75751 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/QueryTasksAccTest.java @@ -5,13 +5,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; - +import static pro.taskana.TaskQueryColumnName.A_CHANNEL; +import static pro.taskana.TaskQueryColumnName.A_CLASSIFICATION_ID; +import static pro.taskana.TaskQueryColumnName.A_REF_VALUE; +import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY; import static pro.taskana.TaskQueryColumnName.OWNER; import static pro.taskana.TaskQueryColumnName.STATE; -import static pro.taskana.TaskQueryColumnName.A_CHANNEL; -import static pro.taskana.TaskQueryColumnName.A_REF_VALUE; -import static pro.taskana.TaskQueryColumnName.A_CLASSIFICATION_ID; -import static pro.taskana.TaskQueryColumnName.CLASSIFICATION_KEY; import java.util.ArrayList; import java.util.List; @@ -43,7 +42,6 @@ import pro.taskana.exceptions.TaskAlreadyExistException; import pro.taskana.exceptions.TaskNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.impl.TaskImpl; -import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.mappings.TaskTestMapper; import pro.taskana.security.JAASRunner; @@ -63,8 +61,8 @@ public class QueryTasksAccTest extends AbstractAccTest { } @WithAccessId( - userName = "teamlead_1", - groupNames = {"admin"}) + userName = "teamlead_1", + groupNames = {"admin"}) @Test public void testQueryTaskValuesForEveryColumn() { TaskService taskService = taskanaEngine.getTaskService(); @@ -281,7 +279,7 @@ public class QueryTasksAccTest extends AbstractAccTest { .count(); long countAllIds = taskService.createTaskQuery().count(); assertEquals(countAllIds, countAllExternalIds); - } + } @WithAccessId( userName = "teamlead_1", @@ -824,7 +822,7 @@ public class QueryTasksAccTest extends AbstractAccTest { @Test public void testQueryTaskByCustomAttributes() throws NotAuthorizedException, InvalidArgumentException, ClassificationNotFoundException, - WorkbasketNotFoundException, TaskAlreadyExistException { + WorkbasketNotFoundException, TaskAlreadyExistException, NoSuchFieldException, IllegalAccessException { TaskService taskService = taskanaEngine.getTaskService(); Task newTask = taskService.newTask("USER_1_1", "DOMAIN_A"); @@ -836,7 +834,7 @@ public class QueryTasksAccTest extends AbstractAccTest { assertNotNull(createdTask); // query the task by custom attributes - TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest((TaskanaEngineImpl) taskanaEngine); + TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine); try { SqlSession session = engineProxy.getSqlSession(); Configuration config = session.getConfiguration(); @@ -1526,5 +1524,4 @@ public class QueryTasksAccTest extends AbstractAccTest { assertThat(result2.size(), equalTo(10)); } - } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/CategoryReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/CategoryReportBuilderImplTest.java index 6f1ea837d..02fa42f03 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/CategoryReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/CategoryReportBuilderImplTest.java @@ -21,12 +21,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.CustomField; import pro.taskana.TaskState; +import pro.taskana.TaskanaEngine; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; @@ -45,7 +45,10 @@ public class CategoryReportBuilderImplTest { private TaskMonitorServiceImpl cut; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; + + @Mock + private TaskanaEngine taskanaEngineMock; @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; @@ -56,9 +59,8 @@ public class CategoryReportBuilderImplTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - Mockito.doNothing().when(taskanaEngineImplMock).openConnection(); - Mockito.doNothing().when(taskanaEngineImplMock).returnConnection(); - when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); + when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true); when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null); } @@ -92,15 +94,17 @@ public class CategoryReportBuilderImplTest { .customAttributeFilterIn(customAttributeFilter) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1); @@ -142,15 +146,17 @@ public class CategoryReportBuilderImplTest { .withColumnHeaders(columnHeaders) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategories(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(actualResult.getRow("EXTERN").getTotalValue(), 1); @@ -194,15 +200,17 @@ public class CategoryReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listTaskIdsForSelectedItems(selectedItems); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false)); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); @@ -253,15 +261,17 @@ public class CategoryReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationQueryImplTest.java index 04ec8043b..8fb9ddc86 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationQueryImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationQueryImplTest.java @@ -8,13 +8,14 @@ import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.ClassificationSummary; +import pro.taskana.TaskanaEngine; /** * Test for ClassificationQueryImpl. @@ -24,22 +25,18 @@ import pro.taskana.ClassificationSummary; @RunWith(MockitoJUnitRunner.class) public class ClassificationQueryImplTest { + @InjectMocks private ClassificationQueryImpl classificationQueryImpl; @Mock - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngineInternal; @Mock private SqlSession sqlSession; - @Before - public void setup() { - classificationQueryImpl = new ClassificationQueryImpl(taskanaEngine); - } - @Test public void should_ReturnList_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); List result = classificationQueryImpl.nameIn("test", "asd", "blubber") @@ -52,7 +49,7 @@ public class ClassificationQueryImplTest { @Test public void should_ReturnListWithOffset_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); List result = classificationQueryImpl.nameIn("test", "asd", "blubber") @@ -65,7 +62,7 @@ public class ClassificationQueryImplTest { @Test public void should_ReturnOneItem_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectOne(any(), any())).thenReturn(new ClassificationSummaryImpl()); ClassificationSummary result = classificationQueryImpl.nameIn("test", "asd", "blubber") diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationReportBuilderImplTest.java index b89ecad19..e8025cb7f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationReportBuilderImplTest.java @@ -21,12 +21,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.CustomField; import pro.taskana.TaskState; +import pro.taskana.TaskanaEngine; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; @@ -48,7 +48,10 @@ public class ClassificationReportBuilderImplTest { private TaskMonitorServiceImpl cut; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; + + @Mock + private TaskanaEngine taskanaEngineMock; @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; @@ -59,9 +62,8 @@ public class ClassificationReportBuilderImplTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - Mockito.doNothing().when(taskanaEngineImplMock).openConnection(); - Mockito.doNothing().when(taskanaEngineImplMock).returnConnection(); - when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); + when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true); when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null); } @@ -95,15 +97,17 @@ public class ClassificationReportBuilderImplTest { .customAttributeFilterIn(customAttributeFilter) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals( @@ -146,15 +150,18 @@ public class ClassificationReportBuilderImplTest { .withColumnHeaders(columnHeaders) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals( @@ -194,16 +201,18 @@ public class ClassificationReportBuilderImplTest { .customAttributeFilterIn(customAttributeFilter) .buildDetailedReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); FoldableRow line = actualResult.getRow("CLI:000000000000000000000000000000000001"); assertNotNull(actualResult); @@ -247,16 +256,18 @@ public class ClassificationReportBuilderImplTest { .withColumnHeaders(columnHeaders) .buildDetailedReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassifications(any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); FoldableRow line = actualResult.getRow("CLI:000000000000000000000000000000000001"); assertNotNull(actualResult); @@ -303,15 +314,17 @@ public class ClassificationReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listTaskIdsForSelectedItems(selectedItems); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false)); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); @@ -364,15 +377,17 @@ public class ClassificationReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); @@ -382,7 +397,7 @@ public class ClassificationReportBuilderImplTest { public void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws NotAuthorizedException { List result = cut.createClassificationReportBuilder() - .workbasketIdIn(Arrays.asList("DieGibtsGarantiertNed")) + .workbasketIdIn(Collections.singletonList("DieGibtsGarantiertNed")) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_10); assertNotNull(result); } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java index af2922805..703292e50 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java @@ -2,13 +2,9 @@ package pro.taskana.impl; import static junit.framework.TestCase.assertEquals; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import java.util.List; - -import org.apache.ibatis.session.SqlSession; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -18,14 +14,12 @@ import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.Classification; -import pro.taskana.JobService; +import pro.taskana.TaskanaEngine; import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; -import pro.taskana.jobs.ScheduledJob; import pro.taskana.mappings.ClassificationMapper; -import pro.taskana.mappings.JobMapper; /** * Unit Test for ClassificationServiceImpl. @@ -41,24 +35,22 @@ public class ClassificationServiceImplTest { @Mock private ClassificationMapper classificationMapperMock; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine taskanaEngineMock; + @Mock + private TaskanaEngine.Internal taskanaEngineInternalMock; @Mock private ClassificationQueryImpl classificationQueryImplMock; - @Mock - private SqlSession sqlSessionMock; - @Mock - private JobService jobServiceMock; @Before public void setup() { - doNothing().when(taskanaEngineImplMock).openConnection(); - doNothing().when(taskanaEngineImplMock).returnConnection(); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); } @Test public void testCreateClassificationQuery() { cutSpy.createClassificationQuery(); - verifyNoMoreInteractions(classificationMapperMock, taskanaEngineImplMock, classificationQueryImplMock); + verifyNoMoreInteractions(classificationMapperMock, taskanaEngineInternalMock, taskanaEngineMock, + classificationQueryImplMock); } @Test(expected = InvalidArgumentException.class) @@ -67,7 +59,7 @@ public class ClassificationServiceImplTest { NotAuthorizedException, ClassificationAlreadyExistException { try { Classification classification = createDummyClassification(); - when(taskanaEngineImplMock.domainExists(any())).thenReturn(true); + when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true); cutSpy.createClassification(classification); } catch (InvalidArgumentException e) { assertEquals(e.getMessage(), "ClassificationId should be null on creation"); @@ -93,29 +85,4 @@ public class ClassificationServiceImplTest { return classificationImpl; } - /** - * This is the mock of a jobRunner. - */ - private class JobRunnerMock implements JobMapper { - - @Override - public void insertJob(ScheduledJob job) { - - } - - @Override - public List findJobsToRun() { - return null; - } - - @Override - public void update(ScheduledJob job) { - - } - - @Override - public void delete(ScheduledJob job) { - - } - } } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/CustomFieldValueReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/CustomFieldValueReportBuilderImplTest.java index 1668296de..4c4507e8f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/CustomFieldValueReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/CustomFieldValueReportBuilderImplTest.java @@ -20,12 +20,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.CustomField; import pro.taskana.TaskState; +import pro.taskana.TaskanaEngine; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; @@ -44,7 +44,10 @@ public class CustomFieldValueReportBuilderImplTest { private TaskMonitorServiceImpl cut; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; + + @Mock + private TaskanaEngine taskanaEngineMock; @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; @@ -55,9 +58,8 @@ public class CustomFieldValueReportBuilderImplTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - Mockito.doNothing().when(taskanaEngineImplMock).openConnection(); - Mockito.doNothing().when(taskanaEngineImplMock).returnConnection(); - when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); + when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true); when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null); } @@ -92,16 +94,18 @@ public class CustomFieldValueReportBuilderImplTest { .customAttributeFilterIn(customAttributeFilter) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1); @@ -143,15 +147,17 @@ public class CustomFieldValueReportBuilderImplTest { .withColumnHeaders(columnHeaders) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getTaskCountOfCustomFieldValues(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(actualResult.getRow("Geschaeftsstelle A").getTotalValue(), 1); @@ -195,15 +201,16 @@ public class CustomFieldValueReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ObjectReferenceQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ObjectReferenceQueryImplTest.java index 498fc34c0..c1f6ab9e1 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ObjectReferenceQueryImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ObjectReferenceQueryImplTest.java @@ -15,6 +15,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.ObjectReference; +import pro.taskana.TaskanaEngine; /** * Test for ObjectReferenceQueryImpl. @@ -27,7 +28,7 @@ public class ObjectReferenceQueryImplTest { ObjectReferenceQueryImpl objectReferenceQueryImpl; @Mock - TaskanaEngineImpl taskanaEngine; + TaskanaEngine.Internal taskanaEngine; @Mock SqlSession sqlSession; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskQueryImplTest.java index 7c693eb5f..4bd6b3041 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskQueryImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskQueryImplTest.java @@ -8,17 +8,16 @@ import java.util.List; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSession; -import org.apache.ibatis.session.SqlSessionManager; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.TaskState; import pro.taskana.TaskSummary; +import pro.taskana.TaskanaEngine; /** * Test for TaskQueryImpl. @@ -28,34 +27,32 @@ import pro.taskana.TaskSummary; @RunWith(MockitoJUnitRunner.class) public class TaskQueryImplTest { - @Mock - ClassificationServiceImpl classificationService; @Mock TaskServiceImpl taskServiceMock; - @InjectMocks + private TaskQueryImpl taskQueryImpl; @Mock - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngineInternal; + @Mock + private TaskanaEngine taskanaEngine; @Mock private SqlSession sqlSession; - @Mock - private SqlSessionManager sqlSessionManager; @Before public void setup() { + when(taskanaEngineInternal.getEngine()).thenReturn(taskanaEngine); when(taskanaEngine.getTaskService()).thenReturn(taskServiceMock); Configuration configuration = new org.apache.ibatis.session.Configuration(); configuration.setDatabaseId("h2"); - this.taskanaEngine.sessionManager = sqlSessionManager; - when(taskanaEngine.sessionManager.getConfiguration()).thenReturn(configuration); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); + when(sqlSession.getConfiguration()).thenReturn(configuration); - taskQueryImpl = new TaskQueryImpl(taskanaEngine); + taskQueryImpl = new TaskQueryImpl(taskanaEngineInternal); } @Test public void should_ReturnList_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); List intermediate = new ArrayList<>(); intermediate.add(new TaskSummaryImpl()); @@ -70,7 +67,6 @@ public class TaskQueryImplTest { @Test public void should_ReturnListWithOffset_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); List intermediate = new ArrayList<>(); intermediate.add(new TaskSummaryImpl()); @@ -85,7 +81,6 @@ public class TaskQueryImplTest { @Test public void should_ReturnOneItem_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectOne(any(), any())).thenReturn(new TaskSummaryImpl()); List intermediate = new ArrayList<>(); intermediate.add(new TaskSummaryImpl()); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskServiceImplTest.java index 930235ee7..eb49c51ac 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskServiceImplTest.java @@ -5,7 +5,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -15,11 +14,11 @@ import static org.mockito.Mockito.when; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; + import org.apache.ibatis.session.SqlSession; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; @@ -27,12 +26,12 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import pro.taskana.Attachment; import pro.taskana.Classification; import pro.taskana.ObjectReference; import pro.taskana.Task; import pro.taskana.TaskState; import pro.taskana.TaskSummary; +import pro.taskana.TaskanaEngine; import pro.taskana.Workbasket; import pro.taskana.WorkbasketPermission; import pro.taskana.WorkbasketService; @@ -56,14 +55,16 @@ import pro.taskana.security.CurrentUserContext; @PowerMockIgnore("javax.management.*") public class TaskServiceImplTest { - @InjectMocks private TaskServiceImpl cut; @Mock private TaskanaEngineConfiguration taskanaEngineConfigurationMock; @Mock - private TaskanaEngineImpl taskanaEngineMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; + + @Mock + private TaskanaEngine taskanaEngineMock; @Mock private TaskMapper taskMapperMock; @@ -83,24 +84,16 @@ public class TaskServiceImplTest { @Mock private ClassificationQueryImpl classificationQueryImplMock; - @Mock - private WorkbasketQueryImpl workbasketQueryImplMock; - @Mock private SqlSession sqlSessionMock; @Before - public void setup() throws WorkbasketNotFoundException { + public void setup() { MockitoAnnotations.initMocks(this); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketServiceMock); when(taskanaEngineMock.getClassificationService()).thenReturn(classificationServiceImplMock); - try { - Mockito.doNothing().when(workbasketServiceMock).checkAuthorization(any(), any()); - } catch (NotAuthorizedException e) { - e.printStackTrace(); - } - Mockito.doNothing().when(taskanaEngineMock).openConnection(); - Mockito.doNothing().when(taskanaEngineMock).returnConnection(); + cut = new TaskServiceImpl(taskanaEngineInternalMock, taskMapperMock, attachmentMapperMock); } @Test @@ -118,25 +111,24 @@ public class TaskServiceImplTest { when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfigurationMock); when(taskanaEngineConfigurationMock.isSecurityEnabled()).thenReturn(false); doReturn(task).when(cutSpy).getTask(task.getId()); - doNothing().when(taskMapperMock).update(any()); - doNothing().when(workbasketServiceMock).checkAuthorization(destinationWorkbasket.getId(), - WorkbasketPermission.APPEND); - doNothing().when(workbasketServiceMock).checkAuthorization(sourceWorkbasket.getId(), - WorkbasketPermission.TRANSFER); Task actualTask = cutSpy.transfer(task.getId(), destinationWorkbasket.getId()); - verify(taskanaEngineMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); verify(workbasketServiceMock, times(1)).checkAuthorization(destinationWorkbasket.getId(), WorkbasketPermission.APPEND); verify(workbasketServiceMock, times(1)).checkAuthorization(sourceWorkbasket.getId(), WorkbasketPermission.TRANSFER); verify(workbasketServiceMock, times(1)).getWorkbasket(destinationWorkbasket.getId()); verify(taskMapperMock, times(1)).update(any()); - verify(taskanaEngineMock, times(1)).returnConnection(); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); + verify(taskanaEngineMock).getHistoryEventProducer(); + verify(taskanaEngineMock).getWorkbasketService(); + verify(taskanaEngineMock).getClassificationService(); verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock, - taskMapperMock, objectReferenceMapperMock, workbasketServiceMock, sqlSessionMock, - classificationQueryImplMock); + taskanaEngineInternalMock, taskMapperMock, objectReferenceMapperMock, workbasketServiceMock, + sqlSessionMock, classificationQueryImplMock); assertThat(actualTask.isRead(), equalTo(false)); assertThat(actualTask.getState(), equalTo(TaskState.READY)); @@ -148,7 +140,6 @@ public class TaskServiceImplTest { public void testTaskSummaryEqualsHashCode() throws InterruptedException { Classification classification = createDummyClassification(); Workbasket wb = createWorkbasket("WB-ID", "WB-Key"); - Attachment attachment = JunitHelper.createDefaultAttachment(); ObjectReference objectReference = JunitHelper.createDefaultObjRef(); TaskImpl taskBefore = createUnitTestTask("ID", "taskName", wb.getKey(), classification); taskBefore.setPrimaryObjRef(objectReference); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskStatusReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskStatusReportBuilderImplTest.java index beca4a9f8..4db186edc 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskStatusReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskStatusReportBuilderImplTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.powermock.api.mockito.PowerMockito.when; import java.util.Arrays; @@ -17,12 +18,12 @@ import org.junit.runner.RunWith; import org.mockito.InOrder; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.TaskState; -import pro.taskana.configuration.TaskanaEngineConfiguration; +import pro.taskana.TaskanaEngine; +import pro.taskana.TaskanaRole; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.impl.report.item.TaskQueryItem; @@ -39,10 +40,10 @@ public class TaskStatusReportBuilderImplTest { private TaskMonitorServiceImpl cut; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; @Mock - private TaskanaEngineConfiguration taskanaEngineConfiguration; + private TaskanaEngine taskanaEngineMock; @Mock private TaskMonitorMapper taskMonitorMapperMock; @@ -50,8 +51,7 @@ public class TaskStatusReportBuilderImplTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - Mockito.doNothing().when(taskanaEngineImplMock).openConnection(); - Mockito.doNothing().when(taskanaEngineImplMock).returnConnection(); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); } @Test @@ -72,10 +72,14 @@ public class TaskStatusReportBuilderImplTest { TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport(); // then - InOrder inOrder = inOrder(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineImplMock); - inOrder.verify(taskanaEngineImplMock).openConnection(); + InOrder inOrder = inOrder(taskanaEngineMock, taskanaEngineInternalMock, taskMonitorMapperMock); + inOrder.verify(taskanaEngineInternalMock).getEngine(); + inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + inOrder.verify(taskanaEngineInternalMock).openConnection(); inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(null)); - inOrder.verify(taskanaEngineImplMock).returnConnection(); + inOrder.verify(taskanaEngineInternalMock).returnConnection(); + inOrder.verifyNoMoreInteractions(); + verifyNoMoreInteractions(taskanaEngineMock, taskanaEngineInternalMock, taskMonitorMapperMock); assertNotNull(report); assertEquals(1, report.rowSize()); @@ -103,10 +107,14 @@ public class TaskStatusReportBuilderImplTest { TaskStatusReport report = cut.createTaskStatusReportBuilder().stateIn(Collections.emptyList()).buildReport(); // then - InOrder inOrder = inOrder(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineImplMock); - inOrder.verify(taskanaEngineImplMock).openConnection(); + InOrder inOrder = inOrder(taskanaEngineMock, taskMonitorMapperMock, taskanaEngineInternalMock); + inOrder.verify(taskanaEngineInternalMock).getEngine(); + inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + inOrder.verify(taskanaEngineInternalMock).openConnection(); inOrder.verify(taskMonitorMapperMock).getTasksCountByState(eq(null), eq(Collections.emptyList())); - inOrder.verify(taskanaEngineImplMock).returnConnection(); + inOrder.verify(taskanaEngineInternalMock).returnConnection(); + inOrder.verifyNoMoreInteractions(); + verifyNoMoreInteractions(taskanaEngineMock, taskMonitorMapperMock, taskanaEngineInternalMock); assertNotNull(report); assertEquals(1, report.rowSize()); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskanaEngineProxyForTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskanaEngineProxyForTest.java index 18bd10ee0..d037cd95c 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/TaskanaEngineProxyForTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/TaskanaEngineProxyForTest.java @@ -1,7 +1,11 @@ package pro.taskana.impl; +import java.lang.reflect.Field; + import org.apache.ibatis.session.SqlSession; +import pro.taskana.TaskanaEngine; + /** * Utility class to enable unit tests to access mappers directly. * @@ -9,14 +13,16 @@ import org.apache.ibatis.session.SqlSession; */ public class TaskanaEngineProxyForTest { - TaskanaEngineImpl engine; + TaskanaEngine.Internal engine; - public TaskanaEngineProxyForTest(TaskanaEngineImpl taskanaEngine) { - engine = taskanaEngine; + public TaskanaEngineProxyForTest(TaskanaEngine taskanaEngine) throws NoSuchFieldException, IllegalAccessException { + Field internal = TaskanaEngineImpl.class.getDeclaredField("internal"); + internal.setAccessible(true); + engine = (TaskanaEngine.Internal) internal.get(taskanaEngine); } public SqlSession getSqlSession() { - return engine.sessionManager; + return engine.getSqlSession(); } public void openConnection() { diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java index 99d43be10..d0ab9bf01 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketAccessItemQueryImplTest.java @@ -8,12 +8,13 @@ import java.util.List; import org.apache.ibatis.session.SqlSession; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import pro.taskana.TaskanaEngine; import pro.taskana.WorkbasketAccessItem; /** @@ -24,22 +25,18 @@ import pro.taskana.WorkbasketAccessItem; @RunWith(MockitoJUnitRunner.class) public class WorkbasketAccessItemQueryImplTest { + @InjectMocks private WorkbasketAccessItemQueryImpl workbasketAccessItemQueryImpl; @Mock - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngineInternal; @Mock private SqlSession sqlSession; - @Before - public void setup() { - workbasketAccessItemQueryImpl = new WorkbasketAccessItemQueryImpl(taskanaEngine); - } - @Test public void should_ReturnList_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); List result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") @@ -49,7 +46,7 @@ public class WorkbasketAccessItemQueryImplTest { @Test public void should_ReturnListWithOffset_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); List result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") @@ -59,7 +56,7 @@ public class WorkbasketAccessItemQueryImplTest { @Test public void should_ReturnOneItem_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketAccessItemImpl()); WorkbasketAccessItem result = workbasketAccessItemQueryImpl.accessIdIn("test", "asd") diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java index d2ed9a823..6d8bc096b 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketQueryImplTest.java @@ -11,9 +11,11 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import pro.taskana.TaskanaEngine; import pro.taskana.WorkbasketSummary; /** @@ -24,22 +26,26 @@ import pro.taskana.WorkbasketSummary; @RunWith(MockitoJUnitRunner.class) public class WorkbasketQueryImplTest { + @InjectMocks private WorkbasketQueryImpl workbasketQueryImpl; @Mock - private TaskanaEngineImpl taskanaEngine; + private TaskanaEngine.Internal taskanaEngineInternal; + + @Mock + private TaskanaEngine taskanaEngine; @Mock private SqlSession sqlSession; @Before public void setup() { - workbasketQueryImpl = new WorkbasketQueryImpl(taskanaEngine); + when(taskanaEngineInternal.getEngine()).thenReturn(taskanaEngine); } @Test public void should_ReturnList_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any())).thenReturn(new ArrayList<>()); List result = workbasketQueryImpl @@ -51,7 +57,7 @@ public class WorkbasketQueryImplTest { @Test public void should_ReturnListWithOffset_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectList(any(), any(), any())).thenReturn(new ArrayList<>()); List result = workbasketQueryImpl @@ -63,7 +69,7 @@ public class WorkbasketQueryImplTest { @Test public void should_ReturnOneItem_when_BuilderIsUsed() { - when(taskanaEngine.getSqlSession()).thenReturn(sqlSession); + when(taskanaEngineInternal.getSqlSession()).thenReturn(sqlSession); when(sqlSession.selectOne(any(), any())).thenReturn(new WorkbasketSummaryImpl()); WorkbasketSummary result = workbasketQueryImpl diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketReportBuilderImplTest.java index 0787366d4..78c3b02de 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketReportBuilderImplTest.java @@ -21,12 +21,12 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.CustomField; import pro.taskana.TaskState; +import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaRole; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.exceptions.InvalidArgumentException; @@ -47,7 +47,10 @@ public class WorkbasketReportBuilderImplTest { private TaskMonitorServiceImpl cut; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine.Internal taskanaEngineInternalMock; + + @Mock + private TaskanaEngine taskanaEngineMock; @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; @@ -58,9 +61,8 @@ public class WorkbasketReportBuilderImplTest { @Before public void setup() { MockitoAnnotations.initMocks(this); - Mockito.doNothing().when(taskanaEngineImplMock).openConnection(); - Mockito.doNothing().when(taskanaEngineImplMock).returnConnection(); - when(taskanaEngineImplMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngineMock); + when(taskanaEngineMock.getConfiguration()).thenReturn(taskanaEngineConfiguration); when(taskanaEngineConfiguration.isGermanPublicHolidaysEnabled()).thenReturn(true); when(taskanaEngineConfiguration.getCustomHolidays()).thenReturn(null); } @@ -76,8 +78,8 @@ public class WorkbasketReportBuilderImplTest { List excludedClassificationIds = Collections.singletonList("L20000"); Map customAttributeFilter = new HashMap<>(); customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A"); - List combinedClassificationFilter = Arrays - .asList(new CombinedClassificationFilter("CLI:000000000000000000000000000000000003", + List combinedClassificationFilter = Collections.singletonList( + new CombinedClassificationFilter("CLI:000000000000000000000000000000000003", "CLI:000000000000000000000000000000000008")); List expectedResult = new ArrayList<>(); @@ -100,16 +102,18 @@ public class WorkbasketReportBuilderImplTest { .combinedClassificationFilterIn(combinedClassificationFilter) .buildReport(); - verify(taskanaEngineImplMock, times(1)) + verify(taskanaEngineInternalMock, times(1)) .openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals( @@ -128,8 +132,8 @@ public class WorkbasketReportBuilderImplTest { List excludedClassificationIds = Collections.singletonList("L20000"); Map customAttributeFilter = new HashMap<>(); customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A"); - List combinedClassificationFilter = Arrays - .asList(new CombinedClassificationFilter("CLI:000000000000000000000000000000000003", + List combinedClassificationFilter = Collections.singletonList( + new CombinedClassificationFilter("CLI:000000000000000000000000000000000003", "CLI:000000000000000000000000000000000008")); List columnHeaders = Collections.singletonList( new TimeIntervalColumnHeader(0, 0)); @@ -156,15 +160,17 @@ public class WorkbasketReportBuilderImplTest { .withColumnHeaders(columnHeaders) .buildReport(); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals( @@ -209,15 +215,17 @@ public class WorkbasketReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listTaskIdsForSelectedItems(selectedItems); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getTaskIdsForSelectedItems(any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false)); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); @@ -269,15 +277,17 @@ public class WorkbasketReportBuilderImplTest { .withColumnHeaders(columnHeaders) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1); - verify(taskanaEngineImplMock, times(1)).openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(any()); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals(expectedResult, actualResult); @@ -327,10 +337,11 @@ public class WorkbasketReportBuilderImplTest { .combinedClassificationFilterIn(combinedClassificationFilter) .buildPlannedDateBasedReport(); - verify(taskanaEngineImplMock, times(1)) + verify(taskanaEngineInternalMock, times(1)) .openConnection(); - verify(taskanaEngineImplMock, times(1)).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); - verify(taskanaEngineImplMock, times(2)).getConfiguration(); + verify(taskanaEngineMock, times(1)).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); + verify(taskanaEngineMock, times(2)).getConfiguration(); + verify(taskanaEngineInternalMock, times(3)).getEngine(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsBasedOnPlannedDate( @@ -342,8 +353,9 @@ public class WorkbasketReportBuilderImplTest { excludedClassificationIds, customAttributeFilter, combinedClassificationFilter); - verify(taskanaEngineImplMock, times(1)).returnConnection(); - verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); + verifyNoMoreInteractions(taskanaEngineInternalMock, taskanaEngineMock, taskMonitorMapperMock, + taskanaEngineConfiguration); assertNotNull(actualResult); assertEquals( diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketServiceImplTest.java index 9ee27c7fd..feb7e911f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/WorkbasketServiceImplTest.java @@ -5,7 +5,6 @@ import static org.hamcrest.core.IsNot.not; import static org.hamcrest.core.StringStartsWith.startsWith; import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.times; @@ -17,20 +16,19 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.apache.ibatis.session.SqlSession; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.mockito.junit.MockitoJUnitRunner; import pro.taskana.TaskQuery; import pro.taskana.TaskService; import pro.taskana.TaskSummary; +import pro.taskana.TaskanaEngine; import pro.taskana.Workbasket; import pro.taskana.WorkbasketType; import pro.taskana.configuration.TaskanaEngineConfiguration; @@ -42,7 +40,6 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.exceptions.WorkbasketInUseException; import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.mappings.DistributionTargetMapper; -import pro.taskana.mappings.TaskMapper; import pro.taskana.mappings.WorkbasketAccessMapper; import pro.taskana.mappings.WorkbasketMapper; @@ -61,12 +58,6 @@ public class WorkbasketServiceImplTest { @Mock private WorkbasketMapper workbasketMapperMock; - @Mock - private TaskMapper taskMapperMock; - - @Mock - private SqlSession sqlSessionMock; - @Mock private DistributionTargetMapper distributionTargetMapperMock; @@ -80,14 +71,17 @@ public class WorkbasketServiceImplTest { private TaskQuery taskQueryMock; @Mock - private TaskanaEngineImpl taskanaEngineImplMock; + private TaskanaEngine taskanaEngine; + + @Mock + private TaskanaEngine.Internal taskanaEngineInternalMock; @Mock private TaskanaEngineConfiguration taskanaEngineConfigurationMock; @Before public void setup() { - MockitoAnnotations.initMocks(this); + when(taskanaEngineInternalMock.getEngine()).thenReturn(taskanaEngine); } @Test @@ -96,26 +90,26 @@ public class WorkbasketServiceImplTest { WorkbasketAlreadyExistException, DomainNotFoundException { final int distTargetAmount = 2; WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1"); - doNothing().when(workbasketMapperMock).insert(expectedWb); doReturn(expectedWb).when(cutSpy).getWorkbasket(any()); - when(taskanaEngineImplMock.domainExists(any())).thenReturn(true); + when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true); Workbasket actualWb = cutSpy.createWorkbasket(expectedWb); cutSpy.setDistributionTargets(expectedWb.getId(), createTestDistributionTargets(distTargetAmount)); - verify(taskanaEngineImplMock, times(4)).openConnection(); + verify(taskanaEngineInternalMock, times(4)).openConnection(); verify(workbasketMapperMock, times(3)).insert(any()); verify(cutSpy, times(distTargetAmount + 1)).getWorkbasket(any()); verify(distributionTargetMapperMock, times(1)).deleteAllDistributionTargetsBySourceId(any()); verify(distributionTargetMapperMock, times(distTargetAmount)).insert(any(), any()); verify(workbasketMapperMock, times(3)).findByKeyAndDomain(any(), any()); verify(workbasketMapperMock, times(1)).update(any()); - verify(taskanaEngineImplMock, times(4)).returnConnection(); - verify(taskanaEngineImplMock, times(4)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(3)).domainExists(any()); + verify(taskanaEngineInternalMock, times(4)).returnConnection(); + verify(taskanaEngine, times(4)).checkRoleMembership(any()); + verify(taskanaEngineInternalMock, times(4)).getEngine(); + verify(taskanaEngineInternalMock, times(3)).domainExists(any()); verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock, distributionTargetMapperMock, - taskanaEngineImplMock, taskanaEngineConfigurationMock); + taskanaEngineInternalMock, taskanaEngine, taskanaEngineConfigurationMock); assertThat(actualWb.getId(), not(equalTo(null))); assertThat(actualWb.getId(), startsWith("WBI")); assertThat(actualWb.getCreated(), not(equalTo(null))); @@ -127,8 +121,7 @@ public class WorkbasketServiceImplTest { throws WorkbasketNotFoundException, NotAuthorizedException, InvalidWorkbasketException, WorkbasketAlreadyExistException, DomainNotFoundException { WorkbasketImpl expectedWb = createTestWorkbasket("ID-1", "Key-1"); - doNothing().when(workbasketMapperMock).insert(expectedWb); - when(taskanaEngineImplMock.domainExists(any())).thenReturn(true); + when(taskanaEngineInternalMock.domainExists(any())).thenReturn(true); try { cutSpy.createWorkbasket(expectedWb); @@ -138,17 +131,18 @@ public class WorkbasketServiceImplTest { doThrow(WorkbasketNotFoundException.class).when(cutSpy).getDistributionTargets(expectedWb.getId()).get(0); } catch (WorkbasketNotFoundException e) { - verify(taskanaEngineImplMock, times(3)).openConnection(); + verify(taskanaEngineInternalMock, times(3)).openConnection(); verify(workbasketMapperMock, times(1)).insert(expectedWb); verify(workbasketMapperMock, times(1)).findById(any()); verify(workbasketMapperMock, times(1)).findByKeyAndDomain(any(), any()); verify(cutSpy, times(1)).getWorkbasket(any()); - verify(taskanaEngineImplMock, times(3)).returnConnection(); - verify(taskanaEngineImplMock, times(2)).checkRoleMembership(any()); - verify(taskanaEngineImplMock, times(1)).domainExists(any()); + verify(taskanaEngineInternalMock, times(3)).returnConnection(); + verify(taskanaEngine, times(2)).checkRoleMembership(any()); + verify(taskanaEngineInternalMock, times(2)).getEngine(); + verify(taskanaEngineInternalMock, times(1)).domainExists(any()); verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock, distributionTargetMapperMock, - taskanaEngineImplMock, taskanaEngineConfigurationMock); + taskanaEngineInternalMock, taskanaEngine, taskanaEngineConfigurationMock); throw e; } } @@ -159,19 +153,18 @@ public class WorkbasketServiceImplTest { public void testCreateWorkbasket_NotCreated() throws Exception { WorkbasketImpl expectedWb = createTestWorkbasket(null, "Key-1"); - doNothing().when(workbasketMapperMock).insert(expectedWb); when(workbasketMapperMock.findById(any())).thenThrow(WorkbasketNotFoundException.class); try { cutSpy.createWorkbasket(expectedWb); } catch (Exception e) { - verify(taskanaEngineImplMock, times(1)).openConnection(); + verify(taskanaEngineInternalMock, times(1)).openConnection(); verify(workbasketMapperMock, times(1)).insert(expectedWb); verify(workbasketMapperMock, times(1)).findById(expectedWb.getId()); - verify(taskanaEngineImplMock, times(1)).returnConnection(); + verify(taskanaEngineInternalMock, times(1)).returnConnection(); verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketMapperMock, workbasketAccessMapperMock, distributionTargetMapperMock, - taskanaEngineImplMock, taskanaEngineConfigurationMock); + taskanaEngineInternalMock, taskanaEngineConfigurationMock); throw e; } } @@ -185,13 +178,13 @@ public class WorkbasketServiceImplTest { try { cutSpy.deleteWorkbasket(wb.getId()); } catch (WorkbasketNotFoundException e) { - verify(taskanaEngineImplMock, times(2)).openConnection(); + verify(taskanaEngineInternalMock, times(2)).openConnection(); verify(cutSpy, times(1)).getWorkbasket(wb.getId()); - verify(taskanaEngineImplMock, times(0)).getTaskService(); + verify(taskanaEngine, times(0)).getTaskService(); verify(taskServiceMock, times(0)).createTaskQuery(); verify(taskQueryMock, times(0)).workbasketIdIn(wb.getId()); verify(taskQueryMock, times(0)).count(); - verify(taskanaEngineImplMock, times(2)).returnConnection(); + verify(taskanaEngineInternalMock, times(2)).returnConnection(); verifyNoMoreInteractions(taskQueryMock, taskServiceMock, workbasketAccessMapperMock, distributionTargetMapperMock, taskanaEngineConfigurationMock); throw e; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java index dfd031411..a591bdd10 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java @@ -35,7 +35,6 @@ import pro.taskana.exceptions.InvalidWorkbasketException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.exceptions.WorkbasketNotFoundException; -import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.impl.WorkbasketImpl; import pro.taskana.impl.configuration.DBCleaner; @@ -54,12 +53,9 @@ import pro.taskana.security.WithAccessId; public class WorkbasketServiceImplIntAutocommitTest { private static final int SLEEP_TIME = 100; - private static final int THREE = 3; - static int counter = 0; private DataSource dataSource; private TaskanaEngineConfiguration taskanaEngineConfiguration; private TaskanaEngine taskanaEngine; - private TaskanaEngineImpl taskanaEngineImpl; private WorkbasketService workBasketService; private Instant now; @@ -76,8 +72,7 @@ public class WorkbasketServiceImplIntAutocommitTest { taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false, TaskanaEngineConfigurationTest.getSchemaName()); taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); - taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); + taskanaEngine.setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT); workBasketService = taskanaEngine.getWorkbasketService(); DBCleaner cleaner = new DBCleaner(); cleaner.clearDb(dataSource, false); @@ -187,11 +182,11 @@ public class WorkbasketServiceImplIntAutocommitTest { } private void updateModifiedTimestamps(Workbasket basket2, Workbasket basket3, Workbasket basket4, - Workbasket basket1) { + Workbasket basket1) throws NoSuchFieldException, IllegalAccessException { // created and modified timestamps are set by WorkbasketServiceImpl to 'now' when the workbasket is created // in order to create timestamps distict from the current time, we must use the mapper directly to bypass // WorkbasketServiceImpl - TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngineImpl); + TaskanaEngineProxyForTest engineProxy = new TaskanaEngineProxyForTest(taskanaEngine); SqlSession session = engineProxy.getSqlSession(); WorkbasketMapper mapper = session.getMapper(WorkbasketMapper.class);