Repository: ambari
Updated Branches:
  refs/heads/branch-1.7.0 08c03e373 -> 71d2acc9f


AMBARI-8069 - Views: 400 error on redeploy (tbeerbower)


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

Branch: refs/heads/branch-1.7.0
Commit: 71d2acc9fa41f5bdb40f28978e113e5fabf81b2a
Parents: 08c03e3
Author: tbeerbower <tbeerbo...@hortonworks.com>
Authored: Fri Oct 31 15:59:27 2014 -0400
Committer: tbeerbower <tbeerbo...@hortonworks.com>
Committed: Fri Oct 31 15:59:51 2014 -0400

----------------------------------------------------------------------
 .../api/resources/ResourceInstanceFactoryImpl.java     | 11 +++++++----
 .../org/apache/ambari/server/view/ViewRegistry.java    |  8 +++++---
 .../apache/ambari/server/view/ViewRegistryTest.java    | 13 +++++++++++--
 3 files changed, 23 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
index b53147b..d2d9543 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/api/resources/ResourceInstanceFactoryImpl.java
@@ -19,6 +19,7 @@
 
 package org.apache.ambari.server.api.resources;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -223,10 +224,12 @@ public class ResourceInstanceFactoryImpl implements 
ResourceInstanceFactory {
         break;
 
       case ViewInstance:
-        Set<SubResourceDefinition> subResourceDefinitions =
-            ViewRegistry.getInstance().getSubResourceDefinitions(
-                mapIds.get(Resource.Type.View),
-                mapIds.get(Resource.Type.ViewVersion));
+        String viewName = mapIds.get(Resource.Type.View);
+        String version  = mapIds.get(Resource.Type.ViewVersion);
+
+        Set<SubResourceDefinition> subResourceDefinitions = (viewName == null 
|| version == null)  ?
+            Collections.<SubResourceDefinition>emptySet() :
+            ViewRegistry.getInstance().getSubResourceDefinitions(viewName, 
version);
 
         resourceDefinition = new 
ViewInstanceResourceDefinition(subResourceDefinitions);
         break;

http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java 
b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
index f2173ac..6581dfe 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java
@@ -414,11 +414,13 @@ public class ViewRegistry {
       subResourceDefinitions = new HashSet<SubResourceDefinition>();
       ViewEntity definition = getDefinition(viewName);
       if (definition != null) {
-        for (Resource.Type type : definition.getViewResourceTypes()) {
-          subResourceDefinitions.add(new SubResourceDefinition(type));
+        if (definition.isDeployed()) {
+          for (Resource.Type type : definition.getViewResourceTypes()) {
+            subResourceDefinitions.add(new SubResourceDefinition(type));
+          }
+          subResourceDefinitionsMap.put(viewName, subResourceDefinitions);
         }
       }
-      subResourceDefinitionsMap.put(viewName, subResourceDefinitions);
     }
     return subResourceDefinitions;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/71d2acc9/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
index 1bd47f3..bcbcfad 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java
@@ -614,6 +614,13 @@ public class ViewRegistryTest {
     ViewEntity viewDefinition = ViewEntityTest.getViewEntity();
     ViewRegistry registry = ViewRegistry.getInstance();
 
+    viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYING);
+
+    registry.addDefinition(viewDefinition);
+    Set<SubResourceDefinition> subResourceDefinitions = 
registry.getSubResourceDefinitions("MY_VIEW", "1.0.0");
+
+    Assert.assertTrue(subResourceDefinitions.isEmpty());
+
     ResourceConfig config = ResourceConfigTest.getResourceConfigs().get(0);
     Resource.Type type1 = new Resource.Type("myType");
 
@@ -621,8 +628,10 @@ public class ViewRegistryTest {
     viewDefinition.addResourceProvider(type1, provider1);
 
     viewDefinition.addResourceConfiguration(type1, config);
-    registry.addDefinition(viewDefinition);
-    Set<SubResourceDefinition> subResourceDefinitions = 
registry.getSubResourceDefinitions("MY_VIEW", "1.0.0");
+
+    viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED);
+
+    subResourceDefinitions = registry.getSubResourceDefinitions("MY_VIEW", 
"1.0.0");
 
     Assert.assertEquals(1, subResourceDefinitions.size());
     Assert.assertEquals("myType", 
subResourceDefinitions.iterator().next().getType().name());

Reply via email to