Polish FilterComparator

Extracts STEP incrementing into a separate helper class
This commit is contained in:
Johnny Lim 2018-07-27 10:51:35 +09:00 committed by Josh Cummings
parent d4576a2502
commit f164f2f869
No known key found for this signature in database
GPG Key ID: 49EF60DD7FF83443

View File

@ -56,83 +56,53 @@ import org.springframework.web.filter.CorsFilter;
@SuppressWarnings("serial") @SuppressWarnings("serial")
final class FilterComparator implements Comparator<Filter>, Serializable { final class FilterComparator implements Comparator<Filter>, Serializable {
private static final int STEP = 100; private static final int INITIAL_ORDER = 100;
private Map<String, Integer> filterToOrder = new HashMap<>(); private static final int ORDER_STEP = 100;
private final Map<String, Integer> filterToOrder = new HashMap<>();
FilterComparator() { FilterComparator() {
int order = 100; Step order = new Step(INITIAL_ORDER, ORDER_STEP);
put(ChannelProcessingFilter.class, order); put(ChannelProcessingFilter.class, order.next());
order += STEP; put(ConcurrentSessionFilter.class, order.next());
put(ConcurrentSessionFilter.class, order); put(WebAsyncManagerIntegrationFilter.class, order.next());
order += STEP; put(SecurityContextPersistenceFilter.class, order.next());
put(WebAsyncManagerIntegrationFilter.class, order); put(HeaderWriterFilter.class, order.next());
order += STEP; put(CorsFilter.class, order.next());
put(SecurityContextPersistenceFilter.class, order); put(CsrfFilter.class, order.next());
order += STEP; put(LogoutFilter.class, order.next());
put(HeaderWriterFilter.class, order);
order += STEP;
put(CorsFilter.class, order);
order += STEP;
put(CsrfFilter.class, order);
order += STEP;
put(LogoutFilter.class, order);
order += STEP;
filterToOrder.put( filterToOrder.put(
"org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter", "org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter",
order); order.next());
order += STEP; put(X509AuthenticationFilter.class, order.next());
put(X509AuthenticationFilter.class, order); put(AbstractPreAuthenticatedProcessingFilter.class, order.next());
order += STEP;
put(AbstractPreAuthenticatedProcessingFilter.class, order);
order += STEP;
filterToOrder.put("org.springframework.security.cas.web.CasAuthenticationFilter", filterToOrder.put("org.springframework.security.cas.web.CasAuthenticationFilter",
order); order.next());
order += STEP;
filterToOrder.put( filterToOrder.put(
"org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter", "org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter",
order); order.next());
order += STEP; put(UsernamePasswordAuthenticationFilter.class, order.next());
put(UsernamePasswordAuthenticationFilter.class, order); put(ConcurrentSessionFilter.class, order.next());
order += STEP;
put(ConcurrentSessionFilter.class, order);
order += STEP;
filterToOrder.put( filterToOrder.put(
"org.springframework.security.openid.OpenIDAuthenticationFilter", order); "org.springframework.security.openid.OpenIDAuthenticationFilter", order.next());
order += STEP; put(DefaultLoginPageGeneratingFilter.class, order.next());
put(DefaultLoginPageGeneratingFilter.class, order); put(DefaultLogoutPageGeneratingFilter.class, order.next());
order += STEP; put(ConcurrentSessionFilter.class, order.next());
put(DefaultLogoutPageGeneratingFilter.class, order); put(DigestAuthenticationFilter.class, order.next());
order += STEP;
put(ConcurrentSessionFilter.class, order);
order += STEP;
put(DigestAuthenticationFilter.class, order);
order += STEP;
filterToOrder.put( filterToOrder.put(
"org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter", order); "org.springframework.security.oauth2.server.resource.web.BearerTokenAuthenticationFilter", order.next());
order += STEP; put(BasicAuthenticationFilter.class, order.next());
put(BasicAuthenticationFilter.class, order); put(RequestCacheAwareFilter.class, order.next());
order += STEP; put(SecurityContextHolderAwareRequestFilter.class, order.next());
put(RequestCacheAwareFilter.class, order); put(JaasApiIntegrationFilter.class, order.next());
order += STEP; put(RememberMeAuthenticationFilter.class, order.next());
put(SecurityContextHolderAwareRequestFilter.class, order); put(AnonymousAuthenticationFilter.class, order.next());
order += STEP;
put(JaasApiIntegrationFilter.class, order);
order += STEP;
put(RememberMeAuthenticationFilter.class, order);
order += STEP;
put(AnonymousAuthenticationFilter.class, order);
order += STEP;
filterToOrder.put( filterToOrder.put(
"org.springframework.security.oauth2.client.web.OAuth2AuthorizationCodeGrantFilter", "org.springframework.security.oauth2.client.web.OAuth2AuthorizationCodeGrantFilter",
order); order.next());
order += STEP; put(SessionManagementFilter.class, order.next());
put(SessionManagementFilter.class, order); put(ExceptionTranslationFilter.class, order.next());
order += STEP; put(FilterSecurityInterceptor.class, order.next());
put(ExceptionTranslationFilter.class, order); put(SwitchUserFilter.class, order.next());
order += STEP;
put(FilterSecurityInterceptor.class, order);
order += STEP;
put(SwitchUserFilter.class, order);
} }
public int compare(Filter lhs, Filter rhs) { public int compare(Filter lhs, Filter rhs) {
@ -226,4 +196,23 @@ final class FilterComparator implements Comparator<Filter>, Serializable {
} }
return null; return null;
} }
private static class Step {
private int value;
private final int stepSize;
Step(int initialValue, int stepSize) {
this.value = initialValue;
this.stepSize = stepSize;
}
int next() {
int value = this.value;
this.value += this.stepSize;
return value;
}
}
} }