Repository: incubator-ranger
Updated Branches:
  refs/heads/tag-policy d61bce5c4 -> d8f7a9605


RANGER-274: tag-based-policies: added RangerServiceDef.options field


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/d8f7a960
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/d8f7a960
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/d8f7a960

Branch: refs/heads/tag-policy
Commit: d8f7a960540860137656ace18dd668f1465fd556
Parents: d61bce5
Author: Madhan Neethiraj <[email protected]>
Authored: Tue May 26 16:49:56 2015 -0700
Committer: Madhan Neethiraj <[email protected]>
Committed: Tue May 26 16:49:56 2015 -0700

----------------------------------------------------------------------
 .../RangerAbstractContextEnricher.java          | 34 ++++++++--------
 .../ranger/plugin/model/RangerServiceDef.java   | 41 +++++++++++++++++++-
 .../RangerAbstractResourceMatcher.java          | 37 +++++++++---------
 .../service-defs/ranger-servicedef-_tag_.json   |  4 ++
 .../service-defs/ranger-servicedef-kms.json     |  5 +++
 .../ranger/plugin/store/TestServiceStore.java   |  2 +-
 .../services/hbase/TestRangerServiceHBase.java  |  2 +-
 .../services/hdfs/TestRangerServiceHdfs.java    |  2 +-
 .../hive/client/TestRangerServiceHive.java      |  2 +-
 .../knox/client/TestRangerServiceKnox.java      |  2 +-
 .../db/mysql/patches/009-updated_schema.sql     |  1 +
 .../db/oracle/patches/009-updated_schema.sql    |  1 +
 .../db/postgres/xa_core_db_postgres.sql         |  1 +
 .../db/sqlserver/xa_core_db_sqlserver.sql       |  1 +
 .../org/apache/ranger/entity/XXServiceDef.java  | 35 +++++++++++++++++
 .../ranger/service/RangerServiceDefService.java |  2 +
 .../service/RangerServiceDefServiceBase.java    |  6 ++-
 17 files changed, 132 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/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 922cfea..72affda 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
@@ -41,7 +41,6 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
        protected String componentServiceName;
        protected RangerServiceDef componentServiceDef;
 
-       private Map<String, String> options = null;
 
        @Override
        public void setContextEnricherDef(RangerContextEnricherDef enricherDef) 
{
@@ -54,8 +53,6 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
                        LOG.debug("==> RangerAbstractContextEnricher.init(" + 
enricherDef + ")");
                }
 
-               options = enricherDef.getEnricherOptions();
-
                if(LOG.isDebugEnabled()) {
                        LOG.debug("<== RangerAbstractContextEnricher.init(" + 
enricherDef + ")");
                }
@@ -84,6 +81,8 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
        public String getOption(String name) {
                String ret = null;
 
+               Map<String, String> options = enricherDef != null ? 
enricherDef.getEnricherOptions() : null;
+
                if(options != null && name != null) {
                        ret = options.get(name);
                }
@@ -92,35 +91,34 @@ public abstract class RangerAbstractContextEnricher 
implements RangerContextEnri
        }
 
        public String getOption(String name, String defaultValue) {
-               String ret = getOption(name);
-
-               if(StringUtils.isEmpty(ret)) {
-                       ret = defaultValue;
-               }
-
-               return ret;
-       }
-
-       public boolean getBooleanOption(String name) {
+               String ret = defaultValue;
                String val = getOption(name);
 
-               boolean ret = StringUtils.isEmpty(val) ? false : 
Boolean.parseBoolean(val);
+               if(val != null) {
+                       ret = val;
+               }
 
                return ret;
        }
 
        public boolean getBooleanOption(String name, boolean defaultValue) {
-               String strVal = getOption(name);
+               boolean ret = defaultValue;
+               String  val = getOption(name);
 
-               boolean ret = StringUtils.isEmpty(strVal) ? defaultValue : 
Boolean.parseBoolean(strVal);
+               if(val != null) {
+                       ret = Boolean.parseBoolean(val);
+               }
 
                return ret;
        }
 
        public char getCharOption(String name, char defaultValue) {
-               String strVal = getOption(name);
+               char   ret = defaultValue;
+               String val = getOption(name);
 
-               char ret = StringUtils.isEmpty(strVal) ? defaultValue : 
strVal.charAt(0);
+               if(! StringUtils.isEmpty(val)) {
+                       ret = val.charAt(0);
+               }
 
                return ret;
        }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
index 49ee3a1..cd69320 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java
@@ -49,6 +49,7 @@ public class RangerServiceDef extends RangerBaseModelObject 
implements java.io.S
        private String                         description      = null;
        private String                         rbKeyLabel       = null;
        private String                         rbKeyDescription = null;
+       private Map<String, String>            options          = null;
        private List<RangerServiceConfigDef>   configs          = null;
        private List<RangerResourceDef>        resources        = null;
        private List<RangerAccessTypeDef>      accessTypes      = null;
@@ -58,7 +59,7 @@ public class RangerServiceDef extends RangerBaseModelObject 
implements java.io.S
 
 
        public RangerServiceDef() {
-               this(null, null, null, null, null, null, null, null, null, 
null);
+               this(null, null, null, null, null, null, null, null, null, 
null, null);
        }
 
        /**
@@ -66,6 +67,7 @@ public class RangerServiceDef extends RangerBaseModelObject 
implements java.io.S
         * @param implClass
         * @param label
         * @param description
+        * @param options
         * @param configs
         * @param resources
         * @param accessTypes
@@ -73,7 +75,7 @@ public class RangerServiceDef extends RangerBaseModelObject 
implements java.io.S
         * @param contextEnrichers
         * @param enums
         */
-       public RangerServiceDef(String name, String implClass, String label, 
String description, List<RangerServiceConfigDef> configs, 
List<RangerResourceDef> resources, List<RangerAccessTypeDef> accessTypes, 
List<RangerPolicyConditionDef> policyConditions, List<RangerContextEnricherDef> 
contextEnrichers, List<RangerEnumDef> enums) {
+       public RangerServiceDef(String name, String implClass, String label, 
String description, Map<String, String> options, List<RangerServiceConfigDef> 
configs, List<RangerResourceDef> resources, List<RangerAccessTypeDef> 
accessTypes, List<RangerPolicyConditionDef> policyConditions, 
List<RangerContextEnricherDef> contextEnrichers, List<RangerEnumDef> enums) {
                super();
 
                setName(name);
@@ -81,6 +83,7 @@ public class RangerServiceDef extends RangerBaseModelObject 
implements java.io.S
                setLabel(label);
                setDescription(description);
                setConfigs(configs);
+               setOptions(options);
                setResources(resources);
                setAccessTypes(accessTypes);
                setPolicyConditions(policyConditions);
@@ -218,6 +221,32 @@ public class RangerServiceDef extends 
RangerBaseModelObject implements java.io.S
        }
 
        /**
+        * @return the options
+        */
+       public Map<String, String> getOptions() {
+               return options;
+       }
+
+       /**
+        * @param options the options to set
+        */
+       public void setOptions(Map<String, String> options) {
+               if(this.options == null) {
+                       this.options = new HashMap<String, String>();
+               } else if(this.options == options) {
+                       return;
+               }
+
+               this.options.clear();
+
+               if(options != null) {
+                       for(Map.Entry<String, String> entry : 
options.entrySet()) {
+                               this.options.put(entry.getKey(), 
entry.getValue());
+                       }
+               }
+       }
+
+       /**
         * @return the resources
         */
        public List<RangerResourceDef> getResources() {
@@ -378,6 +407,14 @@ public class RangerServiceDef extends 
RangerBaseModelObject implements java.io.S
                sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
                
sb.append("rbKeyDescription={").append(rbKeyDescription).append("} ");
 
+               sb.append("options={");
+               if(options != null) {
+                       for(Map.Entry<String, String> entry : 
options.entrySet()) {
+                               
sb.append(entry.getKey()).append("=").append(entry.getValue()).append(" ");
+                       }
+               }
+               sb.append("} ");
+
                sb.append("configs={");
                if(configs != null) {
                        for(RangerServiceConfigDef config : configs) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java
index 9e547f1..56c4cfb 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/resourcematcher/RangerAbstractResourceMatcher.java
@@ -43,7 +43,6 @@ public abstract class RangerAbstractResourceMatcher 
implements RangerResourceMat
 
        protected RangerResourceDef    resourceDef    = null;
        protected RangerPolicyResource policyResource = null;
-       protected Map<String, String>  options        = null;
 
        protected boolean      optIgnoreCase = false;
        protected boolean      optWildCard   = false;
@@ -55,7 +54,6 @@ public abstract class RangerAbstractResourceMatcher 
implements RangerResourceMat
        @Override
        public void setResourceDef(RangerResourceDef resourceDef) {
                this.resourceDef = resourceDef;
-               this.options     = resourceDef != null ? 
resourceDef.getMatcherOptions() : null;
        }
 
        @Override
@@ -133,6 +131,8 @@ public abstract class RangerAbstractResourceMatcher 
implements RangerResourceMat
        public String getOption(String name) {
                String ret = null;
 
+               Map<String, String> options = resourceDef != null ? 
resourceDef.getMatcherOptions() : null;
+
                if(options != null && name != null) {
                        ret = options.get(name);
                }
@@ -141,35 +141,34 @@ public abstract class RangerAbstractResourceMatcher 
implements RangerResourceMat
        }
 
        public String getOption(String name, String defaultValue) {
-               String ret = getOption(name);
-
-               if(StringUtils.isEmpty(ret)) {
-                       ret = defaultValue;
-               }
-
-               return ret;
-       }
-
-       public boolean getBooleanOption(String name) {
+               String ret = defaultValue;
                String val = getOption(name);
 
-               boolean ret = StringUtils.isEmpty(val) ? false : 
Boolean.parseBoolean(val);
+               if(val != null) {
+                       ret = val;
+               }
 
                return ret;
        }
 
        public boolean getBooleanOption(String name, boolean defaultValue) {
-               String strVal = getOption(name);
+               boolean ret = defaultValue;
+               String  val = getOption(name);
 
-               boolean ret = StringUtils.isEmpty(strVal) ? defaultValue : 
Boolean.parseBoolean(strVal);
+               if(val != null) {
+                       ret = Boolean.parseBoolean(val);
+               }
 
                return ret;
        }
 
        public char getCharOption(String name, char defaultValue) {
-               String strVal = getOption(name);
+               char   ret = defaultValue;
+               String val = getOption(name);
 
-               char ret = StringUtils.isEmpty(strVal) ? defaultValue : 
strVal.charAt(0);
+               if(! StringUtils.isEmpty(val)) {
+                       ret = val.charAt(0);
+               }
 
                return ret;
        }
@@ -211,8 +210,8 @@ public abstract class RangerAbstractResourceMatcher 
implements RangerResourceMat
                sb.append("isMatchAny={").append(isMatchAny).append("} ");
 
                sb.append("options={");
-               if(options != null) {
-                       for(Map.Entry<String, String> e : options.entrySet()) {
+               if(resourceDef != null && resourceDef.getMatcherOptions() != 
null) {
+                       for(Map.Entry<String, String> e : 
resourceDef.getMatcherOptions().entrySet()) {
                                
sb.append(e.getKey()).append("=").append(e.getValue()).append(OPTIONS_SEP);
                        }
                }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/agents-common/src/main/resources/service-defs/ranger-servicedef-_tag_.json
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/resources/service-defs/ranger-servicedef-_tag_.json 
b/agents-common/src/main/resources/service-defs/ranger-servicedef-_tag_.json
index a20d467..e0ae0bc 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-_tag_.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-_tag_.json
@@ -4,6 +4,10 @@
   "label": "TAG",
   "description": "TAG Service Definition",
   "guid": "0d047248-baff-4cf9-8e9e-d5d377284b2e",
+  "options":
+  {
+    "ui.pages":"tag-based-policies"
+  },
   "resources":
   [
     {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json
----------------------------------------------------------------------
diff --git 
a/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json 
b/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json
index 35d36e5..491cd17 100755
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-kms.json
@@ -3,6 +3,11 @@
        "implClass": "org.apache.ranger.services.kms.RangerServiceKMS",
        "label": "KMS",
        "description": "KMS",
+    "options":
+    {
+        "ui.pages":"encryption",
+        "security.allowed.roles":"keyadmin"
+    },
        "resources": 
        [
                {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
----------------------------------------------------------------------
diff --git 
a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
 
b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
index 59bbb25..6a759a3 100644
--- 
a/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
+++ 
b/agents-common/src/test/java/org/apache/ranger/plugin/store/TestServiceStore.java
@@ -91,7 +91,7 @@ public class TestServiceStore {
 
                int initSdCount = sds == null ? 0 : sds.size();
 
-               RangerServiceDef sd = new RangerServiceDef(sdName, 
"org.apache.ranger.services.TestService", "TestService", "test servicedef 
description", null, null, null, null, null, null);
+               RangerServiceDef sd = new RangerServiceDef(sdName, 
"org.apache.ranger.services.TestService", "TestService", "test servicedef 
description", null, null, null, null, null, null, null);
 
                RangerServiceDef createdSd = svcStore.createServiceDef(sd);
                assertNotNull("createServiceDef() failed", createdSd != null);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/hbase-agent/src/test/java/org/apache/ranger/services/hbase/TestRangerServiceHBase.java
----------------------------------------------------------------------
diff --git 
a/hbase-agent/src/test/java/org/apache/ranger/services/hbase/TestRangerServiceHBase.java
 
b/hbase-agent/src/test/java/org/apache/ranger/services/hbase/TestRangerServiceHBase.java
index 6340204..e723392 100644
--- 
a/hbase-agent/src/test/java/org/apache/ranger/services/hbase/TestRangerServiceHBase.java
+++ 
b/hbase-agent/src/test/java/org/apache/ranger/services/hbase/TestRangerServiceHBase.java
@@ -57,7 +57,7 @@ public class TestRangerServiceHBase {
                buildHbaseConnectionConfig();
                buildLookupContext();
                
-               sd               = new RangerServiceDef(sdName, 
"org.apache.ranger.services.hbase.RangerServiceHBase", "TestService", "test 
servicedef description", null, null, null, null, null, null);
+               sd               = new RangerServiceDef(sdName, 
"org.apache.ranger.services.hbase.RangerServiceHBase", "TestService", "test 
servicedef description", null, null, null, null, null, null, null);
                svc      = new RangerService(sdName, serviceName, "unit test 
hbase resource lookup and validateConfig", null, configs);
                svcHBase = new RangerServiceHBase();
                svcHBase.init(sd, svc);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/TestRangerServiceHdfs.java
----------------------------------------------------------------------
diff --git 
a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/TestRangerServiceHdfs.java
 
b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/TestRangerServiceHdfs.java
index 0af6a3f..377b7e5 100644
--- 
a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/TestRangerServiceHdfs.java
+++ 
b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/TestRangerServiceHdfs.java
@@ -55,7 +55,7 @@ public class TestRangerServiceHdfs {
                buildHdfsConnectionConfig();
                buildLookupContext();
 
-               sd               = new RangerServiceDef(sdName, 
"org.apache.ranger.service.hdfs.RangerServiceHdfs", "TestService", "test 
servicedef description", null, null, null, null, null, null);
+               sd               = new RangerServiceDef(sdName, 
"org.apache.ranger.service.hdfs.RangerServiceHdfs", "TestService", "test 
servicedef description", null, null, null, null, null, null, null);
                svc      = new RangerService(sdName, serviceName, "unit test 
hdfs resource lookup and validateConfig", null, configs);
                svcHdfs = new RangerServiceHdfs();
                svcHdfs.init(sd, svc);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/hive-agent/src/test/java/org/apache/ranger/services/hive/client/TestRangerServiceHive.java
----------------------------------------------------------------------
diff --git 
a/hive-agent/src/test/java/org/apache/ranger/services/hive/client/TestRangerServiceHive.java
 
b/hive-agent/src/test/java/org/apache/ranger/services/hive/client/TestRangerServiceHive.java
index d65d3b7..a676b13 100644
--- 
a/hive-agent/src/test/java/org/apache/ranger/services/hive/client/TestRangerServiceHive.java
+++ 
b/hive-agent/src/test/java/org/apache/ranger/services/hive/client/TestRangerServiceHive.java
@@ -56,7 +56,7 @@ public class TestRangerServiceHive {
                buildHbaseConnectionConfig();
                buildLookupContext();
                                
-               sd              = new RangerServiceDef(sdName, 
"org.apache.ranger.services.hive.RangerServiceHive", "TestHiveService", "test 
servicedef description", null, null, null, null, null, null);
+               sd              = new RangerServiceDef(sdName, 
"org.apache.ranger.services.hive.RangerServiceHive", "TestHiveService", "test 
servicedef description", null, null, null, null, null, null, null);
                svc     = new RangerService(sdName, serviceName, "unit test 
hive resource lookup and validateConfig", null, configs);
                svcHive = new RangerServiceHive();
                svcHive.init(sd, svc);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/knox-agent/src/test/java/org/apache/ranger/services/knox/client/TestRangerServiceKnox.java
----------------------------------------------------------------------
diff --git 
a/knox-agent/src/test/java/org/apache/ranger/services/knox/client/TestRangerServiceKnox.java
 
b/knox-agent/src/test/java/org/apache/ranger/services/knox/client/TestRangerServiceKnox.java
index e931aea..3e04cf3 100644
--- 
a/knox-agent/src/test/java/org/apache/ranger/services/knox/client/TestRangerServiceKnox.java
+++ 
b/knox-agent/src/test/java/org/apache/ranger/services/knox/client/TestRangerServiceKnox.java
@@ -58,7 +58,7 @@ public class TestRangerServiceKnox {
                buildHbaseConnectionConfig();
                buildLookupContext();
        
-               sd               = new RangerServiceDef(sdName, " 
org.apache.ranger.services.knox.RangerServiceKnox", "TestKnoxService", "test 
Knox servicedef description", null, null, null, null, null, null);
+               sd               = new RangerServiceDef(sdName, " 
org.apache.ranger.services.knox.RangerServiceKnox", "TestKnoxService", "test 
Knox servicedef description", null, null, null, null, null, null, null);
                svc      = new RangerService(sdName, serviceName, "unit test 
Knox resource lookup and validateConfig", null, configs);
                svcKnox  = new RangerServiceKnox();
                svcKnox.init(sd, svc);

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/db/mysql/patches/009-updated_schema.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/mysql/patches/009-updated_schema.sql 
b/security-admin/db/mysql/patches/009-updated_schema.sql
index 2c14bc9..b0f8432 100644
--- a/security-admin/db/mysql/patches/009-updated_schema.sql
+++ b/security-admin/db/mysql/patches/009-updated_schema.sql
@@ -29,6 +29,7 @@ CREATE TABLE `x_service_def` (
 `impl_class_name` varchar(1024) DEFAULT NULL,
 `label` varchar(1024) DEFAULT NULL,
 `description` varchar(1024) DEFAULT NULL,
+`options` varchar(1024) DEFAULT NULL,
 `rb_key_label` varchar(1024) DEFAULT NULL,
 `rb_key_description` varchar(1024) DEFAULT NULL,
 `is_enabled` tinyint DEFAULT 1,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/db/oracle/patches/009-updated_schema.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/oracle/patches/009-updated_schema.sql 
b/security-admin/db/oracle/patches/009-updated_schema.sql
index 11946bf..ed47237 100644
--- a/security-admin/db/oracle/patches/009-updated_schema.sql
+++ b/security-admin/db/oracle/patches/009-updated_schema.sql
@@ -46,6 +46,7 @@ name VARCHAR(1024) DEFAULT NULL NULL,
 impl_class_name VARCHAR(1024) DEFAULT NULL NULL,
 label VARCHAR(1024) DEFAULT NULL NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
+options VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_label VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_description VARCHAR(1024) DEFAULT NULL NULL,
 is_enabled NUMBER(1) DEFAULT '1' NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/db/postgres/xa_core_db_postgres.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/postgres/xa_core_db_postgres.sql 
b/security-admin/db/postgres/xa_core_db_postgres.sql
index 3530490..f995d56 100644
--- a/security-admin/db/postgres/xa_core_db_postgres.sql
+++ b/security-admin/db/postgres/xa_core_db_postgres.sql
@@ -473,6 +473,7 @@ name VARCHAR(1024) DEFAULT NULL NULL,
 impl_class_name VARCHAR(1024) DEFAULT NULL NULL,
 label VARCHAR(1024) DEFAULT NULL NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
+options VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_label VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_description VARCHAR(1024) DEFAULT NULL NULL,
 is_enabled BOOLEAN DEFAULT '1' NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql 
b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
index 6553085..7bf5b04 100644
--- a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
+++ b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
@@ -1759,6 +1759,7 @@ CREATE TABLE [dbo].[x_service_def](
        [impl_class_name] [varchar](1024) DEFAULT NULL NULL,
        [label] [varchar](1024) DEFAULT NULL NULL,
        [description] [varchar](1024) DEFAULT NULL NULL,
+       [options] [varchar](1024) DEFAULT NULL NULL,
        [rb_key_label] [varchar](1024) DEFAULT NULL NULL,
        [rb_key_description] [varchar](1024) DEFAULT NULL NULL,
        [is_enabled] [tinyint] DEFAULT 1 NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDef.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDef.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDef.java
index 4e52eb9..6f79432 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDef.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceDef.java
@@ -94,6 +94,15 @@ public class XXServiceDef extends XXDBBase implements 
java.io.Serializable {
        protected String description;
 
        /**
+        * options of the XXServiceDef
+        * <ul>
+        * </ul>
+        *
+        */
+       @Column(name = "options")
+       protected String options;
+
+       /**
         * rbKeyLabel of the XXServiceDef
         * <ul>
         * </ul>
@@ -255,6 +264,25 @@ public class XXServiceDef extends XXDBBase implements 
java.io.Serializable {
        }
 
        /**
+        * This method sets the value to the member attribute <b> options</b> .
+        *
+        * @param options
+        *            Value to set member attribute <b> options</b>
+        */
+       public void setOptions(String options) {
+               this.options = options;
+       }
+
+       /**
+        * Returns the value for the member attribute <b>options</b>
+        *
+        * @return String - value of member attribute <b>options</b> .
+        */
+       public String getOptions() {
+               return this.options;
+       }
+
+       /**
         * This method sets the value to the member attribute <b> 
rbKeyLabel</b> .
         * You cannot set null to the attribute.
         * 
@@ -373,6 +401,13 @@ public class XXServiceDef extends XXDBBase implements 
java.io.Serializable {
                } else if (!name.equals(other.name)) {
                        return false;
                }
+               if (options == null) {
+                       if (other.options != null) {
+                               return false;
+                       }
+               } else if (!options.equals(other.options)) {
+                       return false;
+               }
                if (rbKeyDescription == null) {
                        if (other.rbKeyDescription != null) {
                                return false;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
index f1a1034..591b245 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
@@ -77,6 +77,8 @@ public class RangerServiceDefService extends 
RangerServiceDefServiceBase<XXServi
        protected RangerServiceDef populateViewBean(XXServiceDef xServiceDef) {
                RangerServiceDef serviceDef = 
super.populateViewBean(xServiceDef);
                Long serviceDefId = xServiceDef.getId();
+
+               
serviceDef.setOptions(jsonStringToMap(xServiceDef.getOptions()));
                
                List<XXServiceConfigDef> xConfigs = 
daoMgr.getXXServiceConfigDef().findByServiceDefId(serviceDefId);
                if (!stringUtil.isEmpty(xConfigs)) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/d8f7a960/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 f6a24aa..8df8c44 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
@@ -75,6 +75,7 @@ public abstract class RangerServiceDefServiceBase<T extends 
XXServiceDef, V exte
                xObj.setImplclassname(vObj.getImplClass());
                xObj.setLabel(vObj.getLabel());
                xObj.setDescription(vObj.getDescription());
+               xObj.setOptions(mapToJsonString(vObj.getOptions()));
                xObj.setRbkeylabel(vObj.getRbKeyLabel());
                xObj.setRbkeydescription(vObj.getRbKeyDescription());
                xObj.setIsEnabled(vObj.getIsEnabled());
@@ -90,6 +91,7 @@ public abstract class RangerServiceDefServiceBase<T extends 
XXServiceDef, V exte
                vObj.setImplClass(xObj.getImplclassname());
                vObj.setLabel(xObj.getLabel());
                vObj.setDescription(xObj.getDescription());
+               vObj.setOptions(jsonStringToMap(xObj.getOptions()));
                vObj.setRbKeyLabel(xObj.getRbkeylabel());
                vObj.setRbKeyDescription(xObj.getRbkeydescription());
                vObj.setIsEnabled(xObj.getIsEnabled());
@@ -372,7 +374,7 @@ public abstract class RangerServiceDefServiceBase<T extends 
XXServiceDef, V exte
                return retList;
        }
 
-       private String mapToJsonString(Map<String, String> map) {
+       protected String mapToJsonString(Map<String, String> map) {
                String ret = null;
 
                if(map != null) {
@@ -386,7 +388,7 @@ public abstract class RangerServiceDefServiceBase<T extends 
XXServiceDef, V exte
                return ret;
        }
 
-       private Map<String, String> jsonStringToMap(String jsonStr) {
+       protected Map<String, String> jsonStringToMap(String jsonStr) {
                Map<String, String> ret = null;
 
                if(!StringUtils.isEmpty(jsonStr)) {

Reply via email to