From d31090bcd4b893978aca1c1e7969a322b7d91817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 10 Dec 2018 18:06:13 +0100 Subject: [PATCH] Introduce generic BadRequestException --- .../java/sonia/scm/BadRequestException.java | 9 +++++++++ .../sonia/scm/NotSupportedFeatureException.java | 2 +- .../user/ChangePasswordNotAllowedException.java | 4 ++-- .../scm/user/InvalidPasswordException.java | 4 ++-- .../scm/api/rest/BadRequestExceptionMapper.java | 16 ++++++++++++++++ .../v2/NotSupportedFeatureExceptionMapper.java | 17 ----------------- ...ChangePasswordNotAllowedExceptionMapper.java | 17 ----------------- .../InvalidPasswordExceptionMapper.java | 17 ----------------- .../scm/api/v2/resources/DispatcherMock.java | 6 ++---- 9 files changed, 32 insertions(+), 60 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/BadRequestException.java create mode 100644 scm-webapp/src/main/java/sonia/scm/api/rest/BadRequestExceptionMapper.java delete mode 100644 scm-webapp/src/main/java/sonia/scm/api/v2/NotSupportedFeatureExceptionMapper.java delete mode 100644 scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangePasswordNotAllowedExceptionMapper.java delete mode 100644 scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidPasswordExceptionMapper.java diff --git a/scm-core/src/main/java/sonia/scm/BadRequestException.java b/scm-core/src/main/java/sonia/scm/BadRequestException.java new file mode 100644 index 0000000000..544ed75a0b --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/BadRequestException.java @@ -0,0 +1,9 @@ +package sonia.scm; + +import java.util.List; + +public abstract class BadRequestException extends ExceptionWithContext { + public BadRequestException(List context, String message) { + super(context, message); + } +} diff --git a/scm-core/src/main/java/sonia/scm/NotSupportedFeatureException.java b/scm-core/src/main/java/sonia/scm/NotSupportedFeatureException.java index daf996ee6c..bc4e1b8a4f 100644 --- a/scm-core/src/main/java/sonia/scm/NotSupportedFeatureException.java +++ b/scm-core/src/main/java/sonia/scm/NotSupportedFeatureException.java @@ -40,7 +40,7 @@ import java.util.Collections; * @author Sebastian Sdorra * @version 1.6 */ -public class NotSupportedFeatureException extends ExceptionWithContext { +public class NotSupportedFeatureException extends BadRequestException { private static final long serialVersionUID = 256498734456613496L; diff --git a/scm-core/src/main/java/sonia/scm/user/ChangePasswordNotAllowedException.java b/scm-core/src/main/java/sonia/scm/user/ChangePasswordNotAllowedException.java index caa35e0b88..be5eda6599 100644 --- a/scm-core/src/main/java/sonia/scm/user/ChangePasswordNotAllowedException.java +++ b/scm-core/src/main/java/sonia/scm/user/ChangePasswordNotAllowedException.java @@ -1,9 +1,9 @@ package sonia.scm.user; +import sonia.scm.BadRequestException; import sonia.scm.ContextEntry; -import sonia.scm.ExceptionWithContext; -public class ChangePasswordNotAllowedException extends ExceptionWithContext { +public class ChangePasswordNotAllowedException extends BadRequestException { private static final String CODE = "9BR7qpDAe1"; public static final String WRONG_USER_TYPE = "User of type %s are not allowed to change password"; diff --git a/scm-core/src/main/java/sonia/scm/user/InvalidPasswordException.java b/scm-core/src/main/java/sonia/scm/user/InvalidPasswordException.java index 93a6a7c1d1..17e24fcd9d 100644 --- a/scm-core/src/main/java/sonia/scm/user/InvalidPasswordException.java +++ b/scm-core/src/main/java/sonia/scm/user/InvalidPasswordException.java @@ -1,9 +1,9 @@ package sonia.scm.user; +import sonia.scm.BadRequestException; import sonia.scm.ContextEntry; -import sonia.scm.ExceptionWithContext; -public class InvalidPasswordException extends ExceptionWithContext { +public class InvalidPasswordException extends BadRequestException { private static final String CODE = "8YR7aawFW1"; diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/BadRequestExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/rest/BadRequestExceptionMapper.java new file mode 100644 index 0000000000..e529bc7c1a --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/BadRequestExceptionMapper.java @@ -0,0 +1,16 @@ +package sonia.scm.api.rest; + +import sonia.scm.BadRequestException; +import sonia.scm.api.v2.resources.ExceptionWithContextToErrorDtoMapper; + +import javax.inject.Inject; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.Provider; + +@Provider +public class BadRequestExceptionMapper extends ContextualExceptionMapper { + @Inject + public BadRequestExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { + super(BadRequestException.class, Response.Status.BAD_REQUEST, mapper); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/NotSupportedFeatureExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/NotSupportedFeatureExceptionMapper.java deleted file mode 100644 index 6a48663aa5..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/NotSupportedFeatureExceptionMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package sonia.scm.api.v2; - -import sonia.scm.NotSupportedFeatureException; -import sonia.scm.api.rest.ContextualExceptionMapper; -import sonia.scm.api.v2.resources.ExceptionWithContextToErrorDtoMapper; - -import javax.inject.Inject; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.Provider; - -@Provider -public class NotSupportedFeatureExceptionMapper extends ContextualExceptionMapper { - @Inject - public NotSupportedFeatureExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { - super(NotSupportedFeatureException.class, Response.Status.BAD_REQUEST, mapper); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangePasswordNotAllowedExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangePasswordNotAllowedExceptionMapper.java deleted file mode 100644 index 18a6e6e75c..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ChangePasswordNotAllowedExceptionMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package sonia.scm.api.v2.resources; - -import sonia.scm.api.rest.ContextualExceptionMapper; -import sonia.scm.user.ChangePasswordNotAllowedException; -import sonia.scm.user.InvalidPasswordException; - -import javax.inject.Inject; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.Provider; - -@Provider -public class ChangePasswordNotAllowedExceptionMapper extends ContextualExceptionMapper { - @Inject - public ChangePasswordNotAllowedExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { - super(ChangePasswordNotAllowedException.class, Response.Status.BAD_REQUEST, mapper); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidPasswordExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidPasswordExceptionMapper.java deleted file mode 100644 index 7a1d311a1c..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidPasswordExceptionMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package sonia.scm.api.v2.resources; - -import sonia.scm.api.rest.ContextualExceptionMapper; -import sonia.scm.user.InvalidPasswordException; - -import javax.inject.Inject; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.Provider; - -@Provider -public class InvalidPasswordExceptionMapper extends ContextualExceptionMapper { - - @Inject - public InvalidPasswordExceptionMapper(ExceptionWithContextToErrorDtoMapper mapper) { - super(InvalidPasswordException.class, Response.Status.BAD_REQUEST, mapper); - } -} diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/DispatcherMock.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/DispatcherMock.java index 9638a8aa49..fe205e88a1 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/DispatcherMock.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/DispatcherMock.java @@ -4,9 +4,9 @@ import org.jboss.resteasy.core.Dispatcher; import org.jboss.resteasy.mock.MockDispatcherFactory; import sonia.scm.api.rest.AlreadyExistsExceptionMapper; import sonia.scm.api.rest.AuthorizationExceptionMapper; +import sonia.scm.api.rest.BadRequestExceptionMapper; import sonia.scm.api.rest.ConcurrentModificationExceptionMapper; import sonia.scm.api.v2.NotFoundExceptionMapper; -import sonia.scm.api.v2.NotSupportedFeatureExceptionMapper; public class DispatcherMock { public static Dispatcher createDispatcher(Object resource) { @@ -18,9 +18,7 @@ public class DispatcherMock { dispatcher.getProviderFactory().register(new ConcurrentModificationExceptionMapper(mapper)); dispatcher.getProviderFactory().registerProvider(AuthorizationExceptionMapper.class); dispatcher.getProviderFactory().register(new InternalRepositoryExceptionMapper(mapper)); - dispatcher.getProviderFactory().register(new ChangePasswordNotAllowedExceptionMapper(mapper)); - dispatcher.getProviderFactory().register(new InvalidPasswordExceptionMapper(mapper)); - dispatcher.getProviderFactory().register(new NotSupportedFeatureExceptionMapper(mapper)); + dispatcher.getProviderFactory().register(new BadRequestExceptionMapper(mapper)); return dispatcher; } }