@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FilterInfo that = (FilterInfo) o; if (revision != that.revision) return false; if (creationDate != null ? !creationDate.equals(that.creationDate) : that.creationDate != null) return false; if (filter_code != null ? !filter_code.equals(that.filter_code) : that.filter_code != null) return false; if (filter_id != null ? !filter_id.equals(that.filter_id) : that.filter_id != null) return false; if (filter_name != null ? !filter_name.equals(that.filter_name) : that.filter_name != null) return false; if (filter_type != null ? !filter_type.equals(that.filter_type) : that.filter_type != null) return false; if (isActive != null ? !(isActive.get() == that.isActive.get()) : that.isActive != null) return false; if (isCanary != null ? !(isCanary.get() == that.isCanary.get()) : that.isCanary != null) return false; return true; }
@Override public int hashCode() { int result = filter_id != null ? filter_id.hashCode() : 0; result = 31 * result + (filter_name != null ? filter_name.hashCode() : 0); result = 31 * result + (filter_code != null ? filter_code.hashCode() : 0); result = 31 * result + (filter_type != null ? filter_type.hashCode() : 0); result = 31 * result + revision; result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0); result = 31 * result + (isActive != null ? isActive.hashCode() : 0); result = 31 * result + (isCanary != null ? isCanary.hashCode() : 0); return result; }
public PassportStampingFilter(PassportState stamp) { this.stamp = stamp; this.name = filterType().name()+"-"+stamp.name()+"-Filter"; }
/** * builds the unique filter_id key * @param application_name * @param filter_type * @param filter_name * @return key is application_name:filter_name:filter_type */ public static String buildFilterID(String application_name, FilterType filter_type, String filter_name) { return application_name + ":" + filter_name + ":" + filter_type.toString(); }
/** * Utility method for pulling data from Cassandra Row into an FilterInfo object * * @param row * @return */ public FilterInfo getFilterScriptFromCassandraRow(Row<String, String> row) { String filterName = null; int revision = -1; try { ColumnList<String> columns = row.getColumns(); filterName = columns.getColumnByName("filter_name").getStringValue(); String filter_id = columns.getColumnByName("filter_id").getStringValue(); FilterType filterType = FilterType.valueOf(columns.getColumnByName("filter_type").getStringValue()); String filterDisable = columns.getColumnByName("filter_disable") != null ? columns.getColumnByName("filter_disable").getStringValue() : "?"; String filterOrder = columns.getColumnByName("filter_order") != null ? columns.getColumnByName("filter_order").getStringValue() : "?"; revision = (int) columns.getColumnByName("revision").getLongValue(); boolean isActive = columns.getColumnByName("active").getBooleanValue(); boolean isCanary = columns.getColumnByName("canary").getBooleanValue(); Date creationDate = columns.getColumnByName("creation_date").getDateValue(); String filterCode = new String(columns.getColumnByName("filter_code").getByteArrayValue()); String application_name = columns.getColumnByName("application_name").getStringValue(); FilterInfo filterInfo = new FilterInfo(filter_id, revision, creationDate, isActive, isCanary, filterCode, filterType, filterName, filterDisable, filterOrder, application_name); return filterInfo; } catch (Exception e) { // unable to retrieve data for this row, could be missing the uri column (which shouldn't happen) logger.warn("Unable to retrieve data from row => uri : " + filterName + " revision: " + revision + " row: " + row, e); return null; } }
public ZuulFilter getFilterByNameAndType(String name, FilterType type) { if (name == null || type == null) return null; String nameAndType = type.toString() + ":" + name; return filtersByNameAndType.get(nameAndType); }
/** * builds the unique filter_id key * @param application_name * @param filter_type * @param filter_name * @return key is application_name:filter_name:filter_type */ public static String buildFilterID(String application_name, FilterType filter_type, String filter_name) { return application_name + ":" + filter_name + ":" + filter_type.toString(); }
/** * Returns a list of filters by the filterType specified * * @param filterType * @return a List<ZuulFilter> */ public List<ZuulFilter> getFiltersByType(FilterType filterType) { List<ZuulFilter> list = hashFiltersByType.get(filterType); if (list != null) return list; list = new ArrayList<ZuulFilter>(); Collection<ZuulFilter> filters = filterRegistry.getAllFilters(); for (Iterator<ZuulFilter> iterator = filters.iterator(); iterator.hasNext(); ) { ZuulFilter filter = iterator.next(); if (filter.filterType().equals(filterType)) { list.add(filter); } } // Sort by filterOrder. Collections.sort(list, new Comparator<ZuulFilter>() { @Override public int compare(ZuulFilter o1, ZuulFilter o2) { return o1.filterOrder() - o2.filterOrder(); } }); hashFiltersByType.putIfAbsent(filterType, list); return list; }
@Override public int hashCode() { int result = filter_id != null ? filter_id.hashCode() : 0; result = 31 * result + (filter_name != null ? filter_name.hashCode() : 0); result = 31 * result + (filter_code != null ? filter_code.hashCode() : 0); result = 31 * result + (filter_type != null ? filter_type.hashCode() : 0); result = 31 * result + revision; result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0); result = 31 * result + (isActive != null ? isActive.hashCode() : 0); result = 31 * result + (isCanary != null ? isCanary.hashCode() : 0); return result; }
public PassportStampingFilter(PassportState stamp) { this.stamp = stamp; this.name = filterType().name()+"-"+stamp.name()+"-Filter"; }
public ZuulFilter getFilterByNameAndType(String name, FilterType type) { if (name == null || type == null) return null; String nameAndType = type.toString() + ":" + name; return filtersByNameAndType.get(nameAndType); }
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FilterInfo that = (FilterInfo) o; if (revision != that.revision) return false; if (creationDate != null ? !creationDate.equals(that.creationDate) : that.creationDate != null) return false; if (filter_code != null ? !filter_code.equals(that.filter_code) : that.filter_code != null) return false; if (filter_id != null ? !filter_id.equals(that.filter_id) : that.filter_id != null) return false; if (filter_name != null ? !filter_name.equals(that.filter_name) : that.filter_name != null) return false; if (filter_type != null ? !filter_type.equals(that.filter_type) : that.filter_type != null) return false; if (isActive != null ? !(isActive.get() == that.isActive.get()) : that.isActive != null) return false; if (isCanary != null ? !(isCanary.get() == that.isCanary.get()) : that.isCanary != null) return false; return true; }
@Override public int hashCode() { int result = filter_id != null ? filter_id.hashCode() : 0; result = 31 * result + (filter_name != null ? filter_name.hashCode() : 0); result = 31 * result + (filter_code != null ? filter_code.hashCode() : 0); result = 31 * result + (filter_type != null ? filter_type.hashCode() : 0); result = 31 * result + revision; result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0); result = 31 * result + (isActive != null ? isActive.hashCode() : 0); result = 31 * result + (isCanary != null ? isCanary.hashCode() : 0); return result; }
public PassportStampingFilter(PassportState stamp) { this.stamp = stamp; this.name = filterType().name()+"-"+stamp.name()+"-Filter"; }
protected BaseFilter() { baseName = this.getClass().getSimpleName() + "." + filterType().toString(); concurrentCount = SpectatorUtils.newGauge("zuul.filter.concurrency.current", baseName, new AtomicInteger(0)); concurrencyRejections = SpectatorUtils.newCounter("zuul.filter.concurrency.rejected", baseName); filterDisabled = new CachedDynamicBooleanProperty(disablePropertyName(), false); filterConcurrencyLimit = new CachedDynamicIntProperty(maxConcurrencyPropertyName(), 4000); }
@Test public void testGetFiltersByType() throws Exception { assertTrue(loader.putFilter(file)); verify(registry).put(any(String.class), any(ZuulFilter.class)); final List<ZuulFilter> filters = new ArrayList<ZuulFilter>(); filters.add(filter); when(registry.getAllFilters()).thenReturn(filters); List<ZuulFilter> list = loader.getFiltersByType(FilterType.INBOUND); assertTrue(list != null); assertTrue(list.size() == 1); ZuulFilter filter = list.get(0); assertTrue(filter != null); assertTrue(filter.filterType().equals(FilterType.INBOUND)); }
protected void recordFilterError(final I inMesg, final ZuulFilter<I, O> filter, final Throwable t) { // Add a log statement for this exception. final String errorMsg = "Filter Exception: filter=" + filter.filterName() + ", request-info=" + inMesg.getInfoForLogging() + ", msg=" + String.valueOf(t.getMessage()); if (t instanceof ZuulException && !((ZuulException) t).shouldLogAsError()) { LOG.warn(errorMsg); } else { LOG.error(errorMsg, t); } // Store this filter error for possible future use. But we still continue with next filter in the chain. final SessionContext zuulCtx = inMesg.getContext(); zuulCtx.getFilterErrors().add(new FilterError(filter.filterName(), filter.filterType().toString(), t)); if (zuulCtx.debugRouting()) { Debug.addRoutingDebug(zuulCtx, "Running Filter failed " + filter.filterName() + " type:" + filter.filterType() + " order:" + filter.filterOrder() + " " + t.getMessage()); } }
/** * Returns a list of filters by the filterType specified * * @param filterType * @return a List<ZuulFilter> */ public List<ZuulFilter> getFiltersByType(FilterType filterType) { List<ZuulFilter> list = hashFiltersByType.get(filterType); if (list != null) return list; list = new ArrayList<ZuulFilter>(); Collection<ZuulFilter> filters = filterRegistry.getAllFilters(); for (Iterator<ZuulFilter> iterator = filters.iterator(); iterator.hasNext(); ) { ZuulFilter filter = iterator.next(); if (filter.filterType().equals(filterType)) { list.add(filter); } } // Sort by filterOrder. Collections.sort(list, new Comparator<ZuulFilter>() { @Override public int compare(ZuulFilter o1, ZuulFilter o2) { return o1.filterOrder() - o2.filterOrder(); } }); hashFiltersByType.putIfAbsent(filterType, list); return list; }
protected BaseFilter() { baseName = this.getClass().getSimpleName() + "." + filterType().toString(); concurrentCount = SpectatorUtils.newGauge("zuul.filter.concurrency.current", baseName, new AtomicInteger(0)); concurrencyRejections = SpectatorUtils.newCounter("zuul.filter.concurrency.rejected", baseName); filterDisabled = new CachedDynamicBooleanProperty(disablePropertyName(), false); filterConcurrencyLimit = new CachedDynamicIntProperty(maxConcurrencyPropertyName(), 4000); }
@Test public void testGetFiltersByType() throws Exception { assertTrue(loader.putFilter(file)); verify(registry).put(any(String.class), any(ZuulFilter.class)); final List<ZuulFilter> filters = new ArrayList<ZuulFilter>(); filters.add(filter); when(registry.getAllFilters()).thenReturn(filters); List<ZuulFilter> list = loader.getFiltersByType(FilterType.INBOUND); assertTrue(list != null); assertTrue(list.size() == 1); ZuulFilter filter = list.get(0); assertTrue(filter != null); assertTrue(filter.filterType().equals(FilterType.INBOUND)); }