diff --git a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java index f54d058c1c..fbc367f457 100755 --- a/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/GdsREST.java @@ -1292,32 +1292,36 @@ public void removeSharedResource(@PathParam("id") Long resourceId) { @DELETE @Path("/resources") @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.REMOVE_SHARED_RESOURCES + "\")") - public void removeSharedResources(List resourceIds) { - LOG.debug("==> GdsREST.removeSharedResources({})", resourceIds); + public void removeSharedResources(@QueryParam("id") List id) { + LOG.debug("==> GdsREST.removeSharedResources(resourceIds={})", id); RangerPerfTracer perf = null; try { - if (resourceIds.size() > SHARED_RESOURCES_MAX_BATCH_SIZE) { + if (id == null) { + throw new Exception("resourceIds must not be null"); + } + + if (id.size() > SHARED_RESOURCES_MAX_BATCH_SIZE) { throw new Exception("removeSharedResources batch size exceeded the configured limit: Maximum allowed is " + SHARED_RESOURCES_MAX_BATCH_SIZE); } if (RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) { - perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "GdsREST.removeSharedResources(" + resourceIds + ")"); + perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "GdsREST.removeSharedResources(" + id + ")"); } - gdsStore.removeSharedResources(resourceIds); + gdsStore.removeSharedResources(id); } catch (WebApplicationException excp) { throw excp; } catch (Throwable excp) { - LOG.error("removeSharedResources({}) failed", resourceIds, excp); + LOG.error("removeSharedResources({}) failed", id, excp); throw restErrorUtil.createRESTException(excp.getMessage()); } finally { RangerPerfTracer.log(perf); } - LOG.debug("<== GdsREST.removeSharedResources({})", resourceIds); + LOG.debug("<== GdsREST.removeSharedResources(resourceIds={})", id); } @GET diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java b/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java index 3f4982b38f..dfe0b868cd 100644 --- a/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java +++ b/security-admin/src/test/java/org/apache/ranger/rest/TestGdsREST.java @@ -962,6 +962,13 @@ public void testRemoveSharedResourcesBatchSizeExceeded() { assertThrows(WebApplicationException.class, () -> gdsREST.removeSharedResources(resourceIds)); } + @Test + public void testRemoveSharedResourcesNullResourceIds() { + Mockito.when(restErrorUtil.createRESTException(Mockito.anyString())).thenReturn(new WebApplicationException()); + + assertThrows(WebApplicationException.class, () -> gdsREST.removeSharedResources(null)); + } + @Test public void testGetSharedResource() { Long resourceId = 1L;