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
}
}