You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/01/07 20:32:09 UTC

[10/27] incubator-ranger git commit: RANGER-203: Add deserializer for Map

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 <gb...@gmail.com>
Authored: Tue Jan 6 10:31:02 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
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){