dobbs       02/03/29 07:57:04

  Modified:    src/java/org/apache/turbine Turbine.java
               src/java/org/apache/turbine/modules/actions/sessionvalidator
                        DefaultSessionValidator.java SessionValidator.java
                        TemplateSecureSessionValidator.java
                        TemplateSessionValidator.java
  Log:
  Thanks to Peter Lynch for these patches to remove antiquated redirect
  logic.  Thanks also to Rodney Schneider for reminding us about these
  patches on several occasions.
  
  Here's what Peter had to say about the patches:
  
  "1. Removes the Turbine.java logic of redirection to establish new
  sessions which, although reportedly a fix for certain obscure browser
  and server combinations, also has the consequence of creating several
  problems itself.
  
  2. Removes the abstract requiresNewSession from SessionValidator.java
  et all. This method is no longer needed as the only place it was used
  was in the above removed code."
  
  There's also a lengthy rationale for the changes here:
  <http://www.mail-archive.com/turbine-dev%40jakarta.apache.org/msg03660.html>
  
  Revision  Changes    Path
  1.13      +12 -82    jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java
  
  Index: Turbine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Turbine.java      29 Mar 2002 02:00:02 -0000      1.12
  +++ Turbine.java      29 Mar 2002 15:57:03 -0000      1.13
  @@ -117,7 +117,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Sean Legassick</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Martin Poeschl</a>
  - * @version $Id: Turbine.java,v 1.12 2002/03/29 02:00:02 jmcnally Exp $
  + * @version $Id: Turbine.java,v 1.13 2002/03/29 15:57:03 dobbs Exp $
    */
   public class Turbine
       extends HttpServlet
  @@ -399,95 +399,25 @@
               // themselves.
               init(data);
   
  -            // Get the instance of the Session Validator.
  -            SessionValidator sessionValidator = (SessionValidator)ActionLoader
  -                .getInstance().getInstance(TurbineResources.getString(
  -                    "action.sessionvalidator"));
  -
  -            // if this is the redirected stage of the initial request,
  -            // check that the session is now not new.
  -            // If it is not, then redirect back to the
  -            // original URL (i.e. remove the "redirected" pathinfo)
  -            if (data.getParameters()
  -                .getString(REDIRECTED_PATHINFO_NAME, "false").startsWith("true"))
  -            {
  -                if (data.getSession().isNew())
  -                {
  -                    String message = "Infinite redirect detected...";
  -                    log(message);
  -                    Log.error(message);
  -                    throw new Exception(message);
  -                }
  -                else
  -                {
  -                    DynamicURI duri = new DynamicURI (data, true);
  -
  -                    // Pass on the sent data in pathinfo.
  -                    for (Enumeration e = data.getParameters().keys() ;
  -                         e.hasMoreElements() ;)
  -                    {
  -                        String key = (String) e.nextElement();
  -                        if (!key.equals(REDIRECTED_PATHINFO_NAME))
  -                        {
  -                            String value =
  -                                (String) data.getParameters().getString ( key );
  -                            duri.addPathInfo((String)key, (String)value );
  -                        }
  -                    }
  -
  -                    data.getResponse().sendRedirect( duri.toString() );
  -                    return;
  -                }
  -            }
  -            else
  +            // set the session timeout if specified in turbine's properties
  +            // file if this is a new session
  +            if (data.getSession().isNew())
               {
  -                // Insist that the client starts a session before access
  -                // to data is allowed. this is done by redirecting them to
  -                // the "screen.homepage" page but you could have them go
  -                // to any page as a starter (ie: the homepage)
  -                // "data.getResponse()" represents the HTTP servlet
  -                // response.
  -                if ( sessionValidator.requiresNewSession(data) &&
  -                     data.getSession().isNew() )
  +                int timeout = TurbineResources.getInt("session.timeout", -1);
  +                if (timeout != -1)
                   {
  -                    DynamicURI duri = new DynamicURI (data, true);
  -
  -                    // Pass on the sent data in pathinfo.
  -                    for (Enumeration e = data.getParameters().keys() ;
  -                         e.hasMoreElements() ;)
  -                    {
  -                        String key = (String) e.nextElement();
  -                        String value =
  -                            (String) data.getParameters().getString ( key );
  -                        duri.addPathInfo((String)key, (String)value );
  -                    }
  -
  -                    // add a dummy bit of path info to fool browser into
  -                    // thinking this is a new URL
  -                    if (!data.getParameters()
  -                        .containsKey(REDIRECTED_PATHINFO_NAME))
  -                    {
  -                        duri.addPathInfo(REDIRECTED_PATHINFO_NAME, "true");
  -                    }
  -
  -                    // as the session is new take this opportunity to
  -                    // set the session timeout if specified in TR.properties
  -                    int timeout =
  -                        TurbineResources.getInt("session.timeout", -1);
  -
  -                    if (timeout != -1)
  -                    {
  -                        data.getSession().setMaxInactiveInterval(timeout);
  -                    }
  -
  -                    data.getResponse().sendRedirect( duri.toString() );
  -                    return;
  +                    data.getSession().setMaxInactiveInterval(timeout);
                   }
               }
   
               // Fill in the screen and action variables.
               data.setScreen ( data.getParameters().getString("screen") );
               data.setAction ( data.getParameters().getString("action") );
  +
  +            // Get the instance of the Session Validator.
  +            SessionValidator sessionValidator = (SessionValidator)ActionLoader
  +                .getInstance().getInstance(TurbineResources.getString(
  +                    "action.sessionvalidator"));
   
               // Special case for login and logout, this must happen before the
               // session validator is executed in order either to allow a user to
  
  
  
  1.2       +1 -15     
jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/DefaultSessionValidator.java
  
  Index: DefaultSessionValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/DefaultSessionValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultSessionValidator.java      16 Aug 2001 05:08:32 -0000      1.1
  +++ DefaultSessionValidator.java      29 Mar 2002 15:57:04 -0000      1.2
  @@ -83,7 +83,7 @@
    * Turbine servlet.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dave Bryson</a>
  - * @version $Id: DefaultSessionValidator.java,v 1.1 2001/08/16 05:08:32 jvanzyl Exp 
$
  + * @version $Id: DefaultSessionValidator.java,v 1.2 2002/03/29 15:57:04 dobbs Exp $
    */
   public class DefaultSessionValidator extends SessionValidator
   {
  @@ -139,19 +139,5 @@
                   data.setAction( "" );
               }
           }
  -    }
  -
  -    /**
  -     * By default, this is true. It says that we require a new session
  -     * in order to allow people to access the system. We accomplish
  -     * this by doing a redirect and using the HttpSession spec.
  -     *
  -     * @param data Turbine information.
  -     * @return True if we require a new session in order to allow
  -     * people to access the system.
  -     */
  -    public boolean requiresNewSession(RunData data)
  -    {
  -        return true;
       }
   }
  
  
  
  1.2       +1 -11     
jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java
  
  Index: SessionValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SessionValidator.java     16 Aug 2001 05:08:33 -0000      1.1
  +++ SessionValidator.java     29 Mar 2002 15:57:04 -0000      1.2
  @@ -81,18 +81,8 @@
    * Turbine servlet.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dave Bryson</a>
  - * @version $Id: SessionValidator.java,v 1.1 2001/08/16 05:08:33 jvanzyl Exp $
  + * @version $Id: SessionValidator.java,v 1.2 2002/03/29 15:57:04 dobbs Exp $
    */
   public abstract class SessionValidator extends Action
   {
  -    /**
  -     * Inform whether we require a new session in order to allow
  -     * people to access the system. We accomplish this by doing a
  -     * redirect and using the HttpSession spec.
  -     *
  -     * @param data Turbine information.
  -     * @return True if we require a new session in order to allow
  -     * people to access the system.
  -     */
  -    public abstract boolean requiresNewSession(RunData data);
   }
  
  
  
  1.4       +1 -15     
jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/TemplateSecureSessionValidator.java
  
  Index: TemplateSecureSessionValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/TemplateSecureSessionValidator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TemplateSecureSessionValidator.java       16 Nov 2001 03:38:35 -0000      1.3
  +++ TemplateSecureSessionValidator.java       29 Mar 2002 15:57:04 -0000      1.4
  @@ -79,7 +79,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>John D. McNally</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dave Bryson</a>
  - * @version $Id: TemplateSecureSessionValidator.java,v 1.3 2001/11/16 03:38:35 
jvanzyl Exp $
  + * @version $Id: TemplateSecureSessionValidator.java,v 1.4 2002/03/29 15:57:04 
dobbs Exp $
    */
   public class TemplateSecureSessionValidator extends SessionValidator
   {
  @@ -192,19 +192,5 @@
           {
               data.setScreen(null);
           }
  -    }
  -
  -    /**
  -     * By default, this is true. It says that we require a new session
  -     * in order to allow people to access the system. We accomplish
  -     * this by doing a redirect and using the HttpSession spec.
  -     *
  -     * @param data Turbine information.
  -     * @return True if we require a new session in order to allow
  -     * people to access the system.
  -     */
  -    public boolean requiresNewSession(RunData data)
  -    {
  -        return true;
       }
   }
  
  
  
  1.4       +1 -15     
jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/TemplateSessionValidator.java
  
  Index: TemplateSessionValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/modules/actions/sessionvalidator/TemplateSessionValidator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TemplateSessionValidator.java     16 Nov 2001 03:38:35 -0000      1.3
  +++ TemplateSessionValidator.java     29 Mar 2002 15:57:04 -0000      1.4
  @@ -72,7 +72,7 @@
    * @see TemplateSecureSessionValidator
    * @author <a href="mailto:[EMAIL PROTECTED]";>John D. McNally</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dave Bryson</a>
  - * @version $Id: TemplateSessionValidator.java,v 1.3 2001/11/16 03:38:35 jvanzyl 
Exp $
  + * @version $Id: TemplateSessionValidator.java,v 1.4 2002/03/29 15:57:04 dobbs Exp $
    */
   public class TemplateSessionValidator extends SessionValidator
   {
  @@ -150,19 +150,5 @@
           {
               data.setScreen(null);
           }
  -    }
  -
  -    /**
  -     * By default, this is true. It says that we require a new session
  -     * in order to allow people to access the system. We accomplish
  -     * this by doing a redirect and using the HttpSession spec.
  -     *
  -     * @param data Turbine information.
  -     * @return True if we require a new session in order to allow
  -     * people to access the system.
  -     */
  -    public boolean requiresNewSession(RunData data)
  -    {
  -        return true;
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to