Repository: ambari
Updated Branches:
  refs/heads/trunk 4a4b0e693 -> 5b6065876


AMBARI-7664 - Views : View API request for non-existent view should return 404


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

Branch: refs/heads/trunk
Commit: 5b60658766856232b1198a21866db2aefe655662
Parents: 4a4b0e6
Author: tbeerbower <tbeerbo...@hortonworks.com>
Authored: Mon Oct 6 19:11:42 2014 -0400
Committer: tbeerbower <tbeerbo...@hortonworks.com>
Committed: Mon Oct 6 19:12:23 2014 -0400

----------------------------------------------------------------------
 .../internal/ClusterControllerImpl.java         |  6 +++
 .../internal/ClusterControllerImplTest.java     | 42 ++++++++++++++++++++
 2 files changed, 48 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/5b606587/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
index 48767d5..5d1024a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterControllerImpl.java
@@ -132,6 +132,12 @@ public class ClusterControllerImpl implements 
ClusterController {
 
       // get the resources
       resources = provider.getResources(request, predicate);
+
+      // if a specific resource was asked for and not found then throw 
exception
+      if (predicate != null && (resources == null || resources.isEmpty())) {
+        throw new NoSuchResourceException(
+            "The requested resource doesn't exist: " + type.toString() + " not 
found, " + predicate);
+      }
     }
     return resources;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/5b606587/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
index 1d0eef4..261c95d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/ClusterControllerImplTest.java
@@ -31,12 +31,19 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
 /**
  * Cluster controller tests
  */
@@ -129,6 +136,41 @@ public class ClusterControllerImplTest {
   }
 
   @Test
+  public void testGetResources_NoSuchResourceException() throws Exception{
+
+    ProviderModule providerModule = createNiceMock(ProviderModule.class);
+    ResourceProvider resourceProvider = createNiceMock(ResourceProvider.class);
+
+    
expect(providerModule.getResourceProvider(Resource.Type.View)).andReturn(resourceProvider).anyTimes();
+    
expect(resourceProvider.checkPropertyIds(Collections.singleton("ViewInfo/view_name"))).andReturn(Collections.<String>emptySet()).anyTimes();
+    expect(resourceProvider.getResources(anyObject(Request.class), 
anyObject(Predicate.class))).andReturn(Collections.<Resource>emptySet()).anyTimes();
+
+    replay(providerModule, resourceProvider);
+
+    ClusterControllerImpl controller = new 
ClusterControllerImpl(providerModule);
+
+    Set<String> propertyIds = new HashSet<String>();
+
+    propertyIds.add("ViewInfo/view_name");
+
+    Request request = PropertyHelper.getReadRequest(propertyIds);
+
+    // No predicate
+    Iterator<Resource> iter = 
controller.getResourceIterable(Resource.Type.View, request, null).iterator();
+    Assert.assertFalse(iter.hasNext());
+
+    // Ask for a specific resource.
+    Predicate predicate = new 
PredicateBuilder().property("ViewInfo/view_name").equals("BadView").toPredicate();
+    try {
+      controller.getResourceIterable(Resource.Type.View, request, predicate);
+      Assert.fail("Expected NoSuchResourceException.");
+    } catch (NoSuchResourceException e) {
+      // expected
+    }
+    verify(providerModule, resourceProvider);
+  }
+
+  @Test
   public void testGetResourcesPageFromStart() throws Exception{
     ClusterControllerImpl controller = new ClusterControllerImpl(new 
TestProviderModule());
 

Reply via email to