private boolean isLogoutRequest()

in plugins/cxf/src/main/java/org/apache/cxf/fediz/cxf/plugin/FedizRedirectBindingFilter.java [281:328]


    private boolean isLogoutRequest(ContainerRequestContext context, FedizContext fedConfig,
                                    Message message, MultivaluedMap<String, String> params) {

        boolean signout = false;
        String logoutUrl = fedConfig.getLogoutURL();
        if (params != null && fedConfig.getProtocol() instanceof FederationProtocol
            && FederationConstants.ACTION_SIGNOUT.equals(
                params.getFirst(FederationConstants.PARAM_ACTION))) {
            signout = true;
        } else if (logoutUrl != null && !logoutUrl.isEmpty()) {
            String requestPath = "/" + context.getUriInfo().getPath();
            if (requestPath.equals(logoutUrl) || requestPath.equals(logoutUrl + "/")) {
                signout = true;
            }
        }

        if (signout) {
            cleanupContext(message);

            try {
                FedizProcessor processor =
                    FedizProcessorFactory.newFedizProcessor(fedConfig.getProtocol());

                HttpServletRequest request = messageContext.getHttpServletRequest();
                RedirectionResponse redirectionResponse =
                    processor.createSignOutRequest(request, null, fedConfig); //TODO
                String redirectURL = redirectionResponse.getRedirectionURL();
                if (redirectURL != null) {
                    ResponseBuilder response = Response.seeOther(new URI(redirectURL));
                    Map<String, String> headers = redirectionResponse.getHeaders();
                    if (!headers.isEmpty()) {
                        for (Entry<String, String> entry : headers.entrySet()) {
                            response.header(entry.getKey(), entry.getValue());
                        }
                    }

                    context.abortWith(response.build());

                    return true;
                }
            } catch (Exception ex) {
                LOG.debug(ex.getMessage(), ex);
                throw ExceptionUtils.toInternalServerErrorException(ex, null);
            }
        }

        return false;
    }