@Override public Config rewrite(String name, Config config) { return rewrite(config, System.getenv()); }
protected Config rewrite(Config config, Map<String, String> env) { Map<String, String> envConfig = new HashMap<>(); for (Map.Entry<String, String> entry: env.entrySet()) { if (entry.getKey().startsWith(SAMZA_KEY_PREFIX)) { String key = renameKey(entry.getKey()); String value = entry.getValue(); if (config.containsKey(key)) { LOGGER.info(String.format("Overriding property from environment: %s=%s", key, value)); } else { LOGGER.info(String.format("Setting property from environment: %s=%s", key, value)); } envConfig.put(key, value); } } for (Map.Entry<String, String> entry: config.entrySet()) { String key = entry.getKey(); if (!envConfig.containsKey(key) && envConfig.containsKey(key.toLowerCase())) { throw new IllegalArgumentException(String.format( "Can't override property from environment with mixed case: %s", key)); } } return new MapConfig(Arrays.asList(config, envConfig)); }
@Before public void setup() { rewriter = new EnvironmentConfigRewriter(); }
protected Config rewrite(Config config, Map<String, String> env) { Map<String, String> envConfig = new HashMap<>(); for (Map.Entry<String, String> entry: env.entrySet()) { if (entry.getKey().startsWith(SAMZA_KEY_PREFIX)) { String key = renameKey(entry.getKey()); String value = entry.getValue(); if (config.containsKey(key)) { LOGGER.info(String.format("Overriding property from environment: %s=%s", key, value)); } else { LOGGER.info(String.format("Setting property from environment: %s=%s", key, value)); } envConfig.put(key, value); } } for (Map.Entry<String, String> entry: config.entrySet()) { String key = entry.getKey(); if (!envConfig.containsKey(key) && envConfig.containsKey(key.toLowerCase())) { throw new IllegalArgumentException(String.format( "Can't override property from environment with mixed case: %s", key)); } } return new MapConfig(Arrays.asList(config, envConfig)); }
protected Config rewrite(Config config, Map<String, String> env) { Map<String, String> envConfig = new HashMap<>(); for (Map.Entry<String, String> entry: env.entrySet()) { if (entry.getKey().startsWith(SAMZA_KEY_PREFIX)) { String key = renameKey(entry.getKey()); String value = entry.getValue(); if (config.containsKey(key)) { LOGGER.info(String.format("Overriding property from environment: %s=%s", key, value)); } else { LOGGER.info(String.format("Setting property from environment: %s=%s", key, value)); } envConfig.put(key, value); } } for (Map.Entry<String, String> entry: config.entrySet()) { String key = entry.getKey(); if (!envConfig.containsKey(key) && envConfig.containsKey(key.toLowerCase())) { throw new IllegalArgumentException(String.format( "Can't override property from environment with mixed case: %s", key)); } } return new MapConfig(Arrays.asList(config, envConfig)); }
@Override public Config rewrite(String name, Config config) { return rewrite(config, System.getenv()); }
protected Config rewrite(Config config, Map<String, String> env) { Map<String, String> envConfig = new HashMap<>(); for (Map.Entry<String, String> entry: env.entrySet()) { if (entry.getKey().startsWith(SAMZA_KEY_PREFIX)) { String key = renameKey(entry.getKey()); String value = entry.getValue(); if (config.containsKey(key)) { LOGGER.info(String.format("Overriding property from environment: %s=%s", key, value)); } else { LOGGER.info(String.format("Setting property from environment: %s=%s", key, value)); } envConfig.put(key, value); } } for (Map.Entry<String, String> entry: config.entrySet()) { String key = entry.getKey(); if (!envConfig.containsKey(key) && envConfig.containsKey(key.toLowerCase())) { throw new IllegalArgumentException(String.format( "Can't override property from environment with mixed case: %s", key)); } } return new MapConfig(Arrays.asList(config, envConfig)); }
@Override public Config rewrite(String name, Config config) { return rewrite(config, System.getenv()); }
protected Config rewrite(Config config, Map<String, String> env) { Map<String, String> envConfig = new HashMap<>(); for (Map.Entry<String, String> entry: env.entrySet()) { if (entry.getKey().startsWith(SAMZA_KEY_PREFIX)) { String key = renameKey(entry.getKey()); String value = entry.getValue(); if (config.containsKey(key)) { LOGGER.info(String.format("Overriding property from environment: %s=%s", key, value)); } else { LOGGER.info(String.format("Setting property from environment: %s=%s", key, value)); } envConfig.put(key, value); } } for (Map.Entry<String, String> entry: config.entrySet()) { String key = entry.getKey(); if (!envConfig.containsKey(key) && envConfig.containsKey(key.toLowerCase())) { throw new IllegalArgumentException(String.format( "Can't override property from environment with mixed case: %s", key)); } } return new MapConfig(Arrays.asList(config, envConfig)); }
@Override public Config rewrite(String name, Config config) { return rewrite(config, System.getenv()); }
@Test(expected = IllegalArgumentException.class) public void testRewriteKeyInvalidKeyNoSubkey() { EnvironmentConfigRewriter.renameKey("SAMZA"); }
@Override public Config rewrite(String name, Config config) { return rewrite(config, System.getenv()); }
@Test(expected = IllegalArgumentException.class) public void testRewriteKeyInvalidKeyPrefix() { EnvironmentConfigRewriter.renameKey("SAMZA"); }
@Test(expected = IllegalArgumentException.class) public void testRewriteFailsOnDowncaseMatch() throws Exception { Map<String, String> config = createMap("foo.Bar", "a"); Map<String, String> env = createMap("SAMZA_FOO_BAR", "b"); rewriter.rewrite(new MapConfig(config), env); }
@Test public void testRewriteOverridesConfig() throws Exception { Map<String, String> config = createMap("foo.bar", "a"); Map<String, String> env = createMap("SAMZA_FOO_BAR", "b"); Config rewritten = rewriter.rewrite(new MapConfig(config), env); assertEquals("b", rewritten.get("foo.bar")); }