@Test public void testPutFiltersForClasses() throws Exception { loader.putFiltersForClasses(new String[]{TestZuulFilter.class.getName()}); verify(registry).put(any(String.class), any(BaseFilter.class)); }
/** * Given source and name will compile and store the filter if it detects that the filter code has changed or * the filter doesn't exist. Otherwise it will return an instance of the requested ZuulFilter * * @param sCode source code * @param sName name of the filter * @return the IZuulFilter * @throws IllegalAccessException * @throws InstantiationException */ public ZuulFilter getFilter(String sCode, String sName) throws Exception { if (filterCheck.get(sName) == null) { filterCheck.putIfAbsent(sName, sName); if (!sCode.equals(filterClassCode.get(sName))) { LOG.info("reloading code " + sName); filterRegistry.remove(sName); } } ZuulFilter filter = filterRegistry.get(sName); if (filter == null) { Class clazz = compiler.compile(sCode, sName); if (!Modifier.isAbstract(clazz.getModifiers())) { filter = filterFactory.newInstance(clazz); } } return filter; }
@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)); }
private void initJavaFilters() { final FilterRegistry r = FilterRegistry.instance(); r.put("javaPreFilter", new ZuulFilter() { @Override public int filterOrder() { r.put("javaRoutingFilter", new ZuulFilter() { @Override public int filterOrder() { r.put("javaPostFilter", new ZuulFilter() { @Override public int filterOrder() {
/** * Removes a {@link Interceptor} file. * * @param interceptor {@link InterceptorFileDTO} */ public void removeFileInterceptor(InterceptorFileDTO interceptor) { File interceptorFile = new File(interceptor.getPath()); if (interceptorFile.exists() && interceptorFile.isFile()) { String filter = interceptorFile.getAbsolutePath() + interceptorFile.getName(); if (interceptorFile.delete()) { log.info("File - Removing File Filter: {}", interceptorFile.getAbsolutePath()); FilterRegistry.instance().remove(filter); clearLoaderCache(); log.debug("FilterRegistry - Removing File Filter {}", filter); } else { log.warn("Not possible to remove File: {} with Interceptor ID: {}", interceptorFile.getAbsolutePath(), interceptor.getId()); } } }
/** * 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; }
@PreDestroy public void contextDestroyed() { log.info("Stopping filter initializer"); for (Map.Entry<String, ZuulFilter> entry : this.filters.entrySet()) { filterRegistry.remove(entry.getKey()); } clearLoaderCache(); TracerFactory.initialize(null); CounterFactory.initialize(null); }
/** * @return the total number of Zuul filters */ public int filterInstanceMapSize() { return filterRegistry.size(); }
public FilterLoader() { this(new FilterRegistry(), new GroovyCompiler(), new DefaultFilterFactory()); }
@Bean public ZuulFilterInitializer zuulFilterInitializer( CounterFactory counterFactory, TracerFactory tracerFactory) { FilterLoader filterLoader = FilterLoader.getInstance(); FilterRegistry filterRegistry = FilterRegistry.instance(); return new ZuulFilterInitializer(this.filters, counterFactory, tracerFactory, filterLoader, filterRegistry); }
/** * 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; }
/** * @return the total number of Zuul filters */ public int filterInstanceMapSize() { return filterRegistry.size(); }
public FilterLoader() { this(new FilterRegistry(), new GroovyCompiler(), new DefaultFilterFactory()); }
@ConditionalOnEnabledEndpoint @Bean public FiltersEndpoint filtersEndpoint() { FilterRegistry filterRegistry = FilterRegistry.instance(); return new FiltersEndpoint(filterRegistry); }
@Test public void testPutFiltersForClassesException() throws Exception { Exception caught = null; try { loader.putFiltersForClasses(new String[]{"asdf"}); } catch (ClassNotFoundException e) { caught = e; } assertTrue(caught != null); verify(registry, times(0)).put(any(String.class), any(BaseFilter.class)); }
@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)); }
/** * 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; }
/** * @return the total number of Zuul filters */ public int filterInstanceMapSize() { return filterRegistry.size(); }
public FilterLoader() { this(new FilterRegistry(), new GroovyCompiler(), new DefaultFilterFactory()); }