AMBARI-2747 - NPE in GSInstaller provider

Project: http://git-wip-us.apache.org/repos/asf/incubator-ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ambari/commit/978f4cd8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ambari/tree/978f4cd8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ambari/diff/978f4cd8

Branch: refs/heads/trunk
Commit: 978f4cd86a62f5b70b4af6bf9ab9e761928e2055
Parents: 9ab6227
Author: tbeerbower <tbeerbo...@hortonworks.com>
Authored: Fri Jul 26 11:28:55 2013 -0400
Committer: tbeerbower <tbeerbo...@hortonworks.com>
Committed: Fri Jul 26 16:27:34 2013 -0400

----------------------------------------------------------------------
 .../gsinstaller/GSInstallerNoOpProvider.java    | 19 ++++++++++++++
 .../GSInstallerResourceProvider.java            | 11 +++++++-
 .../GSInstallerNoOpProviderTest.java            | 27 ++++++++++++++++++++
 3 files changed, 56 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/978f4cd8/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProvider.java
index 0272d76..948b7f5 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProvider.java
@@ -21,11 +21,18 @@ import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Request;
 import org.apache.ambari.server.controller.spi.Resource;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * A NO-OP resource provider for a gsInstaller defined cluster.
  */
 public class GSInstallerNoOpProvider extends GSInstallerResourceProvider{
 
+  private final Map<Resource.Type, String> keyPropertyIds = new 
HashMap<Resource.Type, String>();
+
   // ----- GSInstallerResourceProvider ---------------------------------------
 
   @Override
@@ -37,5 +44,17 @@ public class GSInstallerNoOpProvider extends 
GSInstallerResourceProvider{
 
   public GSInstallerNoOpProvider(Resource.Type type, ClusterDefinition 
clusterDefinition) {
     super(type, clusterDefinition);
+    keyPropertyIds.put(type, "id");
+  }
+
+
+  @Override
+  public Map<Resource.Type, String> getKeyPropertyIds() {
+    return keyPropertyIds;
+  }
+
+  @Override
+  public Set<String> checkPropertyIds(Set<String> propertyIds) {
+    return Collections.emptySet();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/978f4cd8/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerResourceProvider.java
index c612c02..539978e 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerResourceProvider.java
@@ -140,8 +140,17 @@ public abstract class GSInstallerResourceProvider 
implements ResourceProvider {
     return clusterDefinition;
   }
 
+  /**
+   * Get the resource provider type.
+   *
+   * @return the type
+   */
+  public Resource.Type getType() {
+    return type;
+  }
+
 
-  // ----- helper methods ----------------------------------------------------
+// ----- helper methods ----------------------------------------------------
 
   /**
    * Get the set of property ids required to satisfy the given request.

http://git-wip-us.apache.org/repos/asf/incubator-ambari/blob/978f4cd8/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProviderTest.java
new file mode 100644
index 0000000..f0e66cd
--- /dev/null
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/gsinstaller/GSInstallerNoOpProviderTest.java
@@ -0,0 +1,27 @@
+package org.apache.ambari.server.controller.gsinstaller;
+
+import junit.framework.Assert;
+import org.apache.ambari.server.controller.spi.Resource;
+import org.junit.Test;
+
+import java.util.Collections;
+
+/**
+ * GSInstallerNoOpProvider tests.
+ */
+public class GSInstallerNoOpProviderTest {
+
+  @Test
+  public void testGetKeyPropertyIds() throws Exception {
+    ClusterDefinition clusterDefinition = new ClusterDefinition(new 
TestGSInstallerStateProvider());
+    GSInstallerNoOpProvider provider = new 
GSInstallerNoOpProvider(Resource.Type.Workflow, clusterDefinition);
+    Assert.assertNotNull(provider.getKeyPropertyIds());
+  }
+
+  @Test
+  public void testCheckPropertyIds() throws Exception {
+    ClusterDefinition clusterDefinition = new ClusterDefinition(new 
TestGSInstallerStateProvider());
+    GSInstallerNoOpProvider provider = new 
GSInstallerNoOpProvider(Resource.Type.Workflow, clusterDefinition);
+    
Assert.assertTrue(provider.checkPropertyIds(Collections.singleton("id")).isEmpty());
+  }
+}

Reply via email to