TOMEE-2239 add try-catch block back but add a final if statement
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/cb747b09 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/cb747b09 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/cb747b09 Branch: refs/heads/tomee-7.1.x Commit: cb747b0912c7a54866430b56743378d1640ca0b0 Parents: 1bf7963 Author: Thiago Veronezi <thi...@veronezi.org> Authored: Thu Sep 20 09:43:46 2018 -0400 Committer: Roberto Cortez <radcor...@yahoo.com> Committed: Mon Oct 1 11:33:03 2018 +0100 ---------------------------------------------------------------------- .../apache/tomee/microprofile/jwt/MPJWTFilter.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/cb747b09/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java ---------------------------------------------------------------------- diff --git a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java index 27b4c57..78f059e 100644 --- a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java +++ b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java @@ -68,7 +68,22 @@ public class MPJWTFilter implements Filter { final HttpServletRequest httpServletRequest = (HttpServletRequest) request; // now wrap the httpServletRequest and override the principal so CXF can propagate into the SecurityContext - chain.doFilter(new MPJWTServletRequestWrapper(httpServletRequest, authContextInfo.get()), response); + try { + chain.doFilter(new MPJWTServletRequestWrapper(httpServletRequest, authContextInfo.get()), response); + + } catch (final Exception e) { + // this is an alternative to the @Provider bellow which requires registration on the fly + // or users to add it into their webapp for scanning or into the Application itself + if (MPJWTException.class.isInstance(e)) { + final MPJWTException jwtException = MPJWTException.class.cast(e); + HttpServletResponse.class.cast(response).sendError(jwtException.getStatus(), jwtException.getMessage()); + } else if (MPJWTException.class.isInstance(e.getCause())) { + final MPJWTException jwtException = MPJWTException.class.cast(e.getCause()); + HttpServletResponse.class.cast(response).sendError(jwtException.getStatus(), jwtException.getMessage()); + } else { + throw e; + } + } } @Override