Author: markt Date: Thu Dec 6 18:55:23 2018 New Revision: 1848347 URL: http://svn.apache.org/viewvc?rev=1848347&view=rev Log: Refactor with an eye to fixing BZ 62988 that also needs to determine the session cookie path from the Context.
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java tomcat/trunk/java/org/apache/catalina/util/SessionConfig.java Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java?rev=1848347&r1=1848346&r2=1848347&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java Thu Dec 6 18:55:23 2018 @@ -197,29 +197,7 @@ public class ApplicationSessionCookieCon cookie.setHttpOnly(true); } - String contextPath = context.getSessionCookiePath(); - if (contextPath == null || contextPath.length() == 0) { - contextPath = scc.getPath(); - } - if (contextPath == null || contextPath.length() == 0) { - contextPath = context.getEncodedPath(); - } - if (context.getSessionCookiePathUsesTrailingSlash()) { - // Handle special case of ROOT context where cookies require a path of - // '/' but the servlet spec uses an empty string - // Also ensure the cookies for a context with a path of /foo don't get - // sent for requests with a path of /foobar - if (!contextPath.endsWith("/")) { - contextPath = contextPath + "/"; - } - } else { - // Only handle special case of ROOT context where cookies require a - // path of '/' but the servlet spec uses an empty string - if (contextPath.length() == 0) { - contextPath = "/"; - } - } - cookie.setPath(contextPath); + cookie.setPath(SessionConfig.getSessionCookiePath(context)); return cookie; } Modified: tomcat/trunk/java/org/apache/catalina/util/SessionConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/SessionConfig.java?rev=1848347&r1=1848346&r2=1848347&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/util/SessionConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/SessionConfig.java Thu Dec 6 18:55:23 2018 @@ -84,6 +84,44 @@ public class SessionConfig { } + /** + * Determine the value to use for the session cookie path for the provided + * context. + * + * @param context The context + * @return the parameter name for the session + */ + public static String getSessionCookiePath(Context context) { + + SessionCookieConfig scc = context.getServletContext().getSessionCookieConfig(); + + String contextPath = context.getSessionCookiePath(); + if (contextPath == null || contextPath.length() == 0) { + contextPath = scc.getPath(); + } + if (contextPath == null || contextPath.length() == 0) { + contextPath = context.getEncodedPath(); + } + if (context.getSessionCookiePathUsesTrailingSlash()) { + // Handle special case of ROOT context where cookies require a path of + // '/' but the servlet spec uses an empty string + // Also ensure the cookies for a context with a path of /foo don't get + // sent for requests with a path of /foobar + if (!contextPath.endsWith("/")) { + contextPath = contextPath + "/"; + } + } else { + // Only handle special case of ROOT context where cookies require a + // path of '/' but the servlet spec uses an empty string + if (contextPath.length() == 0) { + contextPath = "/"; + } + } + + return contextPath; + } + + private SessionConfig() { // Utility class. Hide default constructor. } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org