You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2013/05/15 14:15:43 UTC

svn commit: r1482782 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/ test/org/apache/catalina/core/ webapps/docs/

Author: violetagg
Date: Wed May 15 12:15:43 2013
New Revision: 1482782

URL: http://svn.apache.org/r1482782
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54974
Merged revision 1482720 from tomcat/trunk:
SessionCookieConfig.setXXX methods will throw IllegalStateException if the ServletContext from which this SessionCookieConfig was acquired has already been initialized.

Added:
    tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationSessionCookieConfig.java
      - copied unchanged from r1482720, tomcat/trunk/test/org/apache/catalina/core/TestApplicationSessionCookieConfig.java
Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1482720

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1482782&r1=1482781&r2=1482782&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java Wed May 15 12:15:43 2013
@@ -120,7 +120,8 @@ public class ApplicationContext
     public ApplicationContext(StandardContext context) {
         super();
         this.context = context;
-        
+        this.sessionCookieConfig = new ApplicationSessionCookieConfig(context);
+
         // Populate session tracking modes
         populateSessionTrackingModes();
     }
@@ -190,9 +191,8 @@ public class ApplicationContext
     /**
      * Session Cookie config
      */
-    private SessionCookieConfig sessionCookieConfig =
-        new ApplicationSessionCookieConfig();
-    
+    private SessionCookieConfig sessionCookieConfig;
+
     /**
      * Session tracking modes
      */

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java?rev=1482782&r1=1482781&r2=1482782&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java Wed May 15 12:15:43 2013
@@ -21,10 +21,18 @@ import javax.servlet.SessionCookieConfig
 import javax.servlet.http.Cookie;
 
 import org.apache.catalina.Context;
+import org.apache.catalina.LifecycleState;
 import org.apache.catalina.util.SessionConfig;
+import org.apache.tomcat.util.res.StringManager;
 
 public class ApplicationSessionCookieConfig implements SessionCookieConfig {
 
+    /**
+     * The string manager for this package.
+     */
+    private static final StringManager sm = StringManager
+            .getManager(Constants.Package);
+
     private boolean httpOnly;
     private boolean secure;
     private int maxAge = -1;
@@ -32,7 +40,12 @@ public class ApplicationSessionCookieCon
     private String domain;
     private String name;
     private String path;
-    
+    private StandardContext context;
+
+    public ApplicationSessionCookieConfig(StandardContext context) {
+        this.context = context;
+    }
+
     @Override
     public String getComment() {
         return comment;
@@ -70,36 +83,71 @@ public class ApplicationSessionCookieCon
 
     @Override
     public void setComment(String comment) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "comment",
+                    context.getPath()));
+        }
         this.comment = comment;
     }
 
     @Override
     public void setDomain(String domain) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "domain name",
+                    context.getPath()));
+        }
         this.domain = domain;
     }
 
     @Override
     public void setHttpOnly(boolean httpOnly) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "HttpOnly",
+                    context.getPath()));
+        }
         this.httpOnly = httpOnly;
     }
 
     @Override
     public void setMaxAge(int maxAge) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "max age",
+                    context.getPath()));
+        }
         this.maxAge = maxAge;
     }
 
     @Override
     public void setName(String name) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "name",
+                    context.getPath()));
+        }
         this.name = name;
     }
 
     @Override
     public void setPath(String path) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "path",
+                    context.getPath()));
+        }
         this.path = path;
     }
 
     @Override
     public void setSecure(boolean secure) {
+        if (!context.getState().equals(LifecycleState.STARTING_PREP)) {
+            throw new IllegalStateException(sm.getString(
+                    "applicationSessionCookieConfig.ise", "secure",
+                    context.getPath()));
+        }
         this.secure = secure;
     }
 

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1482782&r1=1482781&r2=1482782&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties Wed May 15 12:15:43 2013
@@ -55,6 +55,7 @@ applicationResponse.badParent=Cannot loc
 applicationResponse.badResponse=Response is not a javax.servlet.ServletResponseWrapper
 applicationServletRegistration.setServletSecurity.iae=Null constraint specified for servlet [{0}] deployed to context with name [{1}]
 applicationServletRegistration.setServletSecurity.ise=Security constraints can't be added to servlet [{0}] deployed to context with name [{1}] as the context has already been initialised
+applicationSessionCookieConfig.ise=Property {0} can not be added to SessionCookieConfig for context {1} as the context has been initialised
 aprListener.aprInit=The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: {0}
 aprListener.tcnInvalid=An incompatible version {0} of the APR based Apache Tomcat Native library is installed, while Tomcat requires version {1}
 aprListener.tcnVersion=An older version {0} of the APR based Apache Tomcat Native library is installed, while Tomcat recommends a minimum version of {1}

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1482782&r1=1482781&r2=1482782&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed May 15 12:15:43 2013
@@ -74,6 +74,14 @@
         Ensure that when auto deployment runs for a Host, it uses the latest
         values for copyXML, deployXML and unpackWARs. (markt)
       </fix>
+      <fix>
+        <bug>54974</bug>: Ensure that 
+        <code>SessionCookieConfig#set&lt;methods&gt;</code>
+        will throw <code>IllegalStateException</code> if the
+        <code>ServletContext</code> from which this 
+        <code>SessionCookieConfig</code> was acquired has already been
+        initialized. (violetagg)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">
@@ -81,8 +89,8 @@
       <fix>
         <bug>54968</bug>: Return the correct version number (2.2) of the JSP
         specification that is supported by the JSP engine when
-        javax.servlet.jsp.JspEngineInfo#getSpecificationVersion() is invoked.
-        (violetagg) 
+        <code>javax.servlet.jsp.JspEngineInfo#getSpecificationVersion()</code>
+        is invoked. (violetagg) 
       </fix>
     </changelog>
   </subsection>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org