From 1e3174ba94112c4580954e31386cb7de909bbc98 Mon Sep 17 00:00:00 2001 From: benjamineckstein Date: Wed, 11 Dec 2019 12:35:55 +0100 Subject: [PATCH] TSK-987: Check and fix problems identified by spotbugs --- .../configuration/DbSchemaCreator.java | 8 +++++--- .../impl/TaskanaHistoryEngineImpl.java | 16 ++++++--------- .../sampledata/SampleDataGenerator.java | 20 ++++++++++++------- .../java/pro/taskana/TaskanaProducers.java | 7 ++++++- .../configuration/DbSchemaCreator.java | 20 +++++++++++++------ .../TaskanaEngineConfiguration.java | 3 ++- .../history/events/task/TaskEvent.java | 14 ------------- .../impl/ClassificationServiceImpl.java | 8 ++++---- .../java/pro/taskana/impl/TaskQueryImpl.java | 3 +-- .../jobs/ClassificationChangedJob.java | 4 ++-- .../main/java/pro/taskana/jobs/JobRunner.java | 3 --- .../java/pro/taskana/jobs/TaskCleanupJob.java | 10 +++++----- .../taskana/jobs/WorkbasketCleanupJob.java | 8 ++++---- .../taskana/security/CurrentUserContext.java | 4 ++-- .../rest/AbstractPagingController.java | 2 +- .../ClassificationDefinitionController.java | 16 ++++++++++----- .../java/pro/taskana/rest/TaskController.java | 2 +- 17 files changed, 77 insertions(+), 71 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 7ab79e5ee..be3cadb56 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 @@ -2,10 +2,12 @@ package pro.taskana.simplehistory.configuration; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.SQLException; @@ -32,7 +34,6 @@ public class DbSchemaCreator { public DbSchemaCreator(DataSource dataSource, String schema) throws SQLException { this.dataSource = dataSource; this.schemaName = schema; - run(); } /** @@ -49,8 +50,9 @@ public class DbSchemaCreator { runner.setLogWriter(logWriter); runner.setErrorLogWriter(errorLogWriter); try { - BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass() - .getResourceAsStream(DB_SCHEMA))); + InputStream resourceAsStream = this.getClass() + .getResourceAsStream(DB_SCHEMA); + BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlWithSchemaNameParsed(reader)); } finally { runner.closeConnection(); diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskanaHistoryEngineImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskanaHistoryEngineImpl.java index 256c3a12e..9b0b7beee 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskanaHistoryEngineImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/TaskanaHistoryEngineImpl.java @@ -34,11 +34,7 @@ public class TaskanaHistoryEngineImpl implements TaskanaHistoryEngine { protected TransactionFactory transactionFactory; - protected java.sql.Connection connection = null; - - protected DbSchemaCreator dbSchemaCreator; - - protected static ThreadLocal> sessionStack = new ThreadLocal<>(); + protected static final ThreadLocal> SESSION_STACK = new ThreadLocal<>(); protected TaskanaHistory taskanaHistoryService; @@ -47,9 +43,9 @@ public class TaskanaHistoryEngineImpl implements TaskanaHistoryEngine { createTransactionFactory(this.taskanaEngineConfiguration.getUseManagedTransactions()); this.sessionManager = createSqlSessionManager(); - dbSchemaCreator = new DbSchemaCreator(taskanaEngineConfiguration.getDatasource(), - taskanaEngineConfiguration.getSchemaName()); - + new DbSchemaCreator(taskanaEngineConfiguration.getDatasource(), + taskanaEngineConfiguration.getSchemaName()). + run(); } public static TaskanaHistoryEngineImpl createTaskanaEngine( @@ -161,10 +157,10 @@ public class TaskanaHistoryEngineImpl implements TaskanaHistoryEngine { * @return Stack of SqlSessionManager */ protected static Deque getSessionStack() { - Deque stack = sessionStack.get(); + Deque stack = SESSION_STACK.get(); if (stack == null) { stack = new ArrayDeque<>(); - sessionStack.set(stack); + SESSION_STACK.set(stack); } return stack; } 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 a400020eb..f925c15fc 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 @@ -6,6 +6,7 @@ import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; import java.nio.charset.StandardCharsets; +import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; @@ -21,15 +22,20 @@ public class SampleDataGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(SampleDataGenerator.class); private static final String TEST_DATA = "/sql.sample-data"; - private static final String CLEAR = TEST_DATA + "/clear-db.sql"; - private static final String HISTORY_EVENT = TEST_DATA + "/history-event.sql"; + private static final String CLEAR = TEST_DATA + "/clear-db.sql"; + private static final String HISTORY_EVENT = TEST_DATA + "/history-event.sql"; private ScriptRunner runner; DataSource dataSource; + String dbProductName; public SampleDataGenerator(DataSource dataSource) throws SQLException { - if (LOGGER.isTraceEnabled()) { - LOGGER.trace(dataSource.getConnection().getMetaData().toString()); + try (Connection connection = dataSource.getConnection()) { + dbProductName = connection.getMetaData().getDatabaseProductName(); + if (LOGGER.isTraceEnabled()) { + String msg = connection.getMetaData().toString(); + LOGGER.trace(msg); + } } this.dataSource = dataSource; @@ -43,7 +49,7 @@ public class SampleDataGenerator { StringWriter errorWriter = new StringWriter(); PrintWriter errorLogWriter = new PrintWriter(errorWriter); try { - runner.runScript(selectSchemaScript(dataSource.getConnection().getMetaData().getDatabaseProductName(), schemaName)); + runner.runScript(selectSchemaScript(dbProductName, schemaName)); runner.setStopOnError(false); runner.runScript(new BufferedReader( new InputStreamReader(this.getClass().getResourceAsStream(CLEAR), StandardCharsets.UTF_8))); @@ -68,8 +74,8 @@ public class SampleDataGenerator { private StringReader selectSchemaScript(String dbProductName, String schemaName) { return new StringReader("PostgreSQL".equals(dbProductName) - ? "SET search_path TO " + schemaName + ";" - : "SET SCHEMA " + schemaName + ";"); + ? "SET search_path TO " + schemaName + ";" + : "SET SCHEMA " + schemaName + ";"); } } diff --git a/lib/taskana-cdi/src/main/java/pro/taskana/TaskanaProducers.java b/lib/taskana-cdi/src/main/java/pro/taskana/TaskanaProducers.java index c2fc28130..eb9624ec2 100644 --- a/lib/taskana-cdi/src/main/java/pro/taskana/TaskanaProducers.java +++ b/lib/taskana-cdi/src/main/java/pro/taskana/TaskanaProducers.java @@ -2,6 +2,8 @@ package pro.taskana; import java.io.IOException; import java.io.InputStream; +import java.sql.Connection; +import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.util.Properties; @@ -46,7 +48,10 @@ public class TaskanaProducers { ctx = new InitialContext(); properties.load(propertyStream); dataSource = (DataSource) ctx.lookup(properties.getProperty("datasource.jndi")); - LOGGER.debug("---------------> " + dataSource.getConnection().getMetaData()); + try (Connection connection = dataSource.getConnection()) { + DatabaseMetaData metaData = connection.getMetaData(); + LOGGER.debug("---------------> " + metaData); + } this.taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, true, false, "TASKANA"); } catch (NamingException | SQLException | IOException e) { LOGGER.error("Could not start Taskana: ", e); 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 7acac0e38..a5d2cde1d 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 @@ -2,10 +2,12 @@ package pro.taskana.configuration; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringReader; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.SQLException; import java.util.Map; @@ -61,12 +63,16 @@ public class DbSchemaCreator { */ public void run() throws SQLException { Connection connection = dataSource.getConnection(); - LOGGER.debug("Using database of type {} with url '{}'", connection.getMetaData().getDatabaseProductName(), connection.getMetaData().getURL()); + LOGGER.debug("Using database of type {} with url '{}'", connection.getMetaData().getDatabaseProductName(), + connection.getMetaData().getURL()); ScriptRunner runner = getScriptRunnerInstance(connection); try { if (!isSchemaPreexisting(connection)) { - BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass() - .getResourceAsStream(selectDbScriptFileName(connection.getMetaData().getDatabaseProductName())))); + String scriptPath = selectDbScriptFileName(connection.getMetaData().getDatabaseProductName()); + InputStream resourceAsStream = this.getClass() + .getResourceAsStream(scriptPath); + BufferedReader reader = new BufferedReader( + new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlSchemaNameParsed(reader)); } } finally { @@ -84,15 +90,17 @@ public class DbSchemaCreator { runner.setLogWriter(logWriter); runner.setErrorLogWriter(errorLogWriter); return runner; - } + } private boolean isSchemaPreexisting(Connection connection) { ScriptRunner runner = getScriptRunnerInstance(connection); StringWriter errorWriter = new StringWriter(); runner.setErrorLogWriter(new PrintWriter(errorWriter)); try { - BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass() - .getResourceAsStream(selectDbSchemaDetectionScript(connection.getMetaData().getDatabaseProductName())))); + String scriptPath = selectDbSchemaDetectionScript(connection.getMetaData().getDatabaseProductName()); + InputStream resourceAsStream = this.getClass() + .getResourceAsStream(scriptPath); + BufferedReader reader = new BufferedReader(new InputStreamReader(resourceAsStream, StandardCharsets.UTF_8)); runner.runScript(getSqlSchemaNameParsed(reader)); } catch (Exception e) { LOGGER.debug("Schema does not exist."); 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 3209ba354..b175c2106 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 @@ -5,6 +5,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.SQLException; import java.time.Duration; @@ -332,7 +333,7 @@ public class TaskanaEngineConfiguration { LOGGER.error("taskana properties file {} was not found on classpath.", propertiesFile); } else { - props.load(new InputStreamReader(inputStream)); + props.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); LOGGER.debug("Role properties were loaded from file {} from classpath.", propertiesFile); } } else { diff --git a/lib/taskana-core/src/main/java/pro/taskana/history/events/task/TaskEvent.java b/lib/taskana-core/src/main/java/pro/taskana/history/events/task/TaskEvent.java index 0360dfa8c..d398d5f52 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/history/events/task/TaskEvent.java +++ b/lib/taskana-core/src/main/java/pro/taskana/history/events/task/TaskEvent.java @@ -9,20 +9,6 @@ import pro.taskana.history.api.TaskanaHistoryEvent; */ public class TaskEvent extends TaskanaHistoryEvent { - protected String taskId; - protected String businessProcessId; - protected String parentBusinessProcessId; - protected String domain; - protected String workbasketKey; - protected String taskClassificationCategory; - protected String taskClassificationKey; - protected String attachmentClassificationKey; - protected String porCompany; - protected String porSystem; - protected String porInstance; - protected String porType; - protected String porValue; - public TaskEvent(Task task) { super(); taskId = task.getId(); 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 051546e69..d6ed3239d 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 @@ -196,7 +196,7 @@ public class ClassificationServiceImpl implements ClassificationService { classificationImpl.setModified(Instant.now()); this.initDefaultClassificationValues(classificationImpl); - if (oldClassification.getCategory() != classificationImpl.getCategory()) { + if (!Objects.equals(oldClassification.getCategory(), classificationImpl.getCategory())) { this.updateCategoryOnAssociatedTasks(classificationImpl, oldClassification); } @@ -277,8 +277,8 @@ public class ClassificationServiceImpl implements ClassificationService { @Override public Classification getClassification(String id) throws ClassificationNotFoundException { if (id == null) { - throw new ClassificationNotFoundException(id, - "Classification for id " + id + " was not found."); + throw new ClassificationNotFoundException(null, + "Classification for null id is invalid."); } LOGGER.debug("entry to getClassification(id = {})", id); Classification result = null; @@ -299,7 +299,7 @@ public class ClassificationServiceImpl implements ClassificationService { public Classification getClassification(String key, String domain) throws ClassificationNotFoundException { LOGGER.debug("entry to getClassification(key = {}, domain = {})", key, domain); if (key == null) { - throw new ClassificationNotFoundException(key, domain, + throw new ClassificationNotFoundException(null, domain, "Classification for null key and domain " + domain + " was not found."); } 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 d3a12c06b..01952ff0e 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 @@ -945,9 +945,8 @@ public class TaskQueryImpl implements TaskQuery { taskanaEngine.openConnection(); checkOpenAndReadPermissionForSpecifiedWorkbaskets(); setupJoinAndOrderParameters(); - List tasks = new ArrayList<>(); setupAccessIds(); - tasks = taskanaEngine.getSqlSession().selectList(getLinkToMapperScript(), this); + List tasks = taskanaEngine.getSqlSession().selectList(getLinkToMapperScript(), this); if (LOGGER.isDebugEnabled()) { LOGGER.debug("mapper returned {} resulting Objects: {} ", tasks.size(), LoggerUtils.listToString(tasks)); diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/ClassificationChangedJob.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/ClassificationChangedJob.java index b6f615d25..3ae3e2e17 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/ClassificationChangedJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/ClassificationChangedJob.java @@ -65,8 +65,8 @@ public class ClassificationChangedJob extends AbstractTaskanaJob { if (!taskIdBatch.isEmpty()) { String taskIds = String.join(",", affectedTaskIds); args.put(TASK_IDS, taskIds); - args.put(PRIORITY_CHANGED, new Boolean(priorityChanged).toString()); - args.put(SERVICE_LEVEL_CHANGED, new Boolean(serviceLevelChanged).toString()); + args.put(PRIORITY_CHANGED, Boolean.valueOf(priorityChanged).toString()); + args.put(SERVICE_LEVEL_CHANGED, Boolean.valueOf(serviceLevelChanged).toString()); ScheduledJob job = new ScheduledJob(); job.setType(ScheduledJob.Type.UPDATETASKSJOB); job.setArguments(args); diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/JobRunner.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/JobRunner.java index 6aee60005..4defb1fba 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/JobRunner.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/JobRunner.java @@ -24,13 +24,10 @@ public class JobRunner { private TaskanaEngineImpl taskanaEngine; private JobServiceImpl jobService; private TaskanaTransactionProvider txProvider; - private int maxRetryCount; - private int attempt = 0; public JobRunner(TaskanaEngine taskanaEngine) { this.taskanaEngine = (TaskanaEngineImpl) taskanaEngine; jobService = (JobServiceImpl) taskanaEngine.getJobService(); - maxRetryCount = taskanaEngine.getConfiguration().getMaxNumberOfJobRetries(); } public void registerTransactionProvider( diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/TaskCleanupJob.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/TaskCleanupJob.java index 3d8d1b476..ecca82d18 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/TaskCleanupJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/TaskCleanupJob.java @@ -124,16 +124,16 @@ public class TaskCleanupJob extends AbstractTaskanaJob { int deletedTaskCount = 0; if (txProvider != null) { - Integer count = (Integer) txProvider.executeInTransaction(() -> { + int count = (Integer) txProvider.executeInTransaction(() -> { try { - return new Integer(deleteTasks(tasksToBeDeleted)); + return deleteTasks(tasksToBeDeleted); } catch (Exception e) { LOGGER.warn("Could not delete tasks.", e); - return new Integer(0); + return 0; } }); - LOGGER.debug("exit from deleteTasksTransactionally(), returning {}", count.intValue()); - return count.intValue(); + LOGGER.debug("exit from deleteTasksTransactionally(), returning {}", count); + return count; } else { try { deletedTaskCount = deleteTasks(tasksToBeDeleted); diff --git a/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java b/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java index bb8e0f73d..a19f69708 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java +++ b/lib/taskana-core/src/main/java/pro/taskana/jobs/WorkbasketCleanupJob.java @@ -73,15 +73,15 @@ public class WorkbasketCleanupJob extends AbstractTaskanaJob { private int deleteWorkbasketsTransactionally(List workbasketsToBeDeleted) { int deletedWorkbasketsCount = 0; if (txProvider != null) { - Integer count = (Integer) txProvider.executeInTransaction(() -> { + int count = (Integer) txProvider.executeInTransaction(() -> { try { - return new Integer(deleteWorkbaskets(workbasketsToBeDeleted)); + return deleteWorkbaskets(workbasketsToBeDeleted); } catch (Exception e) { LOGGER.warn("Could not delete workbaskets.", e); - return new Integer(0); + return 0; } }); - return count.intValue(); + return count; } else { try { deletedWorkbasketsCount = deleteWorkbaskets(workbasketsToBeDeleted); 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 358d62388..acb82b23c 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 @@ -89,10 +89,10 @@ public final class CurrentUserContext { try { Class.forName(WSSUBJECT_CLASSNAME); LOGGER.debug("WSSubject detected. Assuming that Taskana runs on IBM WebSphere."); - runningOnWebSphere = new Boolean(true); + runningOnWebSphere = Boolean.TRUE; } catch (ClassNotFoundException e) { LOGGER.debug("No WSSubject detected. Using JAAS subject further on."); - runningOnWebSphere = new Boolean(false); + runningOnWebSphere = Boolean.FALSE; } } return runningOnWebSphere; diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java index 7e3f3a5e2..4a4432ecb 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/AbstractPagingController.java @@ -110,7 +110,7 @@ public abstract class AbstractPagingController { String param = params.getFirst(PAGING_PAGE_SIZE); params.remove(PAGING_PAGE_SIZE); try { - return param != null ? Long.valueOf(param) : Integer.MAX_VALUE; + return param != null ? Long.parseLong(param) : Integer.MAX_VALUE; } catch (NumberFormatException e) { throw new InvalidArgumentException("page-size must be a integer value.", e.getCause()); } diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java index 97fb8036c..d86b7ec93 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/ClassificationDefinitionController.java @@ -199,14 +199,20 @@ public class ClassificationDefinitionController { throws ClassificationNotFoundException, NotAuthorizedException, ConcurrencyException, InvalidArgumentException { LOGGER.debug("Entry to updateParentChildrenRelations()"); - for (Classification childRes : childrenInFile.keySet()) { - Classification child = classificationService - .getClassification(childRes.getKey(), childRes.getDomain()); - String parentKey = childrenInFile.get(childRes); + + for (Map.Entry entry : childrenInFile.entrySet()) { + Classification childRes = entry.getKey(); + String parentKey = entry.getValue(); + String classificationKey = childRes.getKey(); + String classificationDomain = childRes.getDomain(); + + Classification child = classificationService.getClassification(classificationKey, classificationDomain); String parentId = (parentKey == null) ? "" - : classificationService.getClassification(parentKey, childRes.getDomain()).getId(); + : classificationService.getClassification(parentKey, classificationDomain).getId(); + child.setParentKey(parentKey); child.setParentId(parentId); + classificationService.updateClassification(child); } LOGGER.debug("Exit from updateParentChildrenRelations()"); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java index 53a815792..27db829d9 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/rest/TaskController.java @@ -390,7 +390,7 @@ public class TaskController extends AbstractPagingController { int[] priorities = new int[prioritiesInString.length]; for (int i = 0; i < prioritiesInString.length; i++) { - priorities[i] = Integer.valueOf(prioritiesInString[i]); + priorities[i] = Integer.parseInt(prioritiesInString[i]); } if (LOGGER.isDebugEnabled()) { LOGGER.debug("Exit from extractPriorities(), returning {}", priorities);