Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50700
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 14 Feb 2011 19:05:25 +0000 (19:05 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 14 Feb 2011 19:05:25 +0000 (19:05 +0000)
Ensure that the override attribute of context parameters is correctly followed.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1070609 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/core/StandardContext.java
webapps/docs/changelog.xml

index e6598cf..2091b11 100644 (file)
@@ -5270,24 +5270,30 @@ public class StandardContext extends ContainerBase
      * the application parameters appropriately.
      */
     private void mergeParameters() {
-        ServletContext sc = getServletContext();
+        Map<String,String> mergedParams = new HashMap<String,String>();
         
         String names[] = findParameters();
         for (int i = 0; i < names.length; i++) {
-            sc.setInitParameter(names[i], findParameter(names[i]));
+            mergedParams.put(names[i], findParameter(names[i]));
         }
 
         ApplicationParameter params[] = findApplicationParameters();
         for (int i = 0; i < params.length; i++) {
             if (params[i].getOverride()) {
-                if (sc.getInitParameter(params[i].getName()) == null) {
-                    sc.setInitParameter(params[i].getName(),
+                if (mergedParams.get(params[i].getName()) == null) {
+                    mergedParams.put(params[i].getName(),
                             params[i].getValue());
                 }
             } else {
-                sc.setInitParameter(params[i].getName(), params[i].getValue());
+                mergedParams.put(params[i].getName(), params[i].getValue());
             }
         }
+        
+        ServletContext sc = getServletContext();
+        for (Map.Entry<String,String> entry : mergedParams.entrySet()) {
+            sc.setInitParameter(entry.getKey(), entry.getValue());
+        }
+
     }
 
 
index 2b3b36d..2dc466c 100644 (file)
         the expected state transitions. (markt)
       </add>
       <fix>
+        <bug>50700</bug>: Ensure that the override attribute of context
+        parameters is correctly followed. (markt)
+      </fix>
+      <fix>
         <bug>50721</bug>: Correctly handle URL decoding where the URL ends in
         %nn. Patch provided by Christof Marti. (markt)
       </fix>