diff --git a/pom.xml b/pom.xml
index 1b55d803..713de99a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -132,10 +132,13 @@
com.google.code.gson
gson
- 2.10.1
-
+
+ org.zalando
+ problem-spring-web
+ 0.23.0
+
diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java
index 03e65b45..470c0819 100644
--- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java
+++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java
@@ -121,7 +121,7 @@ public class CallDao {
validateDocumentEntity(documentReq.getId(),documentReq.getFileName());
DocumentEntity documentEntity = documentRepository.findById(documentReq.getId());
if(documentEntity==null){
- throw new ResourceNotFoundException(Status.VALIDATION_ERROR,GepafinConstant.DOCUMENT_NOT_FOUND);
+ throw new ResourceNotFoundException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND));
}
documentEntity.setFileName(documentReq.getFileName());
documentEntity.setFilePath(documentReq.getUrl());
diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java
index bd8863b5..18bb89c8 100644
--- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java
+++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
public interface CallApi {
- @Operation(summary = "API to create call",
+ @Operation(summary = "Api to create call",
responses = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/BadRequestAlertException.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/BadRequestAlertException.java
new file mode 100644
index 00000000..c8e6abc9
--- /dev/null
+++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/BadRequestAlertException.java
@@ -0,0 +1,28 @@
+package net.gepafin.tendermanagement.web.rest.api.errors;
+
+import org.zalando.problem.AbstractThrowableProblem;
+import org.zalando.problem.Status;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+public class BadRequestAlertException extends AbstractThrowableProblem {
+
+ private static final long serialVersionUID = 1L;
+
+ public BadRequestAlertException(String defaultMessage, String entityName, String errorKey) {
+ this(ErrorConstants.DEFAULT_TYPE, defaultMessage, entityName, errorKey);
+ }
+
+ public BadRequestAlertException(URI type, String defaultMessage, String entityName, String errorKey) {
+ super(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName, errorKey));
+ }
+
+ private static Map getAlertParameters(String entityName, String errorKey) {
+ Map parameters = new HashMap<>();
+ parameters.put("message", "error." + errorKey);
+ parameters.put("params", entityName);
+ return parameters;
+ }
+}
diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ForbiddenAccessException.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ForbiddenAccessException.java
new file mode 100644
index 00000000..9b448f6a
--- /dev/null
+++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ForbiddenAccessException.java
@@ -0,0 +1,23 @@
+package net.gepafin.tendermanagement.web.rest.api.errors;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.FORBIDDEN)
+public class ForbiddenAccessException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ private final Status status;
+
+ public ForbiddenAccessException(Status status, String message) {
+ super(message);
+ this.status = status;
+ }
+
+ public Status getStatus() {
+ return status;
+ }
+}
diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/GlobalExceptionHandler.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/GlobalExceptionHandler.java
index 6a6b00ef..bf5d7123 100644
--- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/GlobalExceptionHandler.java
+++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/GlobalExceptionHandler.java
@@ -1,18 +1,37 @@
package net.gepafin.tendermanagement.web.rest.api.errors;
+import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.model.util.Response;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.ObjectError;
@ControllerAdvice
public class GlobalExceptionHandler {
+
+ public final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+ @ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ExceptionHandler(CustomValidationException.class)
- public ResponseEntity> handleCustomValidationException(CustomValidationException ex) {
- return ResponseEntity.status(HttpStatus.BAD_REQUEST)
- .body(new Response<>(null, ex.getStatus(), ex.getMessage()));
+ @ResponseBody
+ public Response