You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by rl...@apache.org on 2015/10/02 17:38:17 UTC
ambari git commit: AMBARI-13296. Credential Resource API should
return an empty list rather than a 404 error (rlevas)
Repository: ambari
Updated Branches:
refs/heads/trunk 3fbdd9d6e -> 4b437ea4f
AMBARI-13296. Credential Resource API should return an empty list rather than a 404 error (rlevas)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4b437ea4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4b437ea4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4b437ea4
Branch: refs/heads/trunk
Commit: 4b437ea4f1461d6bec197b7d748b7aa86f7e89f6
Parents: 3fbdd9d
Author: Robert Levas <rl...@hortonworks.com>
Authored: Fri Oct 2 11:38:11 2015 -0400
Committer: Robert Levas <rl...@hortonworks.com>
Committed: Fri Oct 2 11:38:11 2015 -0400
----------------------------------------------------------------------
.../internal/CredentialResourceProvider.java | 11 ++++++-
.../CredentialResourceProviderTest.java | 32 ++++++++++++++++++++
2 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/4b437ea4/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
index 55f26a0..52783c9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/CredentialResourceProvider.java
@@ -119,6 +119,7 @@ public class CredentialResourceProvider extends AbstractControllerResourceProvid
Set<String> requestedIds = getRequestPropertyIds(request, predicate);
Set<Resource> resources = new HashSet<Resource>();
+ boolean sendNotFoundErrorIfEmpty = false;
for (Map<String, Object> propertyMap : getPropertyMaps(predicate)) {
String clusterName = (String) propertyMap.get(CREDENTIAL_CLUSTER_NAME_PROPERTY_ID);
@@ -133,6 +134,14 @@ public class CredentialResourceProvider extends AbstractControllerResourceProvid
if (credentialStoreService.containsCredential(clusterName, alias)) {
resources.add(toResource(clusterName, alias, credentialStoreService.getCredentialStoreType(clusterName, alias), requestedIds));
}
+ else {
+ // Only throw a NoSuchResourceException if a specific item is being requested and it
+ // wasn't found. If multiple resources are queried, one or may not exist and this
+ // sendNotFoundErrorIfEmpty will be set to true. However if at least one resource is
+ // found, the resources Set will not be empty and NoSuchResourceException will not be
+ // thrown
+ sendNotFoundErrorIfEmpty = true;
+ }
} catch (AmbariException e) {
throw new SystemException(e.getLocalizedMessage(), e);
}
@@ -150,7 +159,7 @@ public class CredentialResourceProvider extends AbstractControllerResourceProvid
}
}
- if ((predicate != null) && resources.isEmpty()) {
+ if (sendNotFoundErrorIfEmpty && resources.isEmpty()) {
throw new NoSuchResourceException("The requested resource doesn't exist: Credential not found, " + predicate);
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/4b437ea4/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java
index 04ce22a..5f32d39 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/CredentialResourceProviderTest.java
@@ -451,6 +451,38 @@ public class CredentialResourceProviderTest {
verify(request, factory, managementController);
}
+ @Test
+ public void testGetResources_WithOutPredicateNoResults() throws Exception {
+
+ AmbariManagementController managementController = createMock(AmbariManagementController.class);
+ Request request = createMock(Request.class);
+
+ CredentialResourceProvider credentialResourceProvider = new CredentialResourceProvider(managementController);
+ injector.injectMembers(credentialResourceProvider);
+
+ // Get resources request
+ expect(request.getPropertyIds()).andReturn(null).once();
+
+ ResourceProviderFactory factory = createMock(ResourceProviderFactory.class);
+ expect(factory.getCredentialResourceProvider(anyObject(AmbariManagementController.class))).andReturn(credentialResourceProvider);
+
+ replay(request, factory, managementController);
+ // end expectations
+
+ AbstractControllerResourceProvider.init(factory);
+
+ ResourceProvider provider = AbstractControllerResourceProvider.getResourceProvider(
+ Resource.Type.Credential,
+ PropertyHelper.getPropertyIds(Resource.Type.Credential),
+ PropertyHelper.getKeyPropertyIds(Resource.Type.Credential),
+ managementController);
+
+
+ Set<Resource> results = provider.getResources(request, null);
+ Assert.assertTrue(results.isEmpty());
+
+ verify(request, factory, managementController);
+ }
@Test
public void testUpdateResources() throws Exception {