RANGER-346: Service-def files updated to use map for *Options fields, instead of a string with custom format
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/f88382b6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/f88382b6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/f88382b6 Branch: refs/heads/master Commit: f88382b6f11f4317fcf5cba77025f14e1f647231 Parents: ca40e35 Author: Madhan Neethiraj <[email protected]> Authored: Fri Mar 27 18:50:11 2015 -0700 Committer: Madhan Neethiraj <[email protected]> Committed: Fri Mar 27 18:50:11 2015 -0700 ---------------------------------------------------------------------- .../RangerAbstractContextEnricher.java | 3 --- .../RangerSimpleMatcherTest.java | 2 +- .../service/RangerServiceDefServiceBase.java | 25 ++++++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f88382b6/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java ---------------------------------------------------------------------- diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java index af4b560..f14360d 100644 --- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java +++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java @@ -34,9 +34,6 @@ import org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef; public abstract class RangerAbstractContextEnricher implements RangerContextEnricher { private static final Log LOG = LogFactory.getLog(RangerAbstractContextEnricher.class); - public final static String OPTIONS_SEP = ";"; - public final static String OPTION_NV_SEP = "="; - private Map<String, String> options = null; @Override http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f88382b6/agents-common/src/test/java/org/apache/ranger/plugin/conditionevaluator/RangerSimpleMatcherTest.java ---------------------------------------------------------------------- diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/conditionevaluator/RangerSimpleMatcherTest.java b/agents-common/src/test/java/org/apache/ranger/plugin/conditionevaluator/RangerSimpleMatcherTest.java index 99c8df0..7ce9cf3 100644 --- a/agents-common/src/test/java/org/apache/ranger/plugin/conditionevaluator/RangerSimpleMatcherTest.java +++ b/agents-common/src/test/java/org/apache/ranger/plugin/conditionevaluator/RangerSimpleMatcherTest.java @@ -39,7 +39,7 @@ import org.junit.Test; public class RangerSimpleMatcherTest { final Map<String, String> _conditionOptions = new HashMap<String, String>(); - + { _conditionOptions.put(RangerSimpleMatcher.CONTEXT_NAME, RangerSimpleMatcher.CONTEXT_NAME); } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/f88382b6/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java index 7754077..48fd7f8 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java @@ -1,6 +1,7 @@ package org.apache.ranger.service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -341,11 +342,31 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte private Map<String, String> jsonStringToMap(String jsonStr) { Map<String, String> ret = null; - if(jsonStr != null) { + if(!StringUtils.isEmpty(jsonStr)) { try { ret = jsonUtil.jsonToMap(jsonStr); } catch(Exception excp) { - LOG.warn("jsonStringToMap() failed to convert string: " + jsonStr, excp); + // fallback to earlier format: "name1=value1;name2=value2" + for(String optionString : jsonStr.split(";")) { + if(StringUtils.isEmpty(optionString)) { + continue; + } + + String[] nvArr = optionString.split("="); + + String name = (nvArr != null && nvArr.length > 0) ? nvArr[0].trim() : null; + String value = (nvArr != null && nvArr.length > 1) ? nvArr[1].trim() : null; + + if(StringUtils.isEmpty(name)) { + continue; + } + + if(ret == null) { + ret = new HashMap<String, String>(); + } + + ret.put(name, value); + } } }
