public static void visitConfigs(CuratorFramework client, ConfigurationVisitor callback, ConfigurationType configType, Optional<String> configName) throws Exception { if (client.checkExists().forPath(configType.getZookeeperRoot()) != null) { if (configType.equals(GLOBAL)) { byte[] globalConfigData = client.getData().forPath(configType.getZookeeperRoot()); callback.visit(configType, "global", new String(globalConfigData)); } else if(configType.equals(PROFILER)) { byte[] profilerConfigData = client.getData().forPath(configType.getZookeeperRoot()); callback.visit(configType, "profiler", new String(profilerConfigData)); } else if (configType.equals(PARSER) || configType.equals(ENRICHMENT) || configType.equals(INDEXING)) { if (configName.isPresent()) { byte[] data = readConfigBytesFromZookeeper(configType, configName, client); callback.visit(configType, configName.get(), new String(data)); } else { List<String> children = client.getChildren().forPath(configType.getZookeeperRoot()); for (String child : children) { byte[] data = client.getData().forPath(configType.getZookeeperRoot() + "/" + child); callback.visit(configType, child, new String(data)); } } } } }