This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 05dc8f938 Error logging enhancement - log handled exceptions on WARN 
level
05dc8f938 is described below

commit 05dc8f93803fef251e828d5f8ff43acb87de600a
Author: Adam Saghy <[email protected]>
AuthorDate: Wed Jun 29 20:20:36 2022 +0200

    Error logging enhancement - log handled exceptions on WARN level
---
 .../core/exceptionmapper/AccessDeniedExceptionMapper.java   |  3 +++
 .../core/exceptionmapper/BadCredentialsExceptionMapper.java |  3 +++
 .../core/exceptionmapper/InvalidJsonExceptionMapper.java    |  4 +++-
 .../InvalidTenantIdentifierExceptionMapper.java             | 13 ++++++++-----
 .../core/exceptionmapper/JsonSyntaxExceptionMapper.java     |  4 +++-
 .../core/exceptionmapper/MalformedJsonExceptionMapper.java  |  4 +++-
 .../exceptionmapper/NoAuthorizationExceptionMapper.java     |  3 +++
 .../core/exceptionmapper/OAuth2ExceptionEntryPoint.java     |  4 +++-
 .../PlatformApiDataValidationExceptionMapper.java           |  4 +++-
 .../PlatformDataIntegrityExceptionMapper.java               |  4 +++-
 .../exceptionmapper/PlatformDomainRuleExceptionMapper.java  |  4 +++-
 .../PlatformInternalServerExceptionMapper.java              |  4 +++-
 .../PlatformResourceNotFoundExceptionMapper.java            |  4 +++-
 .../PlatformServiceUnavailableExceptionMapper.java          |  3 +++
 .../exceptionmapper/UnAuthenticatedUserExceptionMapper.java |  3 +++
 .../UnrecognizedQueryParamExceptionMapper.java              |  4 +++-
 .../exceptionmapper/UnsupportedCommandExceptionMapper.java  |  4 +++-
 .../UnsupportedParameterExceptionMapper.java                |  4 +++-
 ...Exception.java => InvalidTenantIdentifierException.java} |  6 +++---
 .../filter/TenantAwareBasicAuthenticationFilter.java        |  6 +++---
 .../security/filter/TenantAwareTenantIdentifierFilter.java  |  6 +++---
 .../security/service/BasicAuthTenantDetailsServiceJdbc.java |  4 ++--
 .../security/service/JdbcTenantDetailsService.java          |  4 ++--
 23 files changed, 72 insertions(+), 30 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java
index a4f78d637..fc58efa97 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/AccessDeniedExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.springframework.context.annotation.Scope;
 import org.springframework.security.access.AccessDeniedException;
@@ -37,6 +38,7 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class AccessDeniedExceptionMapper implements 
ExceptionMapper<AccessDeniedException> {
 
     @Override
@@ -44,6 +46,7 @@ public class AccessDeniedExceptionMapper implements 
ExceptionMapper<AccessDenied
         // Status code 403 really reads as:
         // "Authenticated - but not authorized":
         final String defaultUserMessage = exception.getMessage();
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultUserMessage);
         return 
Response.status(Status.FORBIDDEN).entity(ApiGlobalErrorResponse.unAuthorized(defaultUserMessage))
                 .type(MediaType.APPLICATION_JSON).build();
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java
index f458ea86f..de2f20f12 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/BadCredentialsExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.springframework.context.annotation.Scope;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -38,10 +39,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class BadCredentialsExceptionMapper implements 
ExceptionMapper<BadCredentialsException> {
 
     @Override
     public Response toResponse(@SuppressWarnings("unused") final 
BadCredentialsException exception) {
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         return 
Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.unAuthenticated()).type(MediaType.APPLICATION_JSON)
                 .build();
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidJsonExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidJsonExceptionMapper.java
index a1799ca25..022052167 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidJsonExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidJsonExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
 import org.springframework.context.annotation.Scope;
@@ -34,13 +35,14 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class InvalidJsonExceptionMapper implements 
ExceptionMapper<InvalidJsonException> {
 
     @Override
     public Response toResponse(@SuppressWarnings("unused") final 
InvalidJsonException exception) {
-
         final String globalisationMessageCode = 
"error.msg.invalid.request.body";
         final String defaultUserMessage = "The JSON provided in the body of 
the request is invalid or missing.";
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultUserMessage);
 
         final ApiParameterError error = 
ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java
index e17fb365c..f36ef4605 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/InvalidTenantIdentifierExceptionMapper.java
@@ -23,25 +23,28 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
-import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentiferException;
+import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
 
 /**
- * An {@link ExceptionMapper} to map {@link InvalidTenantIdentiferException} 
thrown by platform during authentication
+ * An {@link ExceptionMapper} to map {@link InvalidTenantIdentifierException} 
thrown by platform during authentication
  * into a HTTP API friendly format.
  *
- * The {@link InvalidTenantIdentiferException} is thrown by spring security on 
platform when a request contains an
+ * The {@link InvalidTenantIdentifierException} is thrown by spring security 
on platform when a request contains an
  * invalid tenant identifier.
  */
 @Provider
 @Component
 @Scope("singleton")
-public class InvalidTenantIdentifierExceptionMapper implements 
ExceptionMapper<InvalidTenantIdentiferException> {
+@Slf4j
+public class InvalidTenantIdentifierExceptionMapper implements 
ExceptionMapper<InvalidTenantIdentifierException> {
 
     @Override
-    public Response toResponse(@SuppressWarnings("unused") final 
InvalidTenantIdentiferException e) {
+    public Response toResponse(@SuppressWarnings("unused") final 
InvalidTenantIdentifierException exception) {
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         return 
Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.invalidTenantIdentifier())
                 .type(MediaType.APPLICATION_JSON).build();
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JsonSyntaxExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JsonSyntaxExceptionMapper.java
index dd3664a12..3961dea60 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JsonSyntaxExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/JsonSyntaxExceptionMapper.java
@@ -24,6 +24,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
@@ -34,13 +35,14 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class JsonSyntaxExceptionMapper implements 
ExceptionMapper<JsonSyntaxException> {
 
     @Override
     public Response toResponse(final JsonSyntaxException exception) {
-
         final String globalisationMessageCode = 
"error.msg.invalid.request.body";
         final String defaultUserMessage = "The JSON syntax provided in the 
body of the request is invalid: " + exception.getMessage();
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultUserMessage);
 
         final ApiParameterError error = 
ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MalformedJsonExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MalformedJsonExceptionMapper.java
index 92ac18f0d..eed1029fe 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MalformedJsonExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/MalformedJsonExceptionMapper.java
@@ -24,6 +24,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
@@ -34,13 +35,14 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class MalformedJsonExceptionMapper implements 
ExceptionMapper<MalformedJsonException> {
 
     @Override
     public Response toResponse(@SuppressWarnings("unused") final 
MalformedJsonException exception) {
-
         final String globalisationMessageCode = 
"error.msg.invalid.request.body";
         final String defaultUserMessage = "The JSON provided in the body of 
the request is invalid or missing.";
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultUserMessage);
 
         final ApiParameterError error = 
ApiParameterError.generalError(globalisationMessageCode, defaultUserMessage);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java
index 7fc2b3424..9e7ce5231 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/NoAuthorizationExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.security.exception.NoAuthorizationException;
 import org.springframework.context.annotation.Scope;
@@ -38,6 +39,7 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class NoAuthorizationExceptionMapper implements 
ExceptionMapper<NoAuthorizationException> {
 
     @Override
@@ -45,6 +47,7 @@ public class NoAuthorizationExceptionMapper implements 
ExceptionMapper<NoAuthori
         // Status code 403 really reads as:
         // "Authenticated - but not authorized":
         final String defaultUserMessage = exception.getMessage();
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultUserMessage);
         return 
Response.status(Status.FORBIDDEN).entity(ApiGlobalErrorResponse.unAuthorized(defaultUserMessage))
                 .type(MediaType.APPLICATION_JSON).build();
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OAuth2ExceptionEntryPoint.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OAuth2ExceptionEntryPoint.java
index 7b41234b6..807a18157 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OAuth2ExceptionEntryPoint.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/OAuth2ExceptionEntryPoint.java
@@ -23,16 +23,18 @@ import java.io.IOException;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.AuthenticationEntryPoint;
 
+@Slf4j
 public class OAuth2ExceptionEntryPoint implements AuthenticationEntryPoint {
 
     @Override
     public void commence(HttpServletRequest request, HttpServletResponse 
response, AuthenticationException authException)
             throws IOException, ServletException {
-
+        log.warn("Exception: {}, Message: {}", 
authException.getClass().getName(), authException.getMessage());
         ApiGlobalErrorResponse errorResponse = 
ApiGlobalErrorResponse.unAuthenticated();
         response.setContentType("application/json");
         response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java
index 14a004540..ade553b23 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformApiDataValidationExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
 import org.springframework.context.annotation.Scope;
@@ -38,11 +39,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformApiDataValidationExceptionMapper implements 
ExceptionMapper<PlatformApiDataValidationException> {
 
     @Override
     public Response toResponse(final PlatformApiDataValidationException 
exception) {
-
+        log.warn("Exception: {}, Message: {}, Errors: {}", 
exception.getClass().getName(), exception.getMessage(), exception.getErrors());
         final ApiGlobalErrorResponse dataValidationErrorResponse = 
ApiGlobalErrorResponse
                 .badClientRequest(exception.getGlobalisationMessageCode(), 
exception.getDefaultUserMessage(), exception.getErrors());
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java
index 304ec2a5c..28feac730 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDataIntegrityExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException;
 import org.springframework.context.annotation.Scope;
@@ -38,11 +39,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformDataIntegrityExceptionMapper implements 
ExceptionMapper<PlatformDataIntegrityException> {
 
     @Override
     public Response toResponse(final PlatformDataIntegrityException exception) 
{
-
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         final ApiGlobalErrorResponse dataIntegrityError = 
ApiGlobalErrorResponse.dataIntegrityError(exception.getGlobalisationMessageCode(),
                 exception.getDefaultUserMessage(), 
exception.getParameterName(), exception.getDefaultUserMessageArgs());
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java
index 6ca3fd06f..35e16e7d6 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformDomainRuleExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
 import org.springframework.context.annotation.Scope;
@@ -38,11 +39,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformDomainRuleExceptionMapper implements 
ExceptionMapper<AbstractPlatformDomainRuleException> {
 
     @Override
     public Response toResponse(final AbstractPlatformDomainRuleException 
exception) {
-
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         final ApiGlobalErrorResponse notFoundErrorResponse = 
ApiGlobalErrorResponse.domainRuleViolation(
                 exception.getGlobalisationMessageCode(), 
exception.getDefaultUserMessage(), exception.getDefaultUserMessageArgs());
         // request understood but not carried out due to it violating some
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java
index d10a0af43..b99b04917 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformInternalServerExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.PlatformInternalServerException;
 import org.springframework.context.annotation.Scope;
@@ -37,11 +38,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformInternalServerExceptionMapper implements 
ExceptionMapper<PlatformInternalServerException> {
 
     @Override
     public Response toResponse(final PlatformInternalServerException 
exception) {
-
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         final ApiGlobalErrorResponse notFoundErrorResponse = 
ApiGlobalErrorResponse.serverSideError(exception.getGlobalisationMessageCode(),
                 exception.getDefaultUserMessage(), 
exception.getDefaultUserMessageArgs());
         return 
Response.status(Status.INTERNAL_SERVER_ERROR).entity(notFoundErrorResponse).type(MediaType.APPLICATION_JSON).build();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java
index 6cd9835f2..90ee4462b 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformResourceNotFoundExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.AbstractPlatformResourceNotFoundException;
 import org.springframework.context.annotation.Scope;
@@ -38,11 +39,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformResourceNotFoundExceptionMapper implements 
ExceptionMapper<AbstractPlatformResourceNotFoundException> {
 
     @Override
     public Response toResponse(final AbstractPlatformResourceNotFoundException 
exception) {
-
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         final ApiGlobalErrorResponse notFoundErrorResponse = 
ApiGlobalErrorResponse.notFound(exception.getGlobalisationMessageCode(),
                 exception.getDefaultUserMessage(), 
exception.getDefaultUserMessageArgs());
         return 
Response.status(Status.NOT_FOUND).entity(notFoundErrorResponse).type(MediaType.APPLICATION_JSON).build();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java
index b9c216c14..f5c30e656 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/PlatformServiceUnavailableExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.infrastructure.core.exception.AbstractPlatformServiceUnavailableException;
 import org.springframework.context.annotation.Scope;
@@ -39,10 +40,12 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class PlatformServiceUnavailableExceptionMapper implements 
ExceptionMapper<AbstractPlatformServiceUnavailableException> {
 
     @Override
     public Response toResponse(final 
AbstractPlatformServiceUnavailableException exception) {
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         final ApiGlobalErrorResponse serviceUnavailableExceptionResponse = 
ApiGlobalErrorResponse.serviceUnavailable(
                 exception.getGlobalisationMessageCode(), 
exception.getDefaultUserMessage(), exception.getDefaultUserMessageArgs());
         return 
Response.status(Status.SERVICE_UNAVAILABLE).entity(serviceUnavailableExceptionResponse).type(MediaType.APPLICATION_JSON)
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnAuthenticatedUserExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnAuthenticatedUserExceptionMapper.java
index aa8092de1..0d7a20177 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnAuthenticatedUserExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnAuthenticatedUserExceptionMapper.java
@@ -23,6 +23,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import 
org.apache.fineract.useradministration.exception.UnAuthenticatedUserException;
 import org.springframework.context.annotation.Scope;
@@ -35,11 +36,13 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class UnAuthenticatedUserExceptionMapper implements 
ExceptionMapper<UnAuthenticatedUserException> {
 
     @Override
     public Response toResponse(@SuppressWarnings("unused") final 
UnAuthenticatedUserException exception) {
         // Status code 401 really reads as: "Unauthenticated":
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
exception.getMessage());
         return 
Response.status(Status.UNAUTHORIZED).entity(ApiGlobalErrorResponse.unAuthenticated()).type(MediaType.APPLICATION_JSON)
                 .build();
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java
index b441a2c80..8479e01bf 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnrecognizedQueryParamExceptionMapper.java
@@ -25,6 +25,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import 
org.apache.fineract.infrastructure.core.exception.UnrecognizedQueryParamException;
@@ -41,11 +42,11 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class UnrecognizedQueryParamExceptionMapper implements 
ExceptionMapper<UnrecognizedQueryParamException> {
 
     @Override
     public Response toResponse(final UnrecognizedQueryParamException 
exception) {
-
         final String parameterName = exception.getQueryParamKey();
         final String parameterValue = exception.getQueryParamValue();
 
@@ -54,6 +55,7 @@ public class UnrecognizedQueryParamExceptionMapper implements 
ExceptionMapper<Un
                 .append(parameterName) //
                 .append(" has an unsupported value of: ") //
                 .append(parameterValue);
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultEnglishMessage);
 
         final ApiParameterError error = 
ApiParameterError.parameterError(validationErrorCode.toString(), 
defaultEnglishMessage.toString(),
                 parameterName, parameterName, parameterValue, 
exception.getSupportedParams());
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedCommandExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedCommandExceptionMapper.java
index 2358e446a..7ddc763b4 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedCommandExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedCommandExceptionMapper.java
@@ -25,6 +25,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.commands.exception.UnsupportedCommandException;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
@@ -38,16 +39,17 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class UnsupportedCommandExceptionMapper implements 
ExceptionMapper<UnsupportedCommandException> {
 
     @Override
     public Response toResponse(final UnsupportedCommandException exception) {
-
         final List<ApiParameterError> errors = new ArrayList<>();
 
         final StringBuilder validationErrorCode = new 
StringBuilder("error.msg.command.unsupported");
         final StringBuilder defaultEnglishMessage = new StringBuilder("The 
command ").append(exception.getUnsupportedCommandName())
                 .append(" is not supported.");
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
defaultEnglishMessage);
         final ApiParameterError error = 
ApiParameterError.parameterError(validationErrorCode.toString(), 
defaultEnglishMessage.toString(),
                 exception.getUnsupportedCommandName(), 
exception.getUnsupportedCommandName());
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedParameterExceptionMapper.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedParameterExceptionMapper.java
index 9f3b40f40..879cc2d2a 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedParameterExceptionMapper.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exceptionmapper/UnsupportedParameterExceptionMapper.java
@@ -25,6 +25,7 @@ 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 lombok.extern.slf4j.Slf4j;
 import org.apache.fineract.infrastructure.core.data.ApiGlobalErrorResponse;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import 
org.apache.fineract.infrastructure.core.exception.UnsupportedParameterException;
@@ -38,11 +39,11 @@ import org.springframework.stereotype.Component;
 @Provider
 @Component
 @Scope("singleton")
+@Slf4j
 public class UnsupportedParameterExceptionMapper implements 
ExceptionMapper<UnsupportedParameterException> {
 
     @Override
     public Response toResponse(final UnsupportedParameterException exception) {
-
         final List<ApiParameterError> errors = new ArrayList<>();
 
         for (final String parameterName : 
exception.getUnsupportedParameters()) {
@@ -54,6 +55,7 @@ public class UnsupportedParameterExceptionMapper implements 
ExceptionMapper<Unsu
 
             errors.add(error);
         }
+        log.warn("Exception: {}, Message: {}", exception.getClass().getName(), 
errors);
 
         final ApiGlobalErrorResponse invalidParameterError = 
ApiGlobalErrorResponse
                 .badClientRequest("validation.msg.validation.errors.exist", 
"Validation errors exist.", errors);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentifierException.java
similarity index 82%
rename from 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
rename to 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentifierException.java
index 8facd0514..263ca4767 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentifierException.java
@@ -25,13 +25,13 @@ import 
org.springframework.dao.EmptyResultDataAccessException;
  *
  *
  */
-public class InvalidTenantIdentiferException extends RuntimeException {
+public class InvalidTenantIdentifierException extends RuntimeException {
 
-    public InvalidTenantIdentiferException(final String message) {
+    public InvalidTenantIdentifierException(final String message) {
         super(message);
     }
 
-    public InvalidTenantIdentiferException(String message, 
EmptyResultDataAccessException e) {
+    public InvalidTenantIdentifierException(String message, 
EmptyResultDataAccessException e) {
         super(message, e);
     }
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
index e4494585b..4a8c0d494 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareBasicAuthenticationFilter.java
@@ -35,7 +35,7 @@ import 
org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
 import 
org.apache.fineract.infrastructure.core.serialization.ToApiJsonSerializer;
 import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil;
 import org.apache.fineract.infrastructure.security.data.PlatformRequestLog;
-import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentiferException;
+import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException;
 import 
org.apache.fineract.infrastructure.security.service.BasicAuthTenantDetailsService;
 import 
org.apache.fineract.notification.service.NotificationReadPlatformService;
 import org.apache.fineract.useradministration.domain.AppUser;
@@ -116,7 +116,7 @@ public class TenantAwareBasicAuthenticationFilter extends 
BasicAuthenticationFil
                 }
 
                 if (tenantIdentifier == null && this.exceptionIfHeaderMissing) 
{
-                    throw new InvalidTenantIdentiferException("No tenant 
identifier found: Add request header of '"
+                    throw new InvalidTenantIdentifierException("No tenant 
identifier found: Add request header of '"
                             + this.tenantRequestHeader + "' or add the 
parameter 'tenantIdentifier' to query string of request URL.");
                 }
 
@@ -150,7 +150,7 @@ public class TenantAwareBasicAuthenticationFilter extends 
BasicAuthenticationFil
             }
 
             super.doFilterInternal(request, response, filterChain);
-        } catch (final InvalidTenantIdentiferException e) {
+        } catch (final InvalidTenantIdentifierException e) {
             // deal with exception at low level
             SecurityContextHolder.getContext().setAuthentication(null);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
index 3ca2ebeb1..cd7e9c5fd 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/filter/TenantAwareTenantIdentifierFilter.java
@@ -40,7 +40,7 @@ import 
org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
 import 
org.apache.fineract.infrastructure.core.serialization.ToApiJsonSerializer;
 import org.apache.fineract.infrastructure.core.service.ThreadLocalContextUtil;
 import org.apache.fineract.infrastructure.security.data.PlatformRequestLog;
-import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentiferException;
+import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException;
 import 
org.apache.fineract.infrastructure.security.service.BasicAuthTenantDetailsService;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -107,7 +107,7 @@ public class TenantAwareTenantIdentifierFilter extends 
GenericFilterBean {
                 }
 
                 if (tenantIdentifier == null && this.exceptionIfHeaderMissing) 
{
-                    throw new InvalidTenantIdentiferException("No tenant 
identifier found: Add request header of '"
+                    throw new InvalidTenantIdentifierException("No tenant 
identifier found: Add request header of '"
                             + this.tenantRequestHeader + "' or add the 
parameter 'tenantIdentifier' to query string of request URL.");
                 }
 
@@ -141,7 +141,7 @@ public class TenantAwareTenantIdentifierFilter extends 
GenericFilterBean {
                 }
                 chain.doFilter(request, response);
             }
-        } catch (final InvalidTenantIdentiferException e) {
+        } catch (final InvalidTenantIdentifierException e) {
             // deal with exception at low level
             SecurityContextHolder.getContext().setAuthentication(null);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java
index a47556a28..fa32a618f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsServiceJdbc.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.security.service;
 
 import javax.sql.DataSource;
 import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
-import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentiferException;
+import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.cache.annotation.Cacheable;
@@ -52,7 +52,7 @@ public class BasicAuthTenantDetailsServiceJdbc implements 
BasicAuthTenantDetails
 
             return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { 
tenantIdentifier }); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
-            throw new InvalidTenantIdentiferException("The tenant identifier: 
" + tenantIdentifier + " is not valid.", e);
+            throw new InvalidTenantIdentifierException("The tenant identifier: 
" + tenantIdentifier + " is not valid.", e);
         }
     }
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
index 4cbc62370..ee78901eb 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/JdbcTenantDetailsService.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.security.service;
 import java.util.List;
 import javax.sql.DataSource;
 import org.apache.fineract.infrastructure.core.domain.FineractPlatformTenant;
-import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentiferException;
+import 
org.apache.fineract.infrastructure.security.exception.InvalidTenantIdentifierException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.cache.annotation.Cacheable;
@@ -52,7 +52,7 @@ public class JdbcTenantDetailsService implements 
TenantDetailsService {
 
             return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { 
tenantIdentifier }); // NOSONAR
         } catch (final EmptyResultDataAccessException e) {
-            throw new InvalidTenantIdentiferException("The tenant identifier: 
" + tenantIdentifier + " is not valid.", e);
+            throw new InvalidTenantIdentifierException("The tenant identifier: 
" + tenantIdentifier + " is not valid.", e);
         }
     }
 

Reply via email to