public void doFilter()

in src/main/java/org/apache/geronimo/microprofile/impl/jwtauth/servlet/GeronimoJwtAuthFilter.java [68:104]


    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
        if (!HttpServletRequest.class.isInstance(request)) {
            chain.doFilter(request, response);
            return;
        }

        final HttpServletRequest httpServletRequest = HttpServletRequest.class.cast(request);
        if (!publicUrls.isEmpty()) {
            final String current = httpServletRequest.getRequestURI().substring(httpServletRequest.getContextPath().length());
            if (publicUrls.stream().anyMatch(current::startsWith)) {
                chain.doFilter(request, response);
                return;
            }
        }

        try {
            final JwtRequest req = new JwtRequest(service, headerName, cookieName, prefix, httpServletRequest);
            extension.execute(req.asTokenAccessor(), () -> chain.doFilter(req, response));
        } catch (final Exception e) { // when not used with JAX-RS but directly Servlet
            final HttpServletResponse httpServletResponse = HttpServletResponse.class.cast(response);
            if (!httpServletResponse.isCommitted()) {
                Throwable current = e;
                while (current != null) {
                    if (JwtException.class.isInstance(current)) {
                        final JwtException ex = JwtException.class.cast(current);
                        httpServletResponse.sendError(ex.getStatus(), ex.getMessage());
                        return;
                    }
                    if (current == current.getCause()) {
                        break;
                    }
                    current = current.getCause();
                }
            }
            throw e;
        }
    }