private static void mergeFilterChains()

in plugin-core/plugin/src/main/groovy/grails/plugin/springsecurity/SpringSecurityUtils.groovy [437:460]


	private static void mergeFilterChains(Map<Integer, Filter> orderedFilters, Filter filter, String beanName,
	                                      int order, List<GrailsSecurityFilterChain> filterChains) {

		Map<Filter, Integer> filterToPosition = new HashMap<Filter, Integer>()
		orderedFilters.each { Integer position, Filter f -> filterToPosition[f] = position }

		List<Map<String, ?>> chainMap = (List)(ReflectionUtils.getConfigProperty('filterChain.chainMap') ?: [])
		for (GrailsSecurityFilterChain filterChain in filterChains) {

			if (noFilterIsApplied(chainMap, filterChain.matcherPattern) || filterIsExcluded(chainMap, filterChain.matcherPattern, beanName)) {
				continue
			}

			List<Filter> filters = filterChain.filters.collect() // copy
			int index = 0
			while (index < filters.size() && filterToPosition[filters[index]] < order) {
				index++
			}
			filters.add index, filter

			filterChain.filters.clear()
			filterChain.filters.addAll filters
		}
	}