AMBARI-2747 - NPE in GSInstaller provider
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.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 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();
}
}
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());
+ }
+}