spring-social-web

org.springframework.social.connect.web
Class ReconnectFilter

java.lang.Object
  extended by org.springframework.web.filter.GenericFilterBean
      extended by org.springframework.social.connect.web.ReconnectFilter
All Implemented Interfaces:
javax.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.EnvironmentAware, org.springframework.web.context.ServletContextAware

public class ReconnectFilter
extends org.springframework.web.filter.GenericFilterBean

Servlet filter that intercepts Spring Social ApiExceptions thrown in the course of a request and attempts to reconcile any connection-related problems by deleting the stale/revoked connection and walking the user through the connection process to obtain a new connection.

This filter handles the exceptions via the following flow:

Since:
1.1.0
Author:
Craig Walls

Constructor Summary
ReconnectFilter(org.springframework.social.connect.UsersConnectionRepository usersConnectionRepository, org.springframework.social.UserIdSource userIdSource)
          Creates an instance of ReconnectFilter.
 
Method Summary
 void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)
           
protected  java.lang.String getRefreshUrl(javax.servlet.http.HttpServletRequest request, org.springframework.social.ApiException apiException)
          Returns the URL to redirect to if it is determined that a connection needs to be renewed.
protected  boolean shouldPerformRefreshPostRequest(javax.servlet.http.HttpServletRequest request)
          Determines whether or not the handled request should be converted to a POST request to ConnectController for authorization.
 
Methods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ReconnectFilter

public ReconnectFilter(org.springframework.social.connect.UsersConnectionRepository usersConnectionRepository,
                       org.springframework.social.UserIdSource userIdSource)
Creates an instance of ReconnectFilter.

Parameters:
usersConnectionRepository - a UsersConnectionRepository used to create a ConnectionRepository for the current user.
userIdSource - an instance of UserIdSource to obtain the current user's ID used to create a ConnectionFactory.
Method Detail

doFilter

public void doFilter(javax.servlet.ServletRequest request,
                     javax.servlet.ServletResponse response,
                     javax.servlet.FilterChain chain)
              throws java.io.IOException,
                     javax.servlet.ServletException
Throws:
java.io.IOException
javax.servlet.ServletException

getRefreshUrl

protected java.lang.String getRefreshUrl(javax.servlet.http.HttpServletRequest request,
                                         org.springframework.social.ApiException apiException)
Returns the URL to redirect to if it is determined that a connection needs to be renewed. By default, the filter will redirect to /connect/{provider ID} with a "reconnect" query parameter. This filter also handles GET requests to that same path before submitting a POST request to ConnectController for authorization. May be overridden by a subclass to handle other flows, such as redirecting to a page that informs the user that a new connection is needed.

Parameters:
request - The HTTP request that triggered the exception.
apiException - The ApiException.
Returns:
the URL to redirect to if a connection needs to be renewed.

shouldPerformRefreshPostRequest

protected boolean shouldPerformRefreshPostRequest(javax.servlet.http.HttpServletRequest request)
Determines whether or not the handled request should be converted to a POST request to ConnectController for authorization. By default, will return true if the request is a GET request for /connect/{provider ID} and there is a "reconnect" query parameter. May be overridden by a subclass to consider other criteria in deciding whether or not to convert the request.

Parameters:
request - the handled request.
Returns:
true if the request should be converted to a POST request to ConnectController.

spring-social-web