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);

Reply via email to