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()); + } +}