From fe587844e3222b7b4eb667faadfb437c751c65fe Mon Sep 17 00:00:00 2001 From: BerndBreier <33351391+BerndBreier@users.noreply.github.com> Date: Mon, 27 Nov 2017 11:03:33 +0100 Subject: [PATCH] TSK-56 refactor Exceptions. Introduce TaskanaException and TaskanaRuntimeException --- .../exceptions/AutocommitFailedException.java | 2 +- .../exceptions/ConnectionNotSetException.java | 2 +- .../exceptions/NotAuthorizedException.java | 2 +- .../taskana/exceptions/NotFoundException.java | 2 +- .../taskana/exceptions/TaskanaException.java | 30 ++++++++++++++++++ .../exceptions/TaskanaRuntimeException.java | 31 +++++++++++++++++++ .../pro/taskana/impl/TaskanaEngineImpl.java | 2 +- .../WorkbasketServiceImplIntExplicitTest.java | 12 +++---- 8 files changed, 70 insertions(+), 13 deletions(-) create mode 100644 lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaException.java create mode 100644 lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaRuntimeException.java diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/AutocommitFailedException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/AutocommitFailedException.java index 1fd2bdaa4..79ca68138 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/exceptions/AutocommitFailedException.java +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/AutocommitFailedException.java @@ -5,7 +5,7 @@ package pro.taskana.exceptions; * */ @SuppressWarnings("serial") -public class AutocommitFailedException extends RuntimeException { +public class AutocommitFailedException extends TaskanaRuntimeException { public AutocommitFailedException(Throwable cause) { super("Autocommit failed", cause); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/ConnectionNotSetException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/ConnectionNotSetException.java index ae2e0713e..ddaa0e8a6 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/exceptions/ConnectionNotSetException.java +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/ConnectionNotSetException.java @@ -5,7 +5,7 @@ package pro.taskana.exceptions; * */ @SuppressWarnings("serial") -public class ConnectionNotSetException extends RuntimeException { +public class ConnectionNotSetException extends TaskanaRuntimeException { public ConnectionNotSetException() { super("Connection not set"); diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotAuthorizedException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotAuthorizedException.java index 5a20accbe..5a88216b9 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotAuthorizedException.java +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotAuthorizedException.java @@ -4,7 +4,7 @@ package pro.taskana.exceptions; * This exception is used to communicate a not authorized user. */ @SuppressWarnings("serial") -public class NotAuthorizedException extends Exception { +public class NotAuthorizedException extends TaskanaException { public NotAuthorizedException(String msg) { super(msg); diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotFoundException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotFoundException.java index 8a2456b7e..3b0f26623 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotFoundException.java +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/NotFoundException.java @@ -4,7 +4,7 @@ package pro.taskana.exceptions; * This exception will be thrown if a specific object is not in the database. */ @SuppressWarnings("serial") -public class NotFoundException extends Exception { +public class NotFoundException extends TaskanaException { public NotFoundException(String id) { super(id); diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaException.java new file mode 100644 index 000000000..8058fbdd0 --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaException.java @@ -0,0 +1,30 @@ +package pro.taskana.exceptions; + +/** + * common base class for Taskana's checked exceptions. + * @author bbr + * + */ +public class TaskanaException extends Exception { + + public TaskanaException() { + super(); + } + + public TaskanaException(String message) { + super(message); + } + + public TaskanaException(Throwable cause) { + super(cause); + } + + public TaskanaException(String message, Throwable cause) { + super(message, cause); + } + + public TaskanaException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + +} diff --git a/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaRuntimeException.java b/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaRuntimeException.java new file mode 100644 index 000000000..6ad0aedbb --- /dev/null +++ b/lib/taskana-core/src/main/java/pro/taskana/exceptions/TaskanaRuntimeException.java @@ -0,0 +1,31 @@ +package pro.taskana.exceptions; + +/** + * Common base class for Taskana's runtime exceptions. + * @author bbr + * + */ +public class TaskanaRuntimeException extends RuntimeException { + + public TaskanaRuntimeException() { + super(); + } + + public TaskanaRuntimeException(String message) { + super(message); + } + + public TaskanaRuntimeException(Throwable cause) { + super(cause); + } + + public TaskanaRuntimeException(String message, Throwable cause) { + super(message, cause); + } + + public TaskanaRuntimeException(String message, Throwable cause, boolean enableSuppression, + boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + +} 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 d1074b922..f4a72c464 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 @@ -115,7 +115,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { this.connection = connection; mode = ConnectionManagementMode.EXPLICIT; sessionManager.startManagedSession(connection); - } else { + } else if (this.connection != null) { this.connection = null; if (sessionManager.isManagedSessionStarted()) { sessionManager.close(); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java index 27fc97d6a..fb971f865 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java @@ -78,7 +78,7 @@ public class WorkbasketServiceImplIntExplicitTest { workbasket.setName("Megabasket"); workBasketService.createWorkbasket(workbasket); Assert.assertEquals(before + 1, workBasketService.getWorkbaskets().size()); - connection.close(); + taskanaEngineImpl.closeConnection(); } @Test @@ -104,7 +104,7 @@ public class WorkbasketServiceImplIntExplicitTest { workBasketService.createWorkbasket(workbasket2); Assert.assertEquals(before + THREE, workBasketService.getWorkbaskets().size()); connection.commit(); - connection.close(); + taskanaEngineImpl.closeConnection(); } @Test @@ -130,7 +130,7 @@ public class WorkbasketServiceImplIntExplicitTest { Workbasket foundWorkbasket = workBasketService.getWorkbasket(id2); Assert.assertEquals(id2, foundWorkbasket.getId()); connection.commit(); - connection.close(); + taskanaEngineImpl.closeConnection(); } @Test(expected = WorkbasketNotFoundException.class) @@ -140,7 +140,7 @@ public class WorkbasketServiceImplIntExplicitTest { workBasketService = taskanaEngine.getWorkbasketService(); workBasketService.getWorkbasket("fail"); connection.commit(); - connection.close(); + taskanaEngineImpl.closeConnection(); } @Test @@ -168,7 +168,6 @@ public class WorkbasketServiceImplIntExplicitTest { Assert.assertEquals(id2, foundWorkbasket.getId()); Assert.assertEquals(2, foundWorkbasket.getDistributionTargets().size()); connection.commit(); - connection.close(); } @Test @@ -213,7 +212,6 @@ public class WorkbasketServiceImplIntExplicitTest { Assert.assertEquals(workBasketService.getWorkbasket(id3).getCreated(), workBasketService.getWorkbasket(id3).getModified()); connection.commit(); - connection.close(); } @Test @@ -231,7 +229,6 @@ public class WorkbasketServiceImplIntExplicitTest { Assert.assertEquals(1, workBasketService.getAllAuthorizations().size()); connection.commit(); - connection.close(); } @Test @@ -255,7 +252,6 @@ public class WorkbasketServiceImplIntExplicitTest { Assert.assertEquals("Zaphod Beeblebrox", workBasketService.getWorkbasketAuthorization(accessItem.getId()).getAccessId()); connection.commit(); - connection.close(); } @After