Repository: incubator-edgent Updated Branches: refs/heads/master 1e83aa850 -> 0de12e21b
[Edgent-363] clarify / disallow null&empty topology name Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/1626f7cb Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/1626f7cb Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/1626f7cb Branch: refs/heads/master Commit: 1626f7cba4b3dc89c15d07175db9b47fa1dda5f9 Parents: a6090c8 Author: Dale LaBossiere <dlab...@us.ibm.com> Authored: Thu Jan 5 17:32:20 2017 -0500 Committer: Dale LaBossiere <dlab...@us.ibm.com> Committed: Thu Jan 5 17:32:20 2017 -0500 ---------------------------------------------------------------------- .../apache/edgent/topology/TopologyProvider.java | 1 + .../topology/services/ApplicationService.java | 2 +- .../apache/edgent/test/topology/TopologyTest.java | 10 ++++++++++ .../edgent/providers/direct/DirectProvider.java | 1 + .../providers/direct/appservice/AppServiceTest.java | 16 ++++++++++++++++ .../edgent/runtime/appservice/AppService.java | 3 +++ .../topology/spi/AbstractTopologyProvider.java | 5 +++++ 7 files changed, 37 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/api/topology/src/main/java/org/apache/edgent/topology/TopologyProvider.java ---------------------------------------------------------------------- diff --git a/api/topology/src/main/java/org/apache/edgent/topology/TopologyProvider.java b/api/topology/src/main/java/org/apache/edgent/topology/TopologyProvider.java index 97d3971..5040b6e 100644 --- a/api/topology/src/main/java/org/apache/edgent/topology/TopologyProvider.java +++ b/api/topology/src/main/java/org/apache/edgent/topology/TopologyProvider.java @@ -29,6 +29,7 @@ public interface TopologyProvider { * * @param name name for topology * @return A new topology. + * @throws IllegalArgumentException for null or empty name */ Topology newTopology(String name); http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/api/topology/src/main/java/org/apache/edgent/topology/services/ApplicationService.java ---------------------------------------------------------------------- diff --git a/api/topology/src/main/java/org/apache/edgent/topology/services/ApplicationService.java b/api/topology/src/main/java/org/apache/edgent/topology/services/ApplicationService.java index 6a710e5..b30497b 100644 --- a/api/topology/src/main/java/org/apache/edgent/topology/services/ApplicationService.java +++ b/api/topology/src/main/java/org/apache/edgent/topology/services/ApplicationService.java @@ -86,7 +86,7 @@ public interface ApplicationService { * be the classpath of this service. * * @param jarURL URL of Jar containing new applications. - * @param jsonConfig Configuration information, currently unused. + * @param jsonConfig JSON configuration serialized as a String (currently unused). * @throws Exception if failure */ void registerJar(String jarURL, String jsonConfig) throws Exception; http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/api/topology/src/test/java/org/apache/edgent/test/topology/TopologyTest.java ---------------------------------------------------------------------- diff --git a/api/topology/src/test/java/org/apache/edgent/test/topology/TopologyTest.java b/api/topology/src/test/java/org/apache/edgent/test/topology/TopologyTest.java index 3fa3804..cc1c059 100644 --- a/api/topology/src/test/java/org/apache/edgent/test/topology/TopologyTest.java +++ b/api/topology/src/test/java/org/apache/edgent/test/topology/TopologyTest.java @@ -51,6 +51,16 @@ public abstract class TopologyTest extends TopologyAbstractTest { assertEquals("T123", t.getName()); assertSame(t, t.topology()); } + + @Test(expected=IllegalArgumentException.class) + public void testNullName() { + newTopology(null); + } + + @Test(expected=IllegalArgumentException.class) + public void testEmptyName() { + newTopology(""); + } @Test public void testDefaultName() { http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/providers/direct/src/main/java/org/apache/edgent/providers/direct/DirectProvider.java ---------------------------------------------------------------------- diff --git a/providers/direct/src/main/java/org/apache/edgent/providers/direct/DirectProvider.java b/providers/direct/src/main/java/org/apache/edgent/providers/direct/DirectProvider.java index f8babbf..7f6cc05 100644 --- a/providers/direct/src/main/java/org/apache/edgent/providers/direct/DirectProvider.java +++ b/providers/direct/src/main/java/org/apache/edgent/providers/direct/DirectProvider.java @@ -74,6 +74,7 @@ public class DirectProvider extends AbstractTopologyProvider<DirectTopology> @Override public DirectTopology newTopology(String name) { + checkName(name); return new DirectTopology(name, services); } http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/providers/direct/src/test/java/org/apache/edgent/test/providers/direct/appservice/AppServiceTest.java ---------------------------------------------------------------------- diff --git a/providers/direct/src/test/java/org/apache/edgent/test/providers/direct/appservice/AppServiceTest.java b/providers/direct/src/test/java/org/apache/edgent/test/providers/direct/appservice/AppServiceTest.java index 81b3ca8..8c88bef 100644 --- a/providers/direct/src/test/java/org/apache/edgent/test/providers/direct/appservice/AppServiceTest.java +++ b/providers/direct/src/test/java/org/apache/edgent/test/providers/direct/appservice/AppServiceTest.java @@ -50,6 +50,22 @@ public class AppServiceTest { assertTrue(appService.getApplicationNames().contains("SecondApp")); } + @Test(expected=IllegalArgumentException.class) + public void testRegisterNullTopologyName() { + DirectProvider direct = new DirectProvider(); + ApplicationService appService = AppService.createAndRegister(direct, direct); + + appService.registerTopology(null, (t,c) -> t.strings("a")); + } + + @Test(expected=IllegalArgumentException.class) + public void testRegisterEmptyTopologyName() { + DirectProvider direct = new DirectProvider(); + ApplicationService appService = AppService.createAndRegister(direct, direct); + + appService.registerTopology("", (t,c) -> t.strings("a")); + } + @Test public void testRegisterJar() throws Exception { DirectProvider direct = new DirectProvider(); http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/runtime/appservice/src/main/java/org/apache/edgent/runtime/appservice/AppService.java ---------------------------------------------------------------------- diff --git a/runtime/appservice/src/main/java/org/apache/edgent/runtime/appservice/AppService.java b/runtime/appservice/src/main/java/org/apache/edgent/runtime/appservice/AppService.java index af25c7b..e1c91e6 100644 --- a/runtime/appservice/src/main/java/org/apache/edgent/runtime/appservice/AppService.java +++ b/runtime/appservice/src/main/java/org/apache/edgent/runtime/appservice/AppService.java @@ -107,6 +107,9 @@ public class AppService implements ApplicationService { @Override public void registerTopology(String applicationName, BiConsumer<Topology, JsonObject> builder) { + if (applicationName == null || applicationName.isEmpty()) { + throw new IllegalArgumentException(); + } logger.trace("Register application name: {}", applicationName); applications.put(applicationName, builder); } http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/1626f7cb/spi/topology/src/main/java/org/apache/edgent/topology/spi/AbstractTopologyProvider.java ---------------------------------------------------------------------- diff --git a/spi/topology/src/main/java/org/apache/edgent/topology/spi/AbstractTopologyProvider.java b/spi/topology/src/main/java/org/apache/edgent/topology/spi/AbstractTopologyProvider.java index a085ec8..1f2823d 100644 --- a/spi/topology/src/main/java/org/apache/edgent/topology/spi/AbstractTopologyProvider.java +++ b/spi/topology/src/main/java/org/apache/edgent/topology/spi/AbstractTopologyProvider.java @@ -24,6 +24,11 @@ import org.apache.edgent.topology.Topology; import org.apache.edgent.topology.TopologyProvider; public abstract class AbstractTopologyProvider<T extends Topology> implements TopologyProvider { + + protected void checkName(String name) { + if (name == null || name.isEmpty()) + throw new IllegalArgumentException(); + } @Override public abstract T newTopology(String name);