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