Trying to merge filter maps is a bad idea.
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 1 Nov 2009 21:46:09 +0000 (21:46 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 1 Nov 2009 21:46:09 +0000 (21:46 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@831764 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/deploy/FilterMap.java
java/org/apache/catalina/startup/WebXml.java

index 1c53d46..001fcb0 100644 (file)
@@ -37,11 +37,12 @@ import javax.servlet.DispatcherType;
 
 public class FilterMap implements Serializable {
 
-    private static final long serialVersionUID = 1L;
-    
+
     // ------------------------------------------------------------- Properties
 
 
+    private static final long serialVersionUID = 1L;
+    
     /**
      * The name of this filter to be executed when this mapping matches
      * a particular request.
@@ -100,15 +101,6 @@ public class FilterMap implements Serializable {
         }
     }
 
-    public void addServletNames(String[] servletNames) {
-        if (servletNames != null) {
-            for (int i = 0; i < servletNames.length; i++) {
-                addServletName(servletNames[i]);
-            }
-        }
-    }
-
-
     
     /**
      * The flag that indicates this mapping will match all url-patterns
@@ -150,14 +142,6 @@ public class FilterMap implements Serializable {
         }
     }
     
-    public void addUrlPatterns(String[] urlPatterns) {
-        if (urlPatterns != null) {
-            for (int i = 0; i < urlPatterns.length; i++) {
-                addURLPattern(urlPatterns[i]);
-            }
-        }
-    }
-
     /**
      *
      * This method will be used to set the current state of the FilterMap
@@ -240,10 +224,6 @@ public class FilterMap implements Serializable {
         else return dispatcherMapping; 
     }
 
-    public void addDispatcherMapping(int dispatcherMapping) {
-        // Merge the supplied mapping with the current mapping
-        this.dispatcherMapping =  getDispatcherMapping() | dispatcherMapping;
-    }
 
     // --------------------------------------------------------- Public Methods
 
index 49e38a0..cbb126e 100644 (file)
@@ -184,11 +184,11 @@ public class WebXml {
     public Map<String,FilterDef> getFilters() { return filters; }
     
     // filter-mapping
-    private Map<String,FilterMap> filterMaps = new HashMap<String,FilterMap>();
+    private Set<FilterMap> filterMaps = new LinkedHashSet<FilterMap>();
     public void addFilterMapping(FilterMap filterMap) {
-        filterMaps.put(filterMap.getFilterName(),filterMap);
+        filterMaps.add(filterMap);
     }
-    public Map<String,FilterMap> getFilterMappings() { return filterMaps; }
+    public Set<FilterMap> getFilterMappings() { return filterMaps; }
     
     // listener
     // TODO: description (multiple with language) is ignored
@@ -470,7 +470,7 @@ public class WebXml {
         for (FilterDef filter : filters.values()) {
             context.addFilterDef(filter);
         }
-        for (FilterMap filterMap : filterMaps.values()) {
+        for (FilterMap filterMap : filterMaps) {
             context.addFilterMap(filterMap);
         }
         // jsp-property-group needs to be after servlet configuration
@@ -774,20 +774,9 @@ public class WebXml {
         errorPages.putAll(temp.getErrorPages());
 
         for (WebXml fragment : fragments) {
-            for (String filterName : fragment.getFilterMappings().keySet()) {
-                FilterMap filterMap =
-                    fragment.getFilterMappings().get(filterName);
+            for (FilterMap filterMap : fragment.getFilterMappings()) {
                 // Always additive
-                if (filterMaps.containsKey(filterName)) {
-                    FilterMap appFilterMap = filterMaps.get(filterName);
-                    
-                    appFilterMap.addDispatcherMapping(
-                            filterMap.getDispatcherMapping());
-                    appFilterMap.addServletNames(filterMap.getServletNames());
-                    appFilterMap.addUrlPatterns(filterMap.getURLPatterns());
-                } else {
-                    addFilterMapping(filterMap);
-                }
+                addFilterMapping(filterMap);
             }
         }