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

coheigea pushed a commit to branch 1.4.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf-fediz.git


The following commit(s) were added to refs/heads/1.4.x-fixes by this push:
     new cadb526  Provide a custom way of handling a request + exception in the 
Spring plugin
cadb526 is described below

commit cadb52657ebb70272b278ed63362ec6a06ae23c6
Author: Colm O hEigeartaigh <cohei...@apache.org>
AuthorDate: Thu Sep 6 10:47:15 2018 +0100

    Provide a custom way of handling a request + exception in the Spring plugin
---
 .../spring/web/FederationAuthenticationEntryPoint.java   | 16 ++++++++++++++++
 .../web/FederationAuthenticationFailureHandler.java      | 16 ++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git 
a/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationEntryPoint.java
 
b/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationEntryPoint.java
index 16dfbf4..9da52e7 100644
--- 
a/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationEntryPoint.java
+++ 
b/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationEntryPoint.java
@@ -30,6 +30,7 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.cxf.fediz.core.config.FedizContext;
 import org.apache.cxf.fediz.core.exception.ProcessingException;
+import org.apache.cxf.fediz.core.handler.RequestHandler;
 import org.apache.cxf.fediz.core.metadata.MetadataDocumentHandler;
 import org.apache.cxf.fediz.core.processor.FedizProcessor;
 import org.apache.cxf.fediz.core.processor.FedizProcessorFactory;
@@ -65,6 +66,15 @@ public class FederationAuthenticationEntryPoint implements 
AuthenticationEntryPo
 
     private ApplicationContext appContext;
     private FederationConfig federationConfig;
+    private RequestHandler<?> requestHandler;
+
+    public RequestHandler<?> getRequestHandler() {
+        return requestHandler;
+    }
+
+    public void setRequestHandler(RequestHandler<?> requestHandler) {
+        this.requestHandler = requestHandler;
+    }
 
     public FederationConfig getFederationConfig() {
         return federationConfig;
@@ -85,6 +95,12 @@ public class FederationAuthenticationEntryPoint implements 
AuthenticationEntryPo
         FedizContext fedContext = federationConfig.getFedizContext();
         LOG.debug("Federation context: {}", fedContext);
 
+        // First see if we want to handle the request in some custom way
+        if (requestHandler != null && 
requestHandler.canHandleRequest(servletRequest)) {
+            requestHandler.handleRequest(servletRequest, response);
+            return;
+        }
+
         // Check to see if it is a metadata request
         MetadataDocumentHandler mdHandler = new 
MetadataDocumentHandler(fedContext);
         if (mdHandler.canHandleRequest(servletRequest)) {
diff --git 
a/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationFailureHandler.java
 
b/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationFailureHandler.java
index 99d9f5d..942a566 100644
--- 
a/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationFailureHandler.java
+++ 
b/plugins/spring/src/main/java/org/apache/cxf/fediz/spring/web/FederationAuthenticationFailureHandler.java
@@ -25,6 +25,7 @@ import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.cxf.fediz.core.handler.RequestHandler;
 import org.apache.cxf.fediz.spring.FederationConfig;
 import org.apache.cxf.fediz.spring.authentication.ExpiredTokenException;
 import org.springframework.security.core.AuthenticationException;
@@ -36,6 +37,7 @@ import 
org.springframework.security.web.authentication.SimpleUrlAuthenticationFa
 public class FederationAuthenticationFailureHandler extends 
SimpleUrlAuthenticationFailureHandler {
 
     private FederationConfig federationConfig;
+    private RequestHandler<?> requestHandler;
 
     public FederationAuthenticationFailureHandler() {
         super();
@@ -45,6 +47,12 @@ public class FederationAuthenticationFailureHandler extends 
SimpleUrlAuthenticat
     public void onAuthenticationFailure(HttpServletRequest request, 
HttpServletResponse response,
                                         AuthenticationException exception) 
throws IOException, ServletException {
 
+        // First see if we want to handle the request in some custom way
+        if (requestHandler != null && 
requestHandler.canHandleRequest(request)) {
+            requestHandler.handleRequest(request, response);
+            return;
+        }
+
         if (exception instanceof ExpiredTokenException) {
             // Just redirect back to the original URL and re-start the 
authentication process.
             response.sendRedirect(request.getRequestURL().toString());
@@ -62,4 +70,12 @@ public class FederationAuthenticationFailureHandler extends 
SimpleUrlAuthenticat
         this.federationConfig = fedConfig;
     }
 
+    public RequestHandler<?> getRequestHandler() {
+        return requestHandler;
+    }
+
+    public void setRequestHandler(RequestHandler<?> requestHandler) {
+        this.requestHandler = requestHandler;
+    }
+
 }
\ No newline at end of file

Reply via email to