RANGER-4749: fixed TagREST.getServiceResourceByResource() to populate resource value in response - #2
Signed-off-by: Madhan Neethiraj <madhan@apache.org>
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
index ce59505..63bde37 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
@@ -1398,9 +1398,9 @@
}
}
- public RangerServiceResource getRangerServiceResource(String serviceName, Map<String, String[]> resourceMap) {
+ public static RangerServiceResource toRangerServiceResource(String serviceName, Map<String, String[]> resourceMap) {
if (LOG.isDebugEnabled()) {
- LOG.debug("==> TagDBStore.getRangerServiceResource(): serviceName={" + serviceName + "}");
+ LOG.debug("==> TagDBStore.toRangerServiceResource(): serviceName={" + serviceName + "}");
}
Map<String, RangerPolicyResource> resourceElements = new HashMap<>();
@@ -1424,11 +1424,13 @@
}
if (parts.length == 1) {
- List<String> valueList = new ArrayList<>();
+ List<String> valueList = new ArrayList<>(valueArray.length);
for (String str : valueArray) {
valueList.add(str.trim());
}
+
+ policyResource.setValues(valueList);
} else if (parts.length == 2 && valueArray[0] != null) {
String subKey = parts[1];
String value = valueArray[0];
@@ -1444,7 +1446,7 @@
RangerServiceResource ret = new RangerServiceResource(serviceName, resourceElements);
if (LOG.isDebugEnabled()) {
- LOG.debug("<== TagDBStore.getRangerServiceResource(): (serviceName={" + serviceName + "} RangerServiceResource={" + ret + "})");
+ LOG.debug("<== TagDBStore.toRangerServiceResource(): (serviceName={" + serviceName + "} RangerServiceResource={" + ret + "})");
}
return ret;
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
index 882bf4d..2adf0b0 100755
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
@@ -1028,7 +1028,7 @@
}
Map<String, String[]> resourceMap = searchUtil.getMultiValueParamsWithPrefix(request, SearchFilter.RESOURCE_PREFIX, true);
- RangerServiceResource serviceResource = tagStore.getRangerServiceResource(serviceName, resourceMap);
+ RangerServiceResource serviceResource = tagStore.toRangerServiceResource(serviceName, resourceMap);
serviceResource = getServiceResourceByServiceAndResourceSignature(serviceName, new RangerServiceResourceSignature(serviceResource).getSignature());
diff --git a/security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java b/security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java
index acc9cab..beba9af 100755
--- a/security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java
+++ b/security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java
@@ -21,7 +21,10 @@
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
import javax.ws.rs.WebApplicationException;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
@@ -50,6 +53,7 @@
import org.apache.ranger.plugin.model.RangerTag;
import org.apache.ranger.plugin.model.RangerTagDef;
import org.apache.ranger.plugin.model.RangerTagResourceMap;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.store.PList;
import org.apache.ranger.plugin.util.SearchFilter;
import org.apache.ranger.plugin.util.ServiceTags;
@@ -1239,4 +1243,21 @@
return rangerServiceResourceViewList;
}
+
+ @Test
+ public void testToRangerServiceResource() {
+ Map<String, String[]> resourceMap = new HashMap<>();
+ Map<String, RangerPolicyResource> resourceElements = new HashMap<>();
+
+ resourceMap.put("database", new String[] { "db1" });
+ resourceMap.put("database.isExcludes", new String[] { "false" });
+ resourceMap.put("database.isRecursive", new String[] { "false" });
+
+ resourceElements.put("database", new RangerPolicyResource("db1", false, false));
+
+ RangerServiceResource expectedResource = new RangerServiceResource(serviceName, resourceElements);
+ RangerServiceResource actualResource = tagDBStore.toRangerServiceResource(serviceName, resourceMap);
+
+ Assert.assertEquals(expectedResource.getResourceElements(), actualResource.getResourceElements());
+ }
}
\ No newline at end of file