diff --git a/common/taskana-common/src/main/java/pro/taskana/common/api/exceptions/InvalidArgumentException.java b/common/taskana-common/src/main/java/pro/taskana/common/api/exceptions/InvalidArgumentException.java index 05ac3d49b..fa9270897 100644 --- a/common/taskana-common/src/main/java/pro/taskana/common/api/exceptions/InvalidArgumentException.java +++ b/common/taskana-common/src/main/java/pro/taskana/common/api/exceptions/InvalidArgumentException.java @@ -1,7 +1,7 @@ package pro.taskana.common.api.exceptions; /** This exception is thrown when a method is called with an invalid argument. */ -public class InvalidArgumentException extends TaskanaException { +public class InvalidArgumentException extends TaskanaRuntimeException { public static final String ERROR_KEY = "INVALID_ARGUMENT"; diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java index 8f78eb98d..de05e7136 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskServiceImpl.java @@ -5,7 +5,6 @@ import static java.util.function.Predicate.not; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -1580,8 +1579,7 @@ public class TaskServiceImpl implements TaskService { Iterator taskIdIterator) { String currentTaskId = taskIdIterator.next(); if (currentTaskId == null || currentTaskId.equals("")) { - bulkLog.addError( - "", new InvalidArgumentException("IDs with EMPTY or NULL value are not allowed.")); + bulkLog.addError("", new TaskNotFoundException(null)); taskIdIterator.remove(); } else { MinimalTaskSummary foundSummary = @@ -1620,8 +1618,7 @@ public class TaskServiceImpl implements TaskService { CallbackState desiredCallbackState) { String currentExternalId = externalIdIterator.next(); if (currentExternalId == null || currentExternalId.equals("")) { - bulkLog.addError( - "", new InvalidArgumentException("IDs with EMPTY or NULL value are not allowed.")); + bulkLog.addError("", new TaskNotFoundException(null)); externalIdIterator.remove(); } else { Optional foundSummary = @@ -1681,15 +1678,12 @@ public class TaskServiceImpl implements TaskService { break; default: return Optional.of( - new InvalidArgumentException( - String.format( - "desired callbackState has to be in '%s'", - Arrays.toString( - new CallbackState[] { - CallbackState.CALLBACK_PROCESSING_COMPLETED, - CallbackState.CLAIMED, - CallbackState.CALLBACK_PROCESSING_REQUIRED - })))); + new InvalidCallbackStateException( + foundSummary.getTaskId(), + currentTaskCallbackState, + CallbackState.CALLBACK_PROCESSING_COMPLETED, + CallbackState.CLAIMED, + CallbackState.CALLBACK_PROCESSING_REQUIRED)); } return Optional.empty(); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskTransferrer.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskTransferrer.java index 260eb642e..317d73fba 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskTransferrer.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskTransferrer.java @@ -206,7 +206,7 @@ final class TaskTransferrer { Set sourceWorkbasketIds, String taskId, TaskSummary taskSummary) { TaskanaException error = null; if (taskId == null || taskId.isEmpty()) { - error = new InvalidArgumentException("TaskId should not be null or empty"); + error = new TaskNotFoundException(null); } else if (taskSummary == null) { error = new TaskNotFoundException(taskId); } else if (taskSummary.getState().isEndState()) { diff --git a/lib/taskana-core/src/test/java/acceptance/task/transfer/TransferTaskAccTest.java b/lib/taskana-core/src/test/java/acceptance/task/transfer/TransferTaskAccTest.java index 0edc5b1c9..61cc43e42 100644 --- a/lib/taskana-core/src/test/java/acceptance/task/transfer/TransferTaskAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/task/transfer/TransferTaskAccTest.java @@ -294,8 +294,8 @@ class TransferTaskAccTest extends AbstractAccTest { .isEqualTo(TaskNotFoundException.class); assertThat(results.getErrorForId("TKI:100000000000000000000000000000000006").getClass()) .isEqualTo(InvalidTaskStateException.class); - assertThat(results.getErrorForId("").getClass()).isEqualTo(InvalidArgumentException.class); - assertThat(results.getErrorForId(null).getClass()).isEqualTo(InvalidArgumentException.class); + assertThat(results.getErrorForId("").getClass()).isEqualTo(TaskNotFoundException.class); + assertThat(results.getErrorForId(null).getClass()).isEqualTo(TaskNotFoundException.class); // verify valid requests Task transferredTask = taskService.getTask("TKI:000000000000000000000000000000000006"); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java index 61dd71c0f..994c38f9e 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/common/rest/TaskanaRestExceptionHandler.java @@ -137,7 +137,7 @@ public class TaskanaRestExceptionHandler extends ResponseEntityExceptionHandler BeanInstantiationException ex, WebRequest req) { if (ex.getCause() instanceof InvalidArgumentException) { InvalidArgumentException cause = (InvalidArgumentException) ex.getCause(); - return handleTaskanaException(cause, req); + return handleTaskanaRuntimeException(cause, req); } return buildResponse(null, ex, req, HttpStatus.INTERNAL_SERVER_ERROR); }