RANGER-203: Add deserializer for Map<String,String>

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

Branch: refs/heads/stack
Commit: 665af618acf6d44d3b34f784a95e3c9e437eca68
Parents: 9d85cb7
Author: Gautam Borad <[email protected]>
Authored: Tue Jan 6 10:31:02 2015 -0800
Committer: Madhan Neethiraj <[email protected]>
Committed: Wed Jan 7 11:18:37 2015 -0800

----------------------------------------------------------------------
 .../manager/CustomizedMapDeserializer.java      | 34 ++++++++++++++++++++
 .../ranger/plugin/model/RangerService.java      |  3 ++
 .../service-defs/ranger-servicedef-hbase.json   |  6 ++--
 .../service-defs/ranger-servicedef-hdfs.json    |  2 +-
 .../service-defs/ranger-servicedef-hive.json    |  8 ++---
 .../service-defs/ranger-servicedef-knox.json    |  4 +--
 .../service-defs/ranger-servicedef-storm.json   |  2 +-
 .../scripts/views/policies/GroupPermList.js     |  2 +-
 .../views/policies/RangerPolicyCreate.js        |  4 ++-
 .../scripts/views/policies/UserPermList.js      |  2 +-
 .../webapp/scripts/views/service/ServiceForm.js | 10 +++---
 .../main/webapp/templates/helpers/XAHelpers.js  |  6 ++--
 12 files changed, 62 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/java/org/apache/ranger/plugin/manager/CustomizedMapDeserializer.java
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/java/org/apache/ranger/plugin/manager/CustomizedMapDeserializer.java
 
b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/CustomizedMapDeserializer.java
new file mode 100644
index 0000000..268d70f
--- /dev/null
+++ 
b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/CustomizedMapDeserializer.java
@@ -0,0 +1,34 @@
+package org.apache.ranger.plugin.manager;
+
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.jackson.JsonParser;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.JsonToken;
+import org.codehaus.jackson.map.DeserializationContext;
+import org.codehaus.jackson.map.JsonDeserializer;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+
+/**
+ * Created by gautam on 06/01/15.
+ */
+public class CustomizedMapDeserializer extends JsonDeserializer<Map<Object, 
Object>> {
+
+        @Override
+        public Map<Object, Object> deserialize(JsonParser jp, 
DeserializationContext arg1) throws IOException,
+                JsonProcessingException {
+                ObjectMapper mapper = (ObjectMapper) jp.getCodec();
+                if (jp.getCurrentToken().equals(JsonToken.START_OBJECT)) {
+                        return mapper.readValue(jp, new 
TypeReference<Map<Object, Object>>() { });
+                } else {
+                        // consume this stream
+                        mapper.readTree(jp);
+                        return new HashMap<Object, Object>();
+                }
+        }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java 
b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java
index 9bdb086..65de02a 100644
--- 
a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java
+++ 
b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java
@@ -26,9 +26,11 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.ranger.plugin.manager.CustomizedMapDeserializer;
 import org.codehaus.jackson.annotate.JsonAutoDetect;
 import org.codehaus.jackson.annotate.JsonIgnoreProperties;
 import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
+import org.codehaus.jackson.map.annotate.JsonDeserialize;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
 
 
@@ -44,6 +46,7 @@ public class RangerService extends RangerBaseModelObject 
implements java.io.Seri
        private String              name        = null;
        private String              description = null;
        private Boolean             isEnabled   = null;
+       @JsonDeserialize(using = CustomizedMapDeserializer.class)
        private Map<String, String> configs     = null;
 
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hbase.json 
b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
index 070ba2a..04127bb 100644
--- a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
+++ b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
@@ -33,9 +33,9 @@
   ],
   "resources":
   [
-    
{"name":"table","type":"string","level":1,"parent":"","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Table","description":"HBase Table"},
-    
{"name":"column-family","type":"string","level":2,"parent":"table","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Column-family","description":"HBase Column-family"},
-    
{"name":"column","type":"string","level":3,"parent":"column-family","mandatory":true,"lookupSupported":false,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Column","description":"HBase Column"}
+    
{"name":"table","type":"select2","level":1,"parent":"","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Table","description":"HBase Table"},
+    
{"name":"column-family","type":"select2","level":2,"parent":"table","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Column-family","description":"HBase Column-family"},
+    
{"name":"column","type":"select2","level":3,"parent":"column-family","mandatory":true,"lookupSupported":false,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase
 Column","description":"HBase Column"}
   ],
   "accessTypes":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json 
b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
index 8387268..20ae6b9 100644
--- a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
+++ b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
@@ -45,7 +45,7 @@
   ],
   "resources":
   [
-    
{"name":"path","type":"string","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Resource
 Path","description":"HDFS file or directory path"}
+    
{"name":"path","type":"path","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Resource
 Path","description":"HDFS file or directory path"}
   ],
   "accessTypes":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/resources/service-defs/ranger-servicedef-hive.json
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hive.json 
b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hive.json
index 1831810..c18f0a0 100644
--- a/plugin-common/src/main/resources/service-defs/ranger-servicedef-hive.json
+++ b/plugin-common/src/main/resources/service-defs/ranger-servicedef-hive.json
@@ -21,10 +21,10 @@
   ],
   "resources":
   [
-    
{"name":"database","type":"string","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Database","description":"Hive Database"},
-    
{"name":"table","type":"string","level":2,"parent":"database","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Table","description":"Hive Table"},
-    
{"name":"udf","type":"string","level":2,"parent":"database","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 UDF","description":"Hive UDF"},
-    
{"name":"column","type":"string","level":3,"parent":"table","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Column","description":"Hive Column"}
+    
{"name":"database","type":"select2","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Database","description":"Hive Database"},
+    
{"name":"table","type":"select2","level":2,"parent":"database","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Table","description":"Hive Table"},
+    
{"name":"udf","type":"select2","level":2,"parent":"database","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 UDF","description":"Hive UDF"},
+    
{"name":"column","type":"select2","level":3,"parent":"table","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive
 Column","description":"Hive Column"}
   ],
   "accessTypes":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/resources/service-defs/ranger-servicedef-knox.json
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/resources/service-defs/ranger-servicedef-knox.json 
b/plugin-common/src/main/resources/service-defs/ranger-servicedef-knox.json
index 7ce09ff..d12b9c9 100644
--- a/plugin-common/src/main/resources/service-defs/ranger-servicedef-knox.json
+++ b/plugin-common/src/main/resources/service-defs/ranger-servicedef-knox.json
@@ -20,8 +20,8 @@
   ],
   "resources":
   [
-    
{"name":"topology","type":"string","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Knox
 Topology","description":"Knox Topology"},
-    
{"name":"service","type":"string","level":2,"parent":"topology","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Knox
 Service","description":"Knox Service"}
+    
{"name":"topology","type":"select2","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Knox
 Topology","description":"Knox Topology"},
+    
{"name":"service","type":"select2","level":2,"parent":"topology","mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Knox
 Service","description":"Knox Service"}
   ],
   "accessTypes":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/plugin-common/src/main/resources/service-defs/ranger-servicedef-storm.json
----------------------------------------------------------------------
diff --git 
a/plugin-common/src/main/resources/service-defs/ranger-servicedef-storm.json 
b/plugin-common/src/main/resources/service-defs/ranger-servicedef-storm.json
index 6a7d8bb..5475dea 100644
--- a/plugin-common/src/main/resources/service-defs/ranger-servicedef-storm.json
+++ b/plugin-common/src/main/resources/service-defs/ranger-servicedef-storm.json
@@ -20,7 +20,7 @@
   ],
   "resources":
   [
-    
{"name":"topology","type":"string","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Storm
 Topology","description":"Storm Topology"}
+    
{"name":"topology","type":"select2","level":1,"mandatory":true,"lookupSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Storm
 Topology","description":"Storm Topology"}
   ],
   "accessTypes":
   [

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js 
b/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js
index c7e876a..dfc9c4a 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/GroupPermList.js
@@ -94,7 +94,7 @@ define(function(require) {
                        }
                        
                        
-                       this.accessItems = _.map(this.getPerms(), 
function(perm){ return {'type':perm.label,value : false}});
+                       this.accessItems = _.map(this.getPerms(), 
function(perm){ if(!_.isUndefined(perm)) return {'type':perm.label,value : 
false}});
                },
                groupDropDownChange : function(){
                        var that = this;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
index 15ddd8e..bd2b71e 100644
--- 
a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
+++ 
b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyCreate.js
@@ -101,10 +101,12 @@ define(function(require){
                        this.params = {};
                },
                initializeServiceDef : function(){
+                       
                        var service = 
_.find(XAEnums.ServiceType,function(service){
                                return service.label.toUpperCase() == 
this.rangerService.get('type').toUpperCase();
                        },this);
-                       this.rangerServiceDefModel      = new 
RangerServiceDef({ id : service.value });
+                       this.rangerServiceDefModel      = new 
RangerServiceDef();
+                       this.rangerServiceDefModel.url = 
"service/plugins/definitions/name/"+this.rangerService.get('type');
                        this.rangerServiceDefModel.fetch({
                                cache : false,
                                async : false

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/security-admin/src/main/webapp/scripts/views/policies/UserPermList.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/policies/UserPermList.js 
b/security-admin/src/main/webapp/scripts/views/policies/UserPermList.js
index 59b7eed..f7879ad 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/UserPermList.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/UserPermList.js
@@ -93,7 +93,7 @@ define(function(require) {
                        this.createSelectUserDropDown();
                        this.userDropDownChange();
                        
-                       this.accessItems = _.map(this.getPerms(), 
function(perm){ return {'type':perm.label,'value': false}});
+                       this.accessItems = _.map(this.getPerms(), 
function(perm){ if(!_.isUndefined(perm)) return {'type':perm.label,'value': 
false}});
                },
                checkDirtyFieldForDropDown : function(e){
                        //that.model.has('groupId')

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js 
b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
index de07088..6027b1e 100644
--- a/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
+++ b/security-admin/src/main/webapp/scripts/views/service/ServiceForm.js
@@ -156,13 +156,15 @@ define(function(require){
                                        that.model.unset(obj.name);
                                }
                        });
-                       this.model.set('configs',JSON.stringify(config));
-                       
+                       //this.model.set('configs',JSON.stringify(config));
+                       this.model.set('configs',config);
+
                        //Set service type
-                       _.each(XAEnums.AssetType, function(asset){
+                       
this.model.set('type',this.rangerServiceDefModel.get('name'))
+                       /*_.each(XAEnums.AssetType, function(asset){
                                if(asset.label.toUpperCase() == 
this.rangerServiceDefModel.get('name').toUpperCase())
                                        this.model.set('type',asset.label)
-                       },this);
+                       },this);*/
 //                     
                        //Set isEnabled
                        if(parseInt(this.model.get('isEnabled')) == 
XAEnums.ActiveStatus.STATUS_ENABLED.value)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/665af618/security-admin/src/main/webapp/templates/helpers/XAHelpers.js
----------------------------------------------------------------------
diff --git a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js 
b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js
index d9618bb..dff2bfe 100644
--- a/security-admin/src/main/webapp/templates/helpers/XAHelpers.js
+++ b/security-admin/src/main/webapp/templates/helpers/XAHelpers.js
@@ -484,13 +484,13 @@
        Handlebars.registerHelper('getServices', function(services, serviceDef) 
{
                var XAEnums                     = require('utils/XAEnums');
                var tr = '';
-               var serviceType = serviceDef.get('name').toUpperCase();
-               _.each(XAEnums.AssetType, function(asset){
+               var serviceType = serviceDef.get('name');
+               /*_.each(XAEnums.AssetType, function(asset){
                        if(asset.label.toUpperCase() == 
serviceType.toUpperCase()){
                                serviceType = asset.label;
                                return;
                        }
-               });
+               });*/
                
                if(!_.isUndefined(services[serviceType])){
                        _.each(services[serviceType],function(serv){

Reply via email to