From c92190ca706f783fb37883ae67af62e32ff8878a Mon Sep 17 00:00:00 2001 From: Benjamin Eckstein <13351939+benjamineckstein@users.noreply.github.com> Date: Wed, 22 Jan 2020 17:04:11 +0100 Subject: [PATCH] TSK-987: Fix some problems reported by spotbugs --- .../configuration/DbSchemaCreator.java | 6 +- .../simplehistory/impl/HistoryQueryImpl.java | 4 +- .../test/java/acceptance/AbstractAccTest.java | 61 +++-- .../acceptance/query/QueryHistoryAccTest.java | 209 ++++++++++-------- .../src/test/java/configuration/DbWriter.java | 2 +- .../TaskanaEngineConfigurationTest.java | 6 +- .../sampledata/SampleDataGenerator.java | 5 +- .../pro/taskana/TaskanaProducersTest.java | 38 ++-- .../configuration/DbSchemaCreator.java | 4 +- .../TaskanaEngineConfiguration.java | 3 +- .../taskana/impl/ClassificationQueryImpl.java | 4 +- .../java/pro/taskana/impl/TaskQueryImpl.java | 2 +- .../pro/taskana/impl/TaskanaEngineImpl.java | 8 - .../taskana/security/CurrentUserContext.java | 10 +- .../UpdateClassificationAccTest.java | 4 +- .../TaskanaEngineTestConfiguration.java | 23 +- .../TaskServiceImplIntExplicitTest.java | 6 +- ...orkbasketServiceImplIntAutocommitTest.java | 46 ---- .../taskana/TaskanaTransactionIntTest.java | 29 +-- .../java/pro/taskana/TransactionTest.java | 45 ++-- .../src/test/java/pro/taskana/RestHelper.java | 1 - .../src/test/java/pro/taskana/RestHelper.java | 2 +- .../rest/TestSchemaNameCustomizable.java | 85 +++---- 23 files changed, 291 insertions(+), 312 deletions(-) diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/configuration/DbSchemaCreator.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/configuration/DbSchemaCreator.java index 0fbdadc46..66a26f2a0 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/configuration/DbSchemaCreator.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/configuration/DbSchemaCreator.java @@ -44,12 +44,12 @@ public class DbSchemaCreator { runner.setStopOnError(true); runner.setLogWriter(logWriter); runner.setErrorLogWriter(errorLogWriter); - - InputStream resourceAsStream = this.getClass().getResourceAsStream(DB_SCHEMA); + + InputStream resourceAsStream = DbSchemaCreator.class.getResourceAsStream(DB_SCHEMA); BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlWithSchemaNameParsed(reader)); - } + } LOGGER.debug(outWriter.toString()); if (!errorWriter.toString().trim().isEmpty()) { LOGGER.error(errorWriter.toString()); diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/HistoryQueryImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/HistoryQueryImpl.java index 74b6d46a5..14d311cfe 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/HistoryQueryImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/HistoryQueryImpl.java @@ -639,8 +639,8 @@ public class HistoryQueryImpl implements HistoryQuery { private HistoryQueryImpl addOrderCriteria(String columnName, SortDirection sortDirection) { String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection); - orderBy.add(columnName.toString() + orderByDirection); - orderColumns.add(columnName.toString()); + orderBy.add(columnName + orderByDirection); + orderColumns.add(columnName); return this; } } diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java index 182f83398..efbb2fc52 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/AbstractAccTest.java @@ -7,6 +7,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; +import java.util.Objects; import java.util.Properties; import javax.sql.DataSource; import org.apache.ibatis.datasource.pooled.PooledDataSource; @@ -25,12 +26,9 @@ public class AbstractAccTest { private static final int POOL_TIME_TO_WAIT = 50; @SuppressWarnings("checkstyle:DeclarationOrder") - public static SimpleHistoryServiceImpl historyService; + private static SimpleHistoryServiceImpl historyService; - @SuppressWarnings("checkstyle:DeclarationOrder") - protected static TaskanaEngineConfiguration taskanaEngineConfiguration; - - private static DataSource dataSource = null; + private static DataSource dataSource; private static String schemaName = null; protected AbstractAccTest() { @@ -44,7 +42,8 @@ public class AbstractAccTest { public static void resetDb(String schemaName) throws SQLException { DataSource dataSource = getDataSource(); - taskanaEngineConfiguration = + + TaskanaEngineConfiguration taskanaEngineConfiguration = new TaskanaEngineConfiguration( dataSource, false, @@ -57,27 +56,20 @@ public class AbstractAccTest { writer.generateTestData(dataSource); } - /** - * returns the DataSource used for Junit test. If the file {user.home}/taskanaUnitTest.properties - * is present, the Datasource is created according to the properties jdbcDriver, jdbcUrl, - * dbUserName and dbPassword. Assuming, the database has the name tskdb, a sample properties file - * for DB2 looks as follows: jdbcDriver=com.ibm.db2.jcc.DB2Driver - * jdbcUrl=jdbc:db2://localhost:50000/tskdb dbUserName=db2user dbPassword=db2password If any of - * these properties is missing, or the file doesn't exist, the default Datasource for h2 in-memory - * db is created. - * - * @return dataSource for unit test - */ + static { + String userHomeDirectroy = System.getProperty("user.home"); + String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; + File f = new File(propertiesFileName); + if (f.exists() && !f.isDirectory()) { + dataSource = createDataSourceFromProperties(propertiesFileName); + } else { + dataSource = createDefaultDataSource(); + } + } + public static DataSource getDataSource() { if (dataSource == null) { - String userHomeDirectroy = System.getProperty("user.home"); - String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; - File f = new File(propertiesFileName); - if (f.exists() && !f.isDirectory()) { - dataSource = createDataSourceFromProperties(propertiesFileName); - } else { - dataSource = createDefaultDataSource(); - } + throw new RuntimeException("Datasource should be already initialized"); } return dataSource; } @@ -131,6 +123,10 @@ public class AbstractAccTest { return historyEvent; } + public static SimpleHistoryServiceImpl getHistoryService() { + return historyService; + } + /** * create Default DataSource for in-memory database. * @@ -142,16 +138,15 @@ public class AbstractAccTest { String jdbcUrl = "jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0"; String dbUserName = "sa"; String dbPassword = "sa"; - DataSource ds = + PooledDataSource ds = new PooledDataSource( Thread.currentThread().getContextClassLoader(), jdbcDriver, jdbcUrl, dbUserName, dbPassword); - ((PooledDataSource) ds).setPoolTimeToWait(POOL_TIME_TO_WAIT); - ((PooledDataSource) ds) - .forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly + ds.setPoolTimeToWait(POOL_TIME_TO_WAIT); + ds.forceCloseAll(); // otherwise the MyBatis pool is not initialized correctly return ds; } @@ -203,19 +198,15 @@ public class AbstractAccTest { } else { LOGGER.warn("propertiesFile " + propertiesFileName + " is incomplete" + warningMessage); LOGGER.warn("Using default Datasource for Test"); - ds = createDefaultDataSource(); } - } catch (FileNotFoundException e) { - LOGGER.warn("createDataSourceFromProperties caught Exception " + e); - LOGGER.warn("Using default Datasource for Test"); - ds = createDefaultDataSource(); } catch (IOException e) { LOGGER.warn("createDataSourceFromProperties caught Exception " + e); LOGGER.warn("Using default Datasource for Test"); + } + if (Objects.isNull(ds)) { ds = createDefaultDataSource(); } - return ds; } diff --git a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryHistoryAccTest.java b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryHistoryAccTest.java index 158b12977..20284878a 100644 --- a/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryHistoryAccTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/acceptance/query/QueryHistoryAccTest.java @@ -26,13 +26,13 @@ public class QueryHistoryAccTest extends AbstractAccTest { @Test public void testListValuesAscendingAndDescending() { List defaultList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.COMMENT, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.COMMENT, null); List ascendingList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.COMMENT, SortDirection.ASCENDING); List descendingList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.COMMENT, SortDirection.DESCENDING); @@ -44,7 +44,7 @@ public class QueryHistoryAccTest extends AbstractAccTest { @Test public void testComplexQuery() { HistoryQuery query = - historyService + getHistoryService() .createHistoryQuery() .businessProcessIdLike("just some string", "BPI:%") .domainLike("%A") @@ -64,8 +64,8 @@ public class QueryHistoryAccTest extends AbstractAccTest { @Test public void testQueryListOffset() { - List result = historyService.createHistoryQuery().list(1, 2); - List wrongList = historyService.createHistoryQuery().list(); + List result = getHistoryService().createHistoryQuery().list(1, 2); + List wrongList = getHistoryService().createHistoryQuery().list(); assertEquals(2, result.size()); @@ -75,275 +75,292 @@ public class QueryHistoryAccTest extends AbstractAccTest { @Test public void testCorrectResultWithWrongConstraints() { - List result = historyService.createHistoryQuery().list(1, 1000); + List result = getHistoryService().createHistoryQuery().list(1, 1000); assertEquals(2, result.size()); assertEquals("created by Peter", result.get(0).getComment()); - result = historyService.createHistoryQuery().list(100, 1000); + result = getHistoryService().createHistoryQuery().list(100, 1000); assertTrue(result.isEmpty()); } @Test public void testSingle() { - HistoryEventImpl single = historyService.createHistoryQuery().userIdIn("peter").single(); + HistoryEventImpl single = getHistoryService().createHistoryQuery().userIdIn("peter").single(); assertEquals("CREATE", single.getEventType()); - single = historyService.createHistoryQuery().eventTypeIn("CREATE", "xy").single(); + single = getHistoryService().createHistoryQuery().eventTypeIn("CREATE", "xy").single(); assertEquals("admin", single.getUserId()); } @Test public void testCount() { - long count = historyService.createHistoryQuery().userIdIn("peter").count(); + long count = getHistoryService().createHistoryQuery().userIdIn("peter").count(); assertEquals(1, count); - count = historyService.createHistoryQuery().count(); + count = getHistoryService().createHistoryQuery().count(); assertEquals(3, count); - count = historyService.createHistoryQuery().userIdIn("klaus", "arnold", "benni").count(); + count = getHistoryService().createHistoryQuery().userIdIn("klaus", "arnold", "benni").count(); assertEquals(0, count); } @Test public void testQueryAttributesIn() { List returnValues = - historyService.createHistoryQuery().businessProcessIdIn("BPI:01", "BPI:02").list(); + getHistoryService().createHistoryQuery().businessProcessIdIn("BPI:01", "BPI:02").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().parentBusinessProcessIdIn("BPI:01").list(); + returnValues = + getHistoryService().createHistoryQuery().parentBusinessProcessIdIn("BPI:01").list(); assertEquals(1, returnValues.size()); returnValues = - historyService + getHistoryService() .createHistoryQuery() .taskIdIn("TKI:000000000000000000000000000000000000") .list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().eventTypeIn("CREATE").list(); + returnValues = getHistoryService().createHistoryQuery().eventTypeIn("CREATE").list(); assertEquals(3, returnValues.size()); TimeInterval timeInterval = new TimeInterval(Instant.now().minusSeconds(10), Instant.now()); - returnValues = historyService.createHistoryQuery().createdWithin(timeInterval).list(); + returnValues = getHistoryService().createHistoryQuery().createdWithin(timeInterval).list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().userIdIn("admin").list(); + returnValues = getHistoryService().createHistoryQuery().userIdIn("admin").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().domainIn("DOMAIN_A").list(); + returnValues = getHistoryService().createHistoryQuery().domainIn("DOMAIN_A").list(); assertEquals(2, returnValues.size()); returnValues = - historyService + getHistoryService() .createHistoryQuery() .workbasketKeyIn("WBI:100000000000000000000000000000000001") .list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().porCompanyIn("00").list(); + returnValues = getHistoryService().createHistoryQuery().porCompanyIn("00").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().porSystemIn("PASystem").list(); + returnValues = getHistoryService().createHistoryQuery().porSystemIn("PASystem").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().porInstanceIn("22").list(); + returnValues = getHistoryService().createHistoryQuery().porInstanceIn("22").list(); assertEquals(1, returnValues.size()); - returnValues = historyService.createHistoryQuery().porTypeIn("VN").list(); + returnValues = getHistoryService().createHistoryQuery().porTypeIn("VN").list(); assertEquals(0, returnValues.size()); - returnValues = historyService.createHistoryQuery().porValueIn("11223344").list(); - assertEquals(2, returnValues.size()); - - returnValues = historyService.createHistoryQuery().taskClassificationKeyIn("L140101").list(); - assertEquals(2, returnValues.size()); - - returnValues = historyService.createHistoryQuery().taskClassificationCategoryIn("TASK").list(); + returnValues = getHistoryService().createHistoryQuery().porValueIn("11223344").list(); assertEquals(2, returnValues.size()); returnValues = - historyService.createHistoryQuery().attachmentClassificationKeyIn("DOCTYPE_DEFAULT").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().custom1In("custom1").list(); - assertEquals(3, returnValues.size()); - - returnValues = historyService.createHistoryQuery().custom2In("custom2").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().custom3In("custom3").list(); + getHistoryService().createHistoryQuery().taskClassificationKeyIn("L140101").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().custom4In("custom4").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().commentIn("created a bug").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().oldValueIn("old_val").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().newValueIn("new_val").list(); - assertEquals(1, returnValues.size()); - - returnValues = historyService.createHistoryQuery().oldDataIn("123").list(); + returnValues = + getHistoryService().createHistoryQuery().taskClassificationCategoryIn("TASK").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().newDataIn("456").list(); - assertEquals(3, returnValues.size()); - returnValues = historyService.createHistoryQuery().oldValueLike("old%").list(); + returnValues = + getHistoryService() + .createHistoryQuery() + .attachmentClassificationKeyIn("DOCTYPE_DEFAULT") + .list(); assertEquals(1, returnValues.size()); - returnValues = historyService.createHistoryQuery().newValueLike("new_%").list(); - assertEquals(2, returnValues.size()); - - returnValues = historyService.createHistoryQuery().oldDataLike("%23%").list(); + returnValues = getHistoryService().createHistoryQuery().custom1In("custom1").list(); assertEquals(3, returnValues.size()); - returnValues = historyService.createHistoryQuery().newDataLike("456%").list(); + returnValues = getHistoryService().createHistoryQuery().custom2In("custom2").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().custom3In("custom3").list(); + assertEquals(2, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().custom4In("custom4").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().commentIn("created a bug").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().oldValueIn("old_val").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().newValueIn("new_val").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().oldDataIn("123").list(); + assertEquals(2, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().newDataIn("456").list(); + assertEquals(3, returnValues.size()); + returnValues = getHistoryService().createHistoryQuery().oldValueLike("old%").list(); + assertEquals(1, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().newValueLike("new_%").list(); + assertEquals(2, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().oldDataLike("%23%").list(); + assertEquals(3, returnValues.size()); + + returnValues = getHistoryService().createHistoryQuery().newDataLike("456%").list(); assertEquals(3, returnValues.size()); } @Test public void testSomeLikeMethods() { List returnValues = - historyService.createHistoryQuery().businessProcessIdLike("BPI:0%").list(); + getHistoryService().createHistoryQuery().businessProcessIdLike("BPI:0%").list(); assertEquals(3, returnValues.size()); returnValues = - historyService.createHistoryQuery().parentBusinessProcessIdLike("BPI:01", " %").list(); + getHistoryService().createHistoryQuery().parentBusinessProcessIdLike("BPI:01", " %").list(); assertEquals(1, returnValues.size()); - returnValues = historyService.createHistoryQuery().taskIdLike("TKI:000000000000000%").list(); + returnValues = + getHistoryService().createHistoryQuery().taskIdLike("TKI:000000000000000%").list(); assertEquals(3, returnValues.size()); - returnValues = historyService.createHistoryQuery().oldValueLike("old%").list(); + returnValues = getHistoryService().createHistoryQuery().oldValueLike("old%").list(); assertEquals(1, returnValues.size()); - returnValues = historyService.createHistoryQuery().newValueLike("new_%").list(); + returnValues = getHistoryService().createHistoryQuery().newValueLike("new_%").list(); assertEquals(2, returnValues.size()); - returnValues = historyService.createHistoryQuery().oldDataLike("%23%").list(); + returnValues = getHistoryService().createHistoryQuery().oldDataLike("%23%").list(); assertEquals(3, returnValues.size()); - returnValues = historyService.createHistoryQuery().newDataLike("456%").list(); + returnValues = getHistoryService().createHistoryQuery().newDataLike("456%").list(); assertEquals(3, returnValues.size()); } @Test public void testListValues() { List returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.ID, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.ID, null); assertEquals(3, returnedList.size()); returnedList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.BUSINESS_PROCESS_ID, null); assertEquals(3, returnedList.size()); returnedList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.PARENT_BUSINESS_PROCESS_ID, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.TASK_ID, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.TASK_ID, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.EVENT_TYPE, null); + getHistoryService() + .createHistoryQuery() + .listValues(HistoryQueryColumnName.EVENT_TYPE, null); assertEquals(1, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.CREATED, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.CREATED, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.USER_ID, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.USER_ID, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.DOMAIN, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.DOMAIN, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.WORKBASKET_KEY, null); + getHistoryService() + .createHistoryQuery() + .listValues(HistoryQueryColumnName.WORKBASKET_KEY, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.POR_COMPANY, null); + getHistoryService() + .createHistoryQuery() + .listValues(HistoryQueryColumnName.POR_COMPANY, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.POR_SYSTEM, null); + getHistoryService() + .createHistoryQuery() + .listValues(HistoryQueryColumnName.POR_SYSTEM, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.POR_INSTANCE, null); + getHistoryService() + .createHistoryQuery() + .listValues(HistoryQueryColumnName.POR_INSTANCE, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.POR_TYPE, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.POR_TYPE, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.POR_VALUE, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.POR_VALUE, null); assertEquals(2, returnedList.size()); returnedList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.TASK_CLASSIFICATION_KEY, null); assertEquals(2, returnedList.size()); returnedList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.TASK_CLASSIFICATION_CATEGORY, null); assertEquals(2, returnedList.size()); returnedList = - historyService + getHistoryService() .createHistoryQuery() .listValues(HistoryQueryColumnName.ATTACHMENT_CLASSIFICATION_KEY, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.COMMENT, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.COMMENT, null); assertEquals(3, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.OLD_VALUE, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.OLD_VALUE, null); assertEquals(3, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.NEW_VALUE, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.NEW_VALUE, null); assertEquals(3, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_1, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_1, null); assertEquals(1, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_2, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_2, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_3, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_3, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_4, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.CUSTOM_4, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.OLD_DATA, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.OLD_DATA, null); assertEquals(2, returnedList.size()); returnedList = - historyService.createHistoryQuery().listValues(HistoryQueryColumnName.NEW_DATA, null); + getHistoryService().createHistoryQuery().listValues(HistoryQueryColumnName.NEW_DATA, null); assertEquals(1, returnedList.size()); } } diff --git a/history/taskana-simplehistory-provider/src/test/java/configuration/DbWriter.java b/history/taskana-simplehistory-provider/src/test/java/configuration/DbWriter.java index 83b6233fc..a8c982b00 100644 --- a/history/taskana-simplehistory-provider/src/test/java/configuration/DbWriter.java +++ b/history/taskana-simplehistory-provider/src/test/java/configuration/DbWriter.java @@ -31,7 +31,7 @@ public class DbWriter { ScriptRunner runner = null; try (Connection connection = dataSource.getConnection()) { runner = configScriptRunner(connection); - runner.runScript(new InputStreamReader(this.getClass().getResourceAsStream(INSERTVALUES))); + runner.runScript(new InputStreamReader(DbWriter.class.getResourceAsStream(INSERTVALUES))); } finally { LOGGER.debug(outWriter.toString()); if (!errorWriter.toString().trim().isEmpty()) { diff --git a/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java b/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java index 97c9f76ac..98d1bfe63 100644 --- a/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java +++ b/history/taskana-simplehistory-provider/src/test/java/configuration/TaskanaEngineConfigurationTest.java @@ -32,11 +32,11 @@ public class TaskanaEngineConfigurationTest extends AbstractAccTest { @Test public void testCreateTaskanaHistoryEventWithNonDefaultSchemaName() throws SQLException { resetDb("SOMECUSTOMSCHEMANAME"); - long count = historyService.createHistoryQuery().workbasketKeyIn("wbKey1").count(); + long count = getHistoryService().createHistoryQuery().workbasketKeyIn("wbKey1").count(); assertEquals(0, count); - historyService.create( + getHistoryService().create( AbstractAccTest.createHistoryEvent("wbKey1", "taskId1", "type1", "Some comment", "wbKey2")); - count = historyService.createHistoryQuery().workbasketKeyIn("wbKey1").count(); + count = getHistoryService().createHistoryQuery().workbasketKeyIn("wbKey1").count(); assertEquals(1, count); } } diff --git a/history/taskana-simplehistory-rest-spring/src/main/java/pro/taskana/rest/simplehistory/sampledata/SampleDataGenerator.java b/history/taskana-simplehistory-rest-spring/src/main/java/pro/taskana/rest/simplehistory/sampledata/SampleDataGenerator.java index a69ea5e2d..48ae988ef 100644 --- a/history/taskana-simplehistory-rest-spring/src/main/java/pro/taskana/rest/simplehistory/sampledata/SampleDataGenerator.java +++ b/history/taskana-simplehistory-rest-spring/src/main/java/pro/taskana/rest/simplehistory/sampledata/SampleDataGenerator.java @@ -49,7 +49,7 @@ public class SampleDataGenerator { runner.runScript( new BufferedReader( new InputStreamReader( - this.getClass().getResourceAsStream(CLEAR), StandardCharsets.UTF_8))); + SampleDataGenerator.class.getResourceAsStream(CLEAR), StandardCharsets.UTF_8))); runner.setStopOnError(true); runner.setLogWriter(logWriter); @@ -58,7 +58,8 @@ public class SampleDataGenerator { runner.runScript( new BufferedReader( new InputStreamReader( - this.getClass().getResourceAsStream(HISTORY_EVENT), StandardCharsets.UTF_8))); + SampleDataGenerator.class.getResourceAsStream(HISTORY_EVENT), + StandardCharsets.UTF_8))); } catch (Exception e) { LOGGER.error("caught Exception {}", e, e); diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaProducersTest.java b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaProducersTest.java index 96d4cf54e..eb1bd938b 100644 --- a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaProducersTest.java +++ b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaProducersTest.java @@ -4,6 +4,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import org.jboss.arquillian.container.test.api.Deployment; @@ -42,18 +43,16 @@ public class TaskanaProducersTest { Class.forName("org.h2.Driver"); int resultCount = 0; - try (Connection conn = - DriverManager.getConnection( - "jdbc:h2:~/taskana-h2-data/testdb;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0", - "SA", - "SA")) { - ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASKANA.TASK"); + try (Connection conn = getConnection()) { + try (Statement statement = conn.createStatement()) { + ResultSet rs = statement.executeQuery("SELECT ID, OWNER FROM TASKANA.TASK"); - while (rs.next()) { - resultCount++; + while (rs.next()) { + resultCount++; + } } + Assert.assertEquals(0, resultCount); } - Assert.assertEquals(0, resultCount); } @Test @@ -63,18 +62,23 @@ public class TaskanaProducersTest { Class.forName("org.h2.Driver"); int resultCount = 0; - try (Connection conn = - DriverManager.getConnection( - "jdbc:h2:~/taskana-h2-data/testdb;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0", - "SA", - "SA")) { - ResultSet rs = conn.createStatement().executeQuery("SELECT ID, OWNER FROM TASKANA.TASK"); + try (Connection conn = getConnection()) { + try (Statement statement = conn.createStatement()) { + ResultSet rs = statement.executeQuery("SELECT ID, OWNER FROM TASKANA.TASK"); - while (rs.next()) { - resultCount++; + while (rs.next()) { + resultCount++; + } } } Assert.assertEquals(0, resultCount); } + + private Connection getConnection() throws SQLException { + return DriverManager.getConnection( + "jdbc:h2:~/taskana-h2-data/testdb;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0", + "SA", + "SA"); + } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/configuration/DbSchemaCreator.java b/lib/taskana-core/src/main/java/pro/taskana/configuration/DbSchemaCreator.java index db3139a15..912483f6f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/configuration/DbSchemaCreator.java +++ b/lib/taskana-core/src/main/java/pro/taskana/configuration/DbSchemaCreator.java @@ -57,7 +57,7 @@ public class DbSchemaCreator { if (!isSchemaPreexisting(connection)) { String scriptPath = selectDbScriptFileName(connection.getMetaData().getDatabaseProductName()); - InputStream resourceAsStream = this.getClass().getResourceAsStream(scriptPath); + InputStream resourceAsStream = DbSchemaCreator.class.getResourceAsStream(scriptPath); BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlSchemaNameParsed(reader)); @@ -135,7 +135,7 @@ public class DbSchemaCreator { try { String scriptPath = selectDbSchemaDetectionScript(connection.getMetaData().getDatabaseProductName()); - InputStream resourceAsStream = this.getClass().getResourceAsStream(scriptPath); + InputStream resourceAsStream = DbSchemaCreator.class.getResourceAsStream(scriptPath); BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlSchemaNameParsed(reader)); diff --git a/lib/taskana-core/src/main/java/pro/taskana/configuration/TaskanaEngineConfiguration.java b/lib/taskana-core/src/main/java/pro/taskana/configuration/TaskanaEngineConfiguration.java index 93340d4a0..0bf795e86 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/configuration/TaskanaEngineConfiguration.java +++ b/lib/taskana-core/src/main/java/pro/taskana/configuration/TaskanaEngineConfiguration.java @@ -521,7 +521,8 @@ public class TaskanaEngineConfiguration { boolean loadFromClasspath = loadFromClasspath(propertiesFile); try { if (loadFromClasspath) { - InputStream inputStream = this.getClass().getResourceAsStream(propertiesFile); + InputStream inputStream = + TaskanaEngineConfiguration.class.getResourceAsStream(propertiesFile); if (inputStream == null) { LOGGER.error("taskana properties file {} was not found on classpath.", propertiesFile); } else { diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java index 7d69aca12..fbe40f5f1 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationQueryImpl.java @@ -635,8 +635,8 @@ public class ClassificationQueryImpl implements ClassificationQuery { private ClassificationQuery addOrderCriteria(String columnName, SortDirection sortDirection) { String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection); - orderBy.add(columnName.toString() + orderByDirection); - orderColumns.add(columnName.toString()); + orderBy.add(columnName + orderByDirection); + orderColumns.add(columnName); return this; } 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 55a48f0fa..aa6b75a7d 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 @@ -1684,7 +1684,7 @@ public class TaskQueryImpl implements TaskQuery { String orderByDirection = " " + (sortDirection == null ? SortDirection.ASCENDING : sortDirection); orderBy.add(columnName + orderByDirection); - orderColumns.add(columnName.toString()); + orderColumns.add(columnName); return this; } 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 1d034d4f2..cc63f9062 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 @@ -295,14 +295,6 @@ public class TaskanaEngineImpl implements TaskanaEngine { return stack; } - private SqlSessionManager getSessionFromStack() { - Deque stack = getSessionStack(); - if (stack.isEmpty()) { - return null; - } - return stack.peek(); - } - private void pushSessionToStack(SqlSessionManager session) { getSessionStack().push(session); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/security/CurrentUserContext.java b/lib/taskana-core/src/main/java/pro/taskana/security/CurrentUserContext.java index aa3b63731..f2af833ff 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/security/CurrentUserContext.java +++ b/lib/taskana-core/src/main/java/pro/taskana/security/CurrentUserContext.java @@ -1,5 +1,7 @@ package pro.taskana.security; +import static pro.taskana.configuration.TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds; + import java.lang.reflect.Method; import java.security.AccessController; import java.security.Principal; @@ -11,8 +13,6 @@ import javax.security.auth.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import pro.taskana.configuration.TaskanaEngineConfiguration; - /** * Provides the context information about the current (calling) user. The context is gathered from * the JAAS subject. @@ -54,7 +54,7 @@ public final class CurrentUserContext { for (Principal group : groups) { String groupNameFound = group.getName(); String groupNameReturned = groupNameFound; - if (TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds() && groupNameFound != null) { + if (shouldUseLowerCaseForAccessIds() && groupNameFound != null) { groupNameReturned = groupNameFound.toLowerCase(); } LOGGER.trace( @@ -102,7 +102,7 @@ public final class CurrentUserContext { LOGGER.debug("Returning the unique security name of first public credential: {}", o); String userIdFound = o.toString(); String userIdUsed = userIdFound; - if (TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds() && userIdFound != null) { + if (shouldUseLowerCaseForAccessIds() && userIdFound != null) { userIdUsed = userIdFound.toLowerCase(); } LOGGER.trace("Found User id {}. Returning User id {} ", userIdFound, userIdUsed); @@ -144,7 +144,7 @@ public final class CurrentUserContext { if (!(principal instanceof Group)) { String userIdFound = principal.getName(); String userIdUsed = userIdFound; - if (TaskanaEngineConfiguration.shouldUseLowerCaseForAccessIds() && userIdFound != null) { + if (shouldUseLowerCaseForAccessIds() && userIdFound != null) { userIdUsed = userIdFound.toLowerCase(); } LOGGER.trace("Found User id {}. Returning User id {} ", userIdFound, userIdUsed); diff --git a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java index 2941cca56..7696efc77 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java @@ -4,6 +4,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsNot.not; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -222,7 +223,6 @@ public class UpdateClassificationAccTest extends AbstractAccTest { final Instant before = Instant.now(); Classification classification = classificationService.getClassification("CLI:100000000000000000000000000000000003"); - Instant createdBefore = classification.getCreated(); final Instant modifiedBefore = classification.getModified(); classification.setPriority(1000); classification.setServiceLevel("P15D"); @@ -240,7 +240,7 @@ public class UpdateClassificationAccTest extends AbstractAccTest { classificationService.getClassification("CLI:100000000000000000000000000000000003"); assertNotNull(updatedClassification); - assertTrue(!modifiedBefore.isAfter(updatedClassification.getModified())); + assertFalse(modifiedBefore.isAfter(updatedClassification.getModified())); // TODO - resume old behaviour after attachment query is possible. TaskService taskService = taskanaEngine.getTaskService(); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java b/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java index 4def80699..02c805ddf 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/TaskanaEngineTestConfiguration.java @@ -21,11 +21,22 @@ public final class TaskanaEngineTestConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineTestConfiguration.class); private static final int POOL_TIME_TO_WAIT = 50; - private static DataSource dataSource = null; + private static DataSource dataSource; private static String schemaName = null; private TaskanaEngineTestConfiguration() {} + static { + String userHomeDirectroy = System.getProperty("user.home"); + String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; + File f = new File(propertiesFileName); + if (f.exists() && !f.isDirectory()) { + dataSource = createDataSourceFromProperties(propertiesFileName); + } else { + dataSource = createDefaultDataSource(); + } + } + /** * returns the Datasource used for Junit test. If the file {user.home}/taskanaUnitTest.properties * is present, the Datasource is created according to the properties jdbcDriver, jdbcUrl, @@ -38,16 +49,6 @@ public final class TaskanaEngineTestConfiguration { * @return dataSource for unit test */ public static DataSource getDataSource() { - if (dataSource == null) { - String userHomeDirectroy = System.getProperty("user.home"); - String propertiesFileName = userHomeDirectroy + "/taskanaUnitTest.properties"; - File f = new File(propertiesFileName); - if (f.exists() && !f.isDirectory()) { - dataSource = createDataSourceFromProperties(propertiesFileName); - } else { - dataSource = createDefaultDataSource(); - } - } return dataSource; } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java index 102a66421..078109004 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java @@ -100,9 +100,9 @@ class TaskServiceImplIntExplicitTest { classificationService = taskanaEngine.getClassificationService(); taskanaEngineImpl.setConnectionManagementMode(ConnectionManagementMode.EXPLICIT); workbasketService = taskanaEngine.getWorkbasketService(); - DbSchemaCreator creator = - new DbSchemaCreator(dataSource, dataSource.getConnection().getSchema()); - creator.run(); + try (Connection connection = dataSource.getConnection()) { + new DbSchemaCreator(dataSource, connection.getSchema()).run(); + } } @BeforeEach 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 cb12c2019..2458976d7 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 @@ -4,17 +4,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import java.sql.SQLException; -import java.time.Duration; import java.time.Instant; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.sql.DataSource; -import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -23,7 +17,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine.ConnectionManagementMode; -import pro.taskana.TimeInterval; import pro.taskana.Workbasket; import pro.taskana.WorkbasketAccessItem; import pro.taskana.WorkbasketService; @@ -36,11 +29,9 @@ import pro.taskana.exceptions.InvalidWorkbasketException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.exceptions.WorkbasketNotFoundException; -import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.impl.WorkbasketImpl; import pro.taskana.impl.configuration.TaskanaEngineTestConfiguration; import pro.taskana.impl.util.IdGenerator; -import pro.taskana.mappings.WorkbasketMapper; import pro.taskana.sampledata.SampleDataGenerator; import pro.taskana.security.JaasExtension; import pro.taskana.security.WithAccessId; @@ -208,35 +199,6 @@ class WorkbasketServiceImplIntAutocommitTest { } } - private void updateModifiedTimestamps( - Workbasket basket2, Workbasket basket3, Workbasket basket4, 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(taskanaEngine); - SqlSession session = engineProxy.getSqlSession(); - WorkbasketMapper mapper = session.getMapper(WorkbasketMapper.class); - - WorkbasketImpl wb1 = (WorkbasketImpl) basket1; - final WorkbasketImpl wb2 = (WorkbasketImpl) basket2; - final WorkbasketImpl wb3 = (WorkbasketImpl) basket3; - final WorkbasketImpl wb4 = (WorkbasketImpl) basket4; - - engineProxy.openConnection(); - wb1.setModified(now.minus(Duration.ofDays(10L))); - mapper.update(wb1); - wb2.setModified(now.minus(Duration.ofDays(15L))); - mapper.update(wb2); - wb3.setModified(now.minus(Duration.ofDays(20L))); - mapper.update(wb3); - wb4.setModified(now.minus(Duration.ofDays(30L))); - mapper.update(wb4); - engineProxy.returnConnection(); - } - private void createWorkbasketWithSecurity( Workbasket wb, String accessId, @@ -263,12 +225,4 @@ class WorkbasketServiceImplIntAutocommitTest { wb.setType(type); return wb; } - - private TimeInterval today() { - Instant begin = - LocalDateTime.of(LocalDate.now(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant(); - Instant end = - LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant(); - return new TimeInterval(begin, end); - } } diff --git a/lib/taskana-spring-example/src/test/java/pro/taskana/TaskanaTransactionIntTest.java b/lib/taskana-spring-example/src/test/java/pro/taskana/TaskanaTransactionIntTest.java index f7106926e..7639f7b38 100644 --- a/lib/taskana-spring-example/src/test/java/pro/taskana/TaskanaTransactionIntTest.java +++ b/lib/taskana-spring-example/src/test/java/pro/taskana/TaskanaTransactionIntTest.java @@ -146,21 +146,22 @@ class TaskanaTransactionIntTest { DomainNotFoundException, InvalidWorkbasketException, WorkbasketAlreadyExistException { final TaskanaEngineImpl taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; - Connection connection = dataSource.getConnection(); + try (Connection connection = dataSource.getConnection()) { - assertNotEquals(connection.getSchema(), "PUBLIC"); - jdbcTemplate.execute("INSERT INTO CUSTOMDB.TEST VALUES ('1', 'test')"); - jdbcTemplate.execute("INSERT INTO CUSTOMDB.TEST VALUES ('2', 'test2')"); - int result = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CUSTOMDB.TEST", Integer.class); - assertEquals(2, result); - Workbasket wbCreated = - taskanaEngine - .getWorkbasketService() - .createWorkbasket(createWorkBasket("key1", "workbasket1")); - Workbasket wb = taskanaEngineImpl.getWorkbasketService().getWorkbasket(wbCreated.getId()); - assertNotNull(wb); - result = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CUSTOMDB.TEST", Integer.class); - assertEquals(2, result); + assertNotEquals(connection.getSchema(), "PUBLIC"); + jdbcTemplate.execute("INSERT INTO CUSTOMDB.TEST VALUES ('1', 'test')"); + jdbcTemplate.execute("INSERT INTO CUSTOMDB.TEST VALUES ('2', 'test2')"); + int result = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CUSTOMDB.TEST", Integer.class); + assertEquals(2, result); + Workbasket wbCreated = + taskanaEngine + .getWorkbasketService() + .createWorkbasket(createWorkBasket("key1", "workbasket1")); + Workbasket wb = taskanaEngineImpl.getWorkbasketService().getWorkbasket(wbCreated.getId()); + assertNotNull(wb); + result = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM CUSTOMDB.TEST", Integer.class); + assertEquals(2, result); + } } @Test diff --git a/lib/taskana-spring/src/test/java/pro/taskana/TransactionTest.java b/lib/taskana-spring/src/test/java/pro/taskana/TransactionTest.java index d8026db63..377a88b24 100644 --- a/lib/taskana-spring/src/test/java/pro/taskana/TransactionTest.java +++ b/lib/taskana-spring/src/test/java/pro/taskana/TransactionTest.java @@ -4,6 +4,8 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; +import java.util.UUID; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; @@ -35,11 +37,11 @@ public class TransactionTest { @Before public void init() throws SQLException, ClassNotFoundException { Class.forName("org.h2.Driver"); - try (Connection conn = - DriverManager.getConnection( - "jdbc:h2:mem:task-engine;IGNORECASE=TRUE;LOCK_MODE=0", "SA", "SA")) { - conn.createStatement().executeUpdate("DELETE FROM TASK WHERE 1=1"); - conn.commit(); + try (Connection conn = getConnection()) { + try (Statement statement = conn.createStatement()) { + statement.executeUpdate("DELETE FROM TASK WHERE 1=1"); + conn.commit(); + } } } @@ -49,13 +51,13 @@ public class TransactionTest { restTemplate.getForEntity("http://127.0.0.1:" + port + "/test", String.class); int resultCount = 0; - try (Connection conn = - DriverManager.getConnection( - "jdbc:h2:mem:task-engine;IGNORECASE=TRUE;LOCK_MODE=0", "SA", "SA")) { - ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK"); + try (Connection conn = getConnection()) { + try (Statement statement = conn.createStatement()) { + ResultSet rs = statement.executeQuery("SELECT ID FROM TASK"); - while (rs.next()) { - resultCount++; + while (rs.next()) { + resultCount++; + } } } @@ -68,16 +70,21 @@ public class TransactionTest { restTemplate.postForEntity("http://127.0.0.1:" + port + "/test", null, String.class); int resultCount = 0; - try (Connection conn = - DriverManager.getConnection( - "jdbc:h2:mem:task-engine;IGNORECASE=TRUE;LOCK_MODE=0", "SA", "SA")) { - ResultSet rs = conn.createStatement().executeQuery("SELECT ID FROM TASK"); + try (Connection conn = getConnection()) { + try (Statement statement = conn.createStatement()) { + ResultSet rs = statement.executeQuery("SELECT ID FROM TASK"); - while (rs.next()) { - resultCount++; + while (rs.next()) { + resultCount++; + } } - } - Assert.assertEquals(0, resultCount); + Assert.assertEquals(0, resultCount); + } + } + + private Connection getConnection() throws SQLException { + return DriverManager.getConnection( + "jdbc:h2:mem:task-engine;IGNORECASE=TRUE;LOCK_MODE=0", "SA", UUID.randomUUID().toString()); } } diff --git a/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/RestHelper.java b/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/RestHelper.java index 555902e39..45011139e 100644 --- a/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/RestHelper.java +++ b/rest/taskana-rest-spring-example-common/src/test/java/pro/taskana/RestHelper.java @@ -18,7 +18,6 @@ import org.springframework.web.util.UriComponentsBuilder; @Component public class RestHelper { - public static RestTemplate template = getRestTemplate(); @Autowired Environment environment; public String toUrl(String relativeUrl, Object... uriVariables) { diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/RestHelper.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/RestHelper.java index 555902e39..7d04c43db 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/RestHelper.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/RestHelper.java @@ -18,7 +18,7 @@ import org.springframework.web.util.UriComponentsBuilder; @Component public class RestHelper { - public static RestTemplate template = getRestTemplate(); + public static final RestTemplate template = getRestTemplate(); @Autowired Environment environment; public String toUrl(String relativeUrl, Object... uriVariables) { diff --git a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/TestSchemaNameCustomizable.java b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/TestSchemaNameCustomizable.java index e16979c1a..686e53252 100644 --- a/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/TestSchemaNameCustomizable.java +++ b/rest/taskana-rest-spring/src/test/java/pro/taskana/rest/TestSchemaNameCustomizable.java @@ -1,18 +1,19 @@ package pro.taskana.rest; import java.sql.Connection; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; +import java.util.Locale; import javax.sql.DataSource; -import org.junit.Assert; +import org.junit.Assume; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import pro.taskana.TaskanaSpringBootTest; import pro.taskana.configuration.DB; import pro.taskana.configuration.SpringTaskanaEngineConfiguration; -import pro.taskana.exceptions.SystemException; import pro.taskana.sampledata.SampleDataGenerator; /** Test that the schema name can be customized. */ @@ -24,51 +25,61 @@ class TestSchemaNameCustomizable { @Autowired private DataSource dataSource; - void resetDb() { + void resetDb() throws SQLException { SampleDataGenerator sampleDataGenerator; - try { - if (DB.POSTGRESS.dbProductname.equals( - dataSource.getConnection().getMetaData().getDatabaseProductName())) { - isPostgres = true; - schemaName = schemaName.toLowerCase(); + try (Connection connection = dataSource.getConnection()) { + String databaseProductName = connection.getMetaData().getDatabaseProductName(); + isPostgres = DB.POSTGRESS.dbProductname.equals(databaseProductName); + + if (isPostgres) { + schemaName = schemaName.toLowerCase(Locale.ENGLISH); + } + } + new SpringTaskanaEngineConfiguration(dataSource, true, true, schemaName); + sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); + sampleDataGenerator.generateSampleData(); + } + + @Test + void checkCustomSchemaNameIsDefined_Postgres() throws SQLException { + resetDb(); + Assume.assumeTrue("Test only executed with Postgres database", isPostgres); + try (Connection connection = dataSource.getConnection()) { + + try (PreparedStatement preparedStatement = + connection.prepareStatement( + "SELECT tablename FROM pg_catalog.pg_tables where schemaname = ?")) { + preparedStatement.setString(1, schemaName); + ResultSet rs = preparedStatement.executeQuery(); + + boolean tablefound = false; + while (rs.next() && !tablefound) { + String tableName = rs.getString("tablename"); + tablefound = tableName.equals("workbasket"); + } + Assertions.assertTrue(tablefound, "Table workbasket should be there ..."); } - new SpringTaskanaEngineConfiguration(dataSource, true, true, schemaName); - sampleDataGenerator = new SampleDataGenerator(dataSource, schemaName); - sampleDataGenerator.generateSampleData(); - } catch (SQLException e) { - throw new SystemException("tried to reset DB and caught Exception " + e, e); } } @Test - void chekCustomSchemaNameIsDefined() { + void checkCustomSchemaNameIsDefined_OtherDb() throws SQLException { resetDb(); - ResultSet rs; + Assume.assumeFalse("Test only executed if NOT Postgres", isPostgres); try (Connection connection = dataSource.getConnection()) { - Statement stmt = connection.createStatement(); - if (isPostgres) { - rs = - stmt.executeQuery( - "SELECT * FROM pg_catalog.pg_tables where schemaname = '" - + schemaName.toLowerCase() - + "'"); - } else { - rs = - stmt.executeQuery( - "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '" - + schemaName - + "'"); - } - while (rs.next()) { - String tableName = rs.getString(isPostgres ? "tablename" : "TABLE_NAME"); - if (tableName.equals(isPostgres ? "workbasket" : "WORKBASKET")) { - Assert.assertEquals(tableName, isPostgres ? "workbasket" : "WORKBASKET"); + try (PreparedStatement preparedStatement = + connection.prepareStatement( + "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ?")) { + preparedStatement.setString(1, schemaName); + ResultSet rs = preparedStatement.executeQuery(); + boolean tablefound = false; + while (rs.next() && !tablefound) { + String tableName = rs.getString("TABLE_NAME"); + tablefound = tableName.equals("WORKBASKET"); } + Assertions.assertTrue(tablefound, "Table WORKBASKET should be there ..."); } - - } catch (SQLException e) { - e.printStackTrace(); } } }