Repository: samza Updated Branches: refs/heads/master 7bb206151 -> b706ecebe
SAMZA-1806: Allow `task.broadcast.inputs` to be set to empty string This fix addresses the issue that getBroadcastSystemStreamPartitions in TaskConfigJava throws an IllegalArgumentException exception when `task.broadcast.inputs` is set to an empty string. Author: Abhishek Shivanna <abhishek...@gmail.com> Reviewers: Bharath K <bkumarasubraman...@linkedin.com> Closes #604 from abhishekshivanna/master Project: http://git-wip-us.apache.org/repos/asf/samza/repo Commit: http://git-wip-us.apache.org/repos/asf/samza/commit/b706eceb Tree: http://git-wip-us.apache.org/repos/asf/samza/tree/b706eceb Diff: http://git-wip-us.apache.org/repos/asf/samza/diff/b706eceb Branch: refs/heads/master Commit: b706ecebe6dba21fee6b446abfb7cd002bde17bc Parents: 7bb2061 Author: Abhishek Shivanna <abhishek...@gmail.com> Authored: Fri Aug 10 15:55:36 2018 -0700 Committer: Jagadish <jvenkatra...@linkedin.com> Committed: Fri Aug 10 15:55:36 2018 -0700 ---------------------------------------------------------------------- .../java/org/apache/samza/config/Config.java | 3 ++ .../org/apache/samza/config/TestConfig.java | 41 ++++++++++++++++++++ 2 files changed, 44 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/samza/blob/b706eceb/samza-api/src/main/java/org/apache/samza/config/Config.java ---------------------------------------------------------------------- diff --git a/samza-api/src/main/java/org/apache/samza/config/Config.java b/samza-api/src/main/java/org/apache/samza/config/Config.java index 7abe557..d4164c6 100644 --- a/samza-api/src/main/java/org/apache/samza/config/Config.java +++ b/samza-api/src/main/java/org/apache/samza/config/Config.java @@ -154,6 +154,9 @@ public abstract class Config implements Map<String, String> { return defaultValue; String value = get(k); + if (value.trim().isEmpty()) { + return defaultValue; + } String[] pieces = value.split("\\s*,\\s*"); return Arrays.asList(pieces); } http://git-wip-us.apache.org/repos/asf/samza/blob/b706eceb/samza-api/src/test/java/org/apache/samza/config/TestConfig.java ---------------------------------------------------------------------- diff --git a/samza-api/src/test/java/org/apache/samza/config/TestConfig.java b/samza-api/src/test/java/org/apache/samza/config/TestConfig.java index 7d9d56c..c3ca145 100644 --- a/samza-api/src/test/java/org/apache/samza/config/TestConfig.java +++ b/samza-api/src/test/java/org/apache/samza/config/TestConfig.java @@ -19,6 +19,8 @@ package org.apache.samza.config; +import java.util.Collections; +import java.util.List; import org.junit.Test; import java.util.HashMap; @@ -85,4 +87,43 @@ public class TestConfig { assertEquals(Config.SENSITIVE_MASK, sanitized.get("sensitive.key3")); assertEquals(Config.SENSITIVE_MASK, sanitized.get("sensitive.key4")); } + + @Test + public void testGetList() { + Map<String, String> m = new HashMap<String, String>() { + { + put("key1", " "); + put("key2", ""); + put("key3", " value1 "); + put("key4", "value1,value2"); + put("key5", "value1, value2"); + put("key6", "value1 , value2"); + } + }; + + Config config = new MapConfig(m); + List<String> list = config.getList("key1", Collections.<String>emptyList()); + assertEquals(0, list.size()); + + list = config.getList("key2", Collections.<String>emptyList()); + assertEquals(0, list.size()); + + list = config.getList("key3"); + assertEquals(" value1 ", list.get(0)); + + list = config.getList("key4"); + assertEquals("value1", list.get(0)); + assertEquals("value2", list.get(1)); + + list = config.getList("key5"); + assertEquals("value1", list.get(0)); + assertEquals("value2", list.get(1)); + + list = config.getList("key6"); + assertEquals("value1", list.get(0)); + assertEquals("value2", list.get(1)); + + list = config.getList("UndefinedKey", Collections.<String>emptyList()); + assertEquals(0, list.size()); + } }