@Override public boolean waitForQuiescence(long quietPeriod, long timeout, TimeUnit timeUnit) { return activityMonitor.waitForQuiescence(quietPeriod, timeout, timeUnit); }
@Deprecated /** * @deprecated use {@link #getUrlPattern()} */ public Pattern getPattern() { return getUrlPattern(); }
@Deprecated /** * @deprecated use {@link #getHttpMethodPattern()} */ public Pattern getMethod() { return getHttpMethodPattern(); } }
@Override public Map<String, String> getRewriteRules() { ImmutableMap.Builder<String, String> builder = ImmutableMap.builder(); for (RewriteRule rewriteRule : rewriteRules) { builder.put(rewriteRule.getPattern().pattern(), rewriteRule.getReplace()); } return builder.build(); }
@Override public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) { Whitelist currentWhitelist = whitelist.get(); return new WhitelistFilter(originalRequest, ctx, isWhitelistEnabled(), currentWhitelist.getStatusCode(), currentWhitelist.getPatterns()); } });
@Override public void blacklistRequests(String pattern, int responseCode, String method) { blacklistEntries.add(new BlacklistEntry(pattern, responseCode, method)); }
/** * @deprecated use {@link #getStatusCode()} */ @Deprecated public int getResponseCode() { return getStatusCode(); }
@Override public void rewriteUrl(String pattern, String replace) { rewriteRules.add(new RewriteRule(pattern, replace)); }
@Override public void whitelistRequests(Collection<String> urlPatterns, int statusCode) { this.whitelist.set(new Whitelist(urlPatterns, statusCode)); }
/** * Returns true if the specified URL matches a whitelisted URL regular expression. If the whitelist is disabled, this * method always returns false. * * @param url URL to match against the whitelist * @return true if the whitelist is enabled and the URL matched an entry in the whitelist, otherwise false */ public boolean matches(String url) { if (!enabled) { return false; } for (Pattern pattern : getPatterns()) { Matcher matcher = pattern.matcher(url); if (matcher.matches()) { return true; } } return false; } }
@Deprecated /** * @deprecated use {@link #getStatusCode()} */ public int getResponseCode() { return getStatusCode(); }
@Override public boolean isWhitelistEnabled() { return whitelist.get().isEnabled(); }
@Override public HttpObject proxyToClientResponse(HttpObject httpObject) { if (httpObject instanceof LastHttpContent) { activityMonitor.requestFinished(); } return super.proxyToClientResponse(httpObject); } }
@Override public HttpResponse clientToProxyRequest(HttpObject httpObject) { if (httpObject instanceof HttpRequest) { activityMonitor.requestStarted(); } return super.clientToProxyRequest(httpObject); } }
@Override public void removeRewriteRule(String urlPattern) { // normally removing elements from the list we are iterating over would not be possible, but since this is a CopyOnWriteArrayList // the iterator it returns is a "snapshot" of the list that will not be affected by removal (and that does not support removal, either) for (RewriteRule rewriteRule : rewriteRules) { if (rewriteRule.getPattern().pattern().equals(urlPattern)) { rewriteRules.remove(rewriteRule); } } }
@Override public void blacklistRequests(String pattern, int responseCode) { blacklistEntries.add(new BlacklistEntry(pattern, responseCode)); }
@Override public int getWhitelistStatusCode() { return whitelist.get().getStatusCode(); }
@Override public void rewriteUrls(Map<String, String> rewriteRules) { List<RewriteRule> newRules = new ArrayList<>(rewriteRules.size()); for (Map.Entry<String, String> rewriteRule : rewriteRules.entrySet()) { RewriteRule newRule = new RewriteRule(rewriteRule.getKey(), rewriteRule.getValue()); newRules.add(newRule); } this.rewriteRules = new CopyOnWriteArrayList<>(newRules); }
@Override public void enableEmptyWhitelist(int statusCode) { whitelist.set(new Whitelist(statusCode)); }
@Override public Collection<String> getWhitelistUrls() { ImmutableList.Builder<String> builder = ImmutableList.builder(); for (Pattern pattern : whitelist.get().getPatterns()) { builder.add(pattern.pattern()); } return builder.build(); }