public static RequestFilter newInstance(RequestFilter... filters) { return newInstance(Arrays.asList(filters)); }
public static ResponseFilter newInstance(ResponseFilter... filters) { return newInstance(Arrays.asList(filters)); }
public static ResponseFilter newInstance(List<? extends ResponseFilter> filters) { if (filters.size() == 0) { return EmptyResponseFilter.INSTANCE; } if (filters.size() == 1) { return filters.get(0); } return new ResponseFilterChain(filters); } }
@SuppressWarnings("unchecked") private static Object toJDiscChain(Chain<FilterWrapper> chain) { if (chain.components().isEmpty()) throw new IllegalArgumentException("Empty filter chain: " + chain.getId()); checkFilterTypesCompatible(chain); List<?> jdiscFilters = chain.components().stream() .map(filterWrapper -> filterWrapper.filter) .collect(toList()); List<?> wrappedFilters = wrapSecurityFilters(jdiscFilters); Object head = wrappedFilters.get(0); if (wrappedFilters.size() == 1) return head; else if (head instanceof RequestFilter) return RequestFilterChain.newInstance((List<RequestFilter>) wrappedFilters); else if (head instanceof ResponseFilter) return ResponseFilterChain.newInstance((List<ResponseFilter>) wrappedFilters); throw new IllegalStateException(); }
@Override public void filter(HttpRequest request, ResponseHandler responseHandler) { ResponseHandlerGuard guard = new ResponseHandlerGuard(responseHandler); for (int i = 0, len = filters.size(); i < len && !guard.isDone(); ++i) { filters.get(i).filter(request, guard); } }
public static RequestFilter newInstance(List<? extends RequestFilter> filters) { if (filters.size() == 0) { return EmptyRequestFilter.INSTANCE; } if (filters.size() == 1) { return filters.get(0); } return new RequestFilterChain(filters); } }