package detective.core.filter; import detective.core.services.DetectiveFactory; public interface FilterChainFactory { RunnerFilterChain<?> getChain(); public static class ConfigReader{ public static FilterChainFactory instanceFromConfigFile(String configName) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ String factoryClass = DetectiveFactory.INSTANCE.getConfig().getString(configName); if (factoryClass != null){ Class<?> clazz = Class.forName(factoryClass); Object instance = clazz.newInstance(); return FilterChainFactory.class.cast(instance); }else throw new RuntimeException(configName + " not found in config file."); } } }