Author: markt Date: Wed Oct 28 12:27:42 2009 New Revision: 830514 URL: http://svn.apache.org/viewvc?rev=830514&view=rev Log: Add FilterMaps to the web.xml file merge process
Modified: tomcat/trunk/java/org/apache/catalina/deploy/FilterMap.java tomcat/trunk/java/org/apache/catalina/startup/WebXml.java Modified: tomcat/trunk/java/org/apache/catalina/deploy/FilterMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/FilterMap.java?rev=830514&r1=830513&r2=830514&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/deploy/FilterMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/deploy/FilterMap.java Wed Oct 28 12:27:42 2009 @@ -37,7 +37,8 @@ public class FilterMap implements Serializable { - + private static final long serialVersionUID = 1L; + // ------------------------------------------------------------- Properties @@ -99,6 +100,15 @@ } } + 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 @@ -140,6 +150,14 @@ } } + 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 @@ -217,11 +235,15 @@ public int getDispatcherMapping() { // per the SRV.6.2.5 absence of any dispatcher elements is - // equivelant to a REQUEST value + // equivalent to a REQUEST value if (dispatcherMapping == NOT_SET) return REQUEST; else return dispatcherMapping; } + public void addDispatcherMapping(int dispatcherMapping) { + // Merge the supplied mapping with the current mapping + this.dispatcherMapping = getDispatcherMapping() | dispatcherMapping; + } // --------------------------------------------------------- Public Methods Modified: tomcat/trunk/java/org/apache/catalina/startup/WebXml.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/WebXml.java?rev=830514&r1=830513&r2=830514&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/WebXml.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/WebXml.java Wed Oct 28 12:27:42 2009 @@ -21,6 +21,7 @@ import java.net.URL; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -170,7 +171,8 @@ // TODO: Should support multiple display-name elements with language // TODO: Should support multiple icon elements // TODO: Description for init-param is ignored - private Map<String,FilterDef> filters = new HashMap<String,FilterDef>(); + private Map<String,FilterDef> filters = + new LinkedHashMap<String,FilterDef>(); public void addFilter(FilterDef filter) { if (filters.containsKey(filter.getFilterName())) { // Filter names must be unique within a web(-fragment).xml @@ -182,11 +184,11 @@ public Map<String,FilterDef> getFilters() { return filters; } // filter-mapping - private Set<FilterMap> filterMaps = new HashSet<FilterMap>(); + private Map<String,FilterMap> filterMaps = new HashMap<String,FilterMap>(); public void addFilterMapping(FilterMap filterMap) { - filterMaps.add(filterMap); + filterMaps.put(filterMap.getFilterName(),filterMap); } - public Set<FilterMap> getFilterMappings() { return filterMaps; } + public Map<String,FilterMap> getFilterMappings() { return filterMaps; } // listener // TODO: description (multiple with language) is ignored @@ -468,7 +470,7 @@ for (FilterDef filter : filters.values()) { context.addFilterDef(filter); } - for (FilterMap filterMap : filterMaps) { + for (FilterMap filterMap : filterMaps.values()) { context.addFilterMap(filterMap); } // jsp-property-group needs to be after servlet configuration @@ -771,6 +773,25 @@ } errorPages.putAll(temp.getErrorPages()); + for (WebXml fragment : fragments) { + for (String filterName : fragment.getFilterMappings().keySet()) { + FilterMap filterMap = + fragment.getFilterMappings().get(filterName); + // 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); + } + } + } + + // TODO SERVLET3 - Merge remaining elements for (WebXml fragment : fragments) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org