/** * verifies compilation, instanciation and that it is a ZuulFilter * * @param sFilterCode * @return a FilterInfo object representing that code * @throws org.codehaus.groovy.control.CompilationFailedException * * @throws IllegalAccessException * @throws InstantiationException */ public FilterInfo verifyFilter(String sFilterCode) throws org.codehaus.groovy.control.CompilationFailedException, IllegalAccessException, InstantiationException { Class groovyClass = compileGroovy(sFilterCode); Object instance = instanciateClass(groovyClass); checkZuulFilterInstance(instance); BaseFilter filter = (BaseFilter) instance; String filter_id = FilterInfo.buildFilterID(ZuulApplicationInfo.getApplicationName(), filter.filterType(), groovyClass.getSimpleName()); return new FilterInfo(filter_id, sFilterCode, filter.filterType(), groovyClass.getSimpleName(), filter.disablePropertyName(), "" + filter.filterOrder(), ZuulApplicationInfo.getApplicationName()); }
/** * verifies compilation, instanciation and that it is a ZuulFilter * * @param sFilterCode * @return a FilterInfo object representing that code * @throws org.codehaus.groovy.control.CompilationFailedException * * @throws IllegalAccessException * @throws InstantiationException */ public FilterInfo verifyFilter(String sFilterCode) throws org.codehaus.groovy.control.CompilationFailedException, IllegalAccessException, InstantiationException { Class groovyClass = compileGroovy(sFilterCode); Object instance = instanciateClass(groovyClass); checkZuulFilterInstance(instance); BaseFilter filter = (BaseFilter) instance; String filter_id = FilterInfo.buildFilterID(ZuulApplicationInfo.getApplicationName(), filter.filterType(), groovyClass.getSimpleName()); return new FilterInfo(filter_id, sFilterCode, filter.filterType(), groovyClass.getSimpleName(), filter.disablePropertyName(), "" + filter.filterOrder(), ZuulApplicationInfo.getApplicationName()); }
@Test public void creationDateIsCopiedInConstructor() { Date date = new Date(); long originalCreationTime = date.getTime(); FilterInfo filterInfo = new FilterInfo("", 1, date, false, false, "", "", "", "", "", ""); date.setTime(0); assertThat(filterInfo.getCreationDate().getTime(), is(originalCreationTime)); } }
scriptsForEndpoint.add(new FilterInfo("name1:type", "code", "type", "name", "disable", "order", "app")); scriptsForEndpoint.add(new FilterInfo("name2:type", "code", "type", "name", "disable", "order", "app")); scriptsForEndpoint.add(new FilterInfo("name3:type", "code", "type", "name", "disable", "order", "app")); when(dao.getZuulFiltersForFilterId(anyString())).thenReturn(scriptsForEndpoint);
@Test public void creationDateIsCopiedInGetter() { FilterInfo filterInfo = new FilterInfo("", "", "", "", "", "", ""); long originalCreationTime = filterInfo.getCreationDate().getTime(); filterInfo.getCreationDate().setTime(0); assertThat(filterInfo.getCreationDate().getTime(), is(originalCreationTime)); }
@Test public void verifyFilterId() { FilterInfo filterInfo = new FilterInfo("", "", "", "", "", "", ""); long originalCreationTime = filterInfo.getCreationDate().getTime(); filterInfo.getCreationDate().setTime(0); assertThat(filterInfo.getCreationDate().getTime(), is(originalCreationTime)); }
/** * verifies compilation, instanciation and that it is a ZuulFilter * * @param sFilterCode * @return a FilterInfo object representing that code * @throws CompilationFailedException * * @throws IllegalAccessException * @throws InstantiationException */ public FilterInfo verifyFilter(String sFilterCode) throws CompilationFailedException, IllegalAccessException, InstantiationException { Class groovyClass = compileGroovy(sFilterCode); Object instance = instanciateClass(groovyClass); checkZuulFilterInstance(instance); ZuulFilter filter = (ZuulFilter) instance; return new FilterInfo(sFilterCode, groovyClass.getSimpleName(), filter); }
/** * verifies compilation, instanciation and that it is a ZuulFilter * * @param sFilterCode * @return a FilterInfo object representing that code * @throws org.codehaus.groovy.control.CompilationFailedException * * @throws IllegalAccessException * @throws InstantiationException */ public FilterInfo verifyFilter(String sFilterCode) throws org.codehaus.groovy.control.CompilationFailedException, IllegalAccessException, InstantiationException { Class groovyClass = compileGroovy(sFilterCode); Object instance = instanciateClass(groovyClass); checkZuulFilterInstance(instance); BaseFilter filter = (BaseFilter) instance; String filter_id = FilterInfo.buildFilterID(ZuulApplicationInfo.getApplicationName(), filter.filterType(), groovyClass.getSimpleName()); return new FilterInfo(filter_id, sFilterCode, filter.filterType(), groovyClass.getSimpleName(), filter.disablePropertyName(), "" + filter.filterOrder(), ZuulApplicationInfo.getApplicationName()); }
/** * 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(); String filterType = 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; } }
/** * 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; } }