From 62b78c122cd5d12f2da29a6e0b80b1acbd21b921 Mon Sep 17 00:00:00 2001 From: Pramod Nuthakki Date: Wed, 24 Jul 2013 12:42:57 +0530 Subject: [PATCH] changed exception type to service unavilable --- .../core/data/ApiGlobalErrorResponse.java | 16 +++++++++ ...ctPlatformServiceUnavailableException.java | 36 +++++++++++++++++++ ...formServiceUnavailableExceptionMapper.java | 36 +++++++++++++++++++ .../OperationNotAllowedException.java | 6 ++-- 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100755 mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exception/AbstractPlatformServiceUnavailableException.java create mode 100755 mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/ApiGlobalErrorResponse.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/ApiGlobalErrorResponse.java index c68648b46..d88677fc3 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/ApiGlobalErrorResponse.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/data/ApiGlobalErrorResponse.java @@ -160,6 +160,22 @@ public class ApiGlobalErrorResponse { return globalErrorResponse; } + + public static ApiGlobalErrorResponse serviceUnavailable(final String globalisationMessageCode, final String defaultUserMessage, + final Object... defaultUserMessageArgs) { + + ApiGlobalErrorResponse globalErrorResponse = new ApiGlobalErrorResponse(); + globalErrorResponse.setHttpStatusCode("503"); + globalErrorResponse.setDeveloperMessage("The server is currently unable to handle the request , please try after some time."); + globalErrorResponse.setUserMessageGlobalisationCode("error.msg.platform.service.unavailable"); + globalErrorResponse.setDefaultUserMessage("The server is currently unable to handle the request , please try after some time."); + + List errors = new ArrayList(); + errors.add(ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage, defaultUserMessageArgs)); + globalErrorResponse.setErrors(errors); + + return globalErrorResponse; + } protected ApiGlobalErrorResponse() { // diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exception/AbstractPlatformServiceUnavailableException.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exception/AbstractPlatformServiceUnavailableException.java new file mode 100755 index 000000000..784674f70 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exception/AbstractPlatformServiceUnavailableException.java @@ -0,0 +1,36 @@ +/** + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.mifosplatform.infrastructure.core.exception; + +/** + * A {@link RuntimeException} thrown when resources that are queried for are not + * found. + */ +public abstract class AbstractPlatformServiceUnavailableException extends RuntimeException { + + private final String globalisationMessageCode; + private final String defaultUserMessage; + private final Object[] defaultUserMessageArgs; + + public AbstractPlatformServiceUnavailableException(final String globalisationMessageCode, final String defaultUserMessage, + final Object... defaultUserMessageArgs) { + this.globalisationMessageCode = globalisationMessageCode; + this.defaultUserMessage = defaultUserMessage; + this.defaultUserMessageArgs = defaultUserMessageArgs; + } + + public String getGlobalisationMessageCode() { + return globalisationMessageCode; + } + + public String getDefaultUserMessage() { + return defaultUserMessage; + } + + public Object[] getDefaultUserMessageArgs() { + return defaultUserMessageArgs; + } +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java new file mode 100755 index 000000000..be0040db0 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java @@ -0,0 +1,36 @@ +package org.mifosplatform.infrastructure.core.exceptionmapper; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +import org.mifosplatform.infrastructure.core.data.ApiGlobalErrorResponse; +import org.mifosplatform.infrastructure.core.exception.AbstractPlatformServiceUnavailableException; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * An {@link ExceptionMapper} to map + * {@link AbstractPlatformServiceUnavailableException} thrown by platform into a + * HTTP API friendly format. + * + * The {@link AbstractPlatformServiceUnavailableException} is thrown when an api + * call for a resource that is expected to exist does not. + */ + +@Provider +@Component +@Scope("singleton") +public class PlatformServiceUnavailableExceptionMapper implements ExceptionMapper { + + @Override + public Response toResponse(AbstractPlatformServiceUnavailableException exception) { + ApiGlobalErrorResponse serviceUnavailableExceptionResponse = ApiGlobalErrorResponse.serviceUnavailable( + exception.getGlobalisationMessageCode(), exception.getDefaultUserMessage(), exception.getDefaultUserMessageArgs()); + return Response.status(Status.SERVICE_UNAVAILABLE).entity(serviceUnavailableExceptionResponse).type(MediaType.APPLICATION_JSON) + .build(); + } + +} diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/exception/OperationNotAllowedException.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/exception/OperationNotAllowedException.java index e6d36d6aa..9300f3d40 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/exception/OperationNotAllowedException.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/jobs/exception/OperationNotAllowedException.java @@ -1,14 +1,14 @@ package org.mifosplatform.infrastructure.jobs.exception; -import org.mifosplatform.infrastructure.core.exception.AbstractPlatformResourceNotFoundException; +import org.mifosplatform.infrastructure.core.exception.AbstractPlatformServiceUnavailableException; /** * A {@link RuntimeException} thrown when Job execution is in progress. */ -public class OperationNotAllowedException extends AbstractPlatformResourceNotFoundException { +public class OperationNotAllowedException extends AbstractPlatformServiceUnavailableException { public OperationNotAllowedException(final String jobNames) { - super("error.msg.sheduler.job.currently.running", "Exicution is in-process for jobs " + jobNames + super("error.msg.sheduler.job.currently.running", "Execution is in-process for jobs " + jobNames + "...., so update operations are not allowed at this moment", jobNames); } } \ No newline at end of file