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/03/02 06:21:41 UTC

incubator-ranger git commit: RANGER-279: 1) updated stack model with addition of following attributes to support UI input validation: ServiceConfigDef.validationRegEx ServiceConfigDef.validationMessage ServiceConfigDef.uiHint ServiceConfigDef.rbK

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 78c61a601 -> 210e23606


RANGER-279:
1) updated stack model with addition of following attributes to support
UI input validation:
  ServiceConfigDef.validationRegEx
  ServiceConfigDef.validationMessage
  ServiceConfigDef.uiHint
  ServiceConfigDef.rbKeyValidationMessage

  ResourceDef.validationRegEx
  ResourceDef.validationMessage
  ResourceDef.uiHint
  ResourceDef.rbKeyValidationMessage

  PolicyConditionDef.validationRegEx
  PolicyConditionDef.validationMessage
  PolicyConditionDef.uiHint
  PolicyConditionDef.rbKeyValidationMessage

2) Reformatted embedded servicedef JSON files

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

Branch: refs/heads/master
Commit: 210e236065547ae64c47ac61f47aa27b0e2752e0
Parents: 78c61a6
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Sun Mar 1 18:56:09 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Sun Mar 1 18:56:09 2015 -0800

----------------------------------------------------------------------
 .../ranger/plugin/model/RangerServiceDef.java   | 212 +++++++++++--
 .../service-defs/ranger-servicedef-hbase.json   | 262 ++++++++++++---
 .../service-defs/ranger-servicedef-hdfs.json    | 284 +++++++++++++----
 .../service-defs/ranger-servicedef-hive.json    | 315 ++++++++++++++-----
 .../service-defs/ranger-servicedef-knox.json    | 156 +++++++--
 .../service-defs/ranger-servicedef-storm.json   | 205 +++++++++---
 .../service-defs/ranger-servicedef-yarn.json    | 195 +++++++-----
 .../db/mysql/patches/009-updated_schema.sql     |  14 +-
 .../db/oracle/patches/009-updated_schema.sql    |  14 +-
 .../java/org/apache/ranger/entity/XXDBBase.java |  10 +
 .../ranger/entity/XXPolicyConditionDef.java     | 105 +++++++
 .../org/apache/ranger/entity/XXResourceDef.java | 111 ++++++-
 .../ranger/entity/XXServiceConfigDef.java       | 106 ++++++-
 .../service/RangerServiceDefServiceBase.java    |  24 ++
 14 files changed, 1629 insertions(+), 384 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/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 ab80138..91e3b48 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
@@ -629,33 +629,39 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerServiceConfigDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
-		private String  name             = null;
-		private String  type             = null;
-		private String  subType          = null;
-		private Boolean mandatory        = null;
-		private String  defaultValue     = null;
-		private String  validationRegEx  = null;
-		private String  label            = null;
-		private String  description      = null;
-		private String  rbKeyLabel       = null;
-		private String  rbKeyDescription = null;
+		private String  name              = null;
+		private String  type              = null;
+		private String  subType           = null;
+		private Boolean mandatory         = null;
+		private String  defaultValue      = null;
+		private String  validationRegEx   = null;
+		private String  validationMessage = null;
+		private String  uiHint            = null;
+		private String  label             = null;
+		private String  description       = null;
+		private String  rbKeyLabel        = null;
+		private String  rbKeyDescription  = null;
+		private String  rbKeyValidationMessage = null;
 
 
 		public RangerServiceConfigDef() {
-			this(null, null, null, null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerServiceConfigDef(String name, String type, String subType, Boolean mandatory, String defaultValue, String validationRegEx, String label, String description, String rbKeyLabel, String rbKeyDescription) {
+		public RangerServiceConfigDef(String name, String type, String subType, Boolean mandatory, String defaultValue, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
 			setName(name);
 			setType(type);
 			setSubType(subType);
 			setMandatory(mandatory);
 			setDefaultValue(defaultValue);
 			setValidationRegEx(validationRegEx);
+			setValidationMessage(validationMessage);
+			setUiHint(uiHint);
 			setLabel(label);
 			setDescription(description);
 			setRbKeyLabel(rbKeyLabel);
 			setRbKeyDescription(rbKeyDescription);
+			setRbKeyValidationMessage(rbKeyValidationMessage);
 		}
 
 		/**
@@ -743,6 +749,34 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the validationMessage
+		 */
+		public String getValidationMessage() {
+			return validationMessage;
+		}
+
+		/**
+		 * @param validationMessage the validationMessage to set
+		 */
+		public void setValidationMessage(String validationMessage) {
+			this.validationMessage = validationMessage;
+		}
+
+		/**
+		 * @return the uiHint
+		 */
+		public String getUiHint() {
+			return uiHint;
+		}
+
+		/**
+		 * @param uiHint the uiHint to set
+		 */
+		public void setUiHint(String uiHint) {
+			this.uiHint = uiHint;
+		}
+
+		/**
 		 * @return the label
 		 */
 		public String getLabel() {
@@ -798,6 +832,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			this.rbKeyDescription = rbKeyDescription;
 		}
 
+		/**
+		 * @return the rbKeyValidationMessage
+		 */
+		public String getRbKeyValidationMessage() {
+			return rbKeyValidationMessage;
+		}
+
+		/**
+		 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+		 */
+		public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+			this.rbKeyValidationMessage = rbKeyValidationMessage;
+		}
+
 		@Override
 		public String toString( ) {
 			StringBuilder sb = new StringBuilder();
@@ -815,10 +863,13 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			sb.append("mandatory={").append(mandatory).append("} ");
 			sb.append("defaultValue={").append(defaultValue).append("} ");
 			sb.append("validationRegEx={").append(validationRegEx).append("} ");
+			sb.append("validationMessage={").append(validationMessage).append("} ");
+			sb.append("uiHint={").append(uiHint).append("} ");
 			sb.append("label={").append(label).append("} ");
 			sb.append("description={").append(description).append("} ");
 			sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
 			sb.append("rbKeyDescription={").append(rbKeyDescription).append("} ");
+			sb.append("rbKeyValidationMessage={").append(rbKeyValidationMessage).append("} ");
 			sb.append("}");
 
 			return sb;
@@ -840,17 +891,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		private String  matcher            = null;
 		private String  matcherOptions     = null;
 		private String  validationRegEx    = null;
+		private String  validationMessage  = null;
+		private String  uiHint             = null;
 		private String  label              = null;
 		private String  description        = null;
 		private String  rbKeyLabel         = null;
 		private String  rbKeyDescription   = null;
+		private String rbKeyValidationMessage = null;
 
 
 		public RangerResourceDef() {
-			this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerResourceDef(String name, String type, Integer level, String parent, Boolean mandatory, Boolean lookupSupported, Boolean recursiveSupported, Boolean excludesSupported, String matcher, String matcherOptions, String validationRegEx, String label, String description, String rbKeyLabel, String rbKeyDescription) {
+		public RangerResourceDef(String name, String type, Integer level, String parent, Boolean mandatory, Boolean lookupSupported, Boolean recursiveSupported, Boolean excludesSupported, String matcher, String matcherOptions, String validationRegEx, String validationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
 			setName(name);
 			setType(type);
 			setLevel(level);
@@ -862,10 +916,13 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			setMatcher(matcher);
 			setMatcher(matcherOptions);
 			setValidationRegEx(validationRegEx);
+			setValidationMessage(validationMessage);
+			setUiHint(uiHint);
 			setLabel(label);
 			setDescription(description);
 			setRbKeyLabel(rbKeyLabel);
 			setRbKeyDescription(rbKeyDescription);
+			setRbKeyValidationMessage(rbKeyValidationMessage);
 		}
 
 		/**
@@ -1023,6 +1080,34 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the validationMessage
+		 */
+		public String getValidationMessage() {
+			return validationMessage;
+		}
+
+		/**
+		 * @param validationMessage the validationMessage to set
+		 */
+		public void setValidationMessage(String validationMessage) {
+			this.validationMessage = validationMessage;
+		}
+
+		/**
+		 * @return the uiHint
+		 */
+		public String getUiHint() {
+			return uiHint;
+		}
+
+		/**
+		 * @param uiHint the uiHint to set
+		 */
+		public void setUiHint(String uiHint) {
+			this.uiHint = uiHint;
+		}
+
+		/**
 		 * @return the label
 		 */
 		public String getLabel() {
@@ -1078,6 +1163,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			this.rbKeyDescription = rbKeyDescription;
 		}
 
+		/**
+		 * @return the rbKeyValidationMessage
+		 */
+		public String getRbKeyValidationMessage() {
+			return rbKeyValidationMessage;
+		}
+
+		/**
+		 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+		 */
+		public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+			this.rbKeyValidationMessage = rbKeyValidationMessage;
+		}
+
 		@Override
 		public String toString( ) {
 			StringBuilder sb = new StringBuilder();
@@ -1100,10 +1199,13 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			sb.append("matcher={").append(matcher).append("} ");
 			sb.append("matcherOptions={").append(matcherOptions).append("} ");
 			sb.append("validationRegEx={").append(validationRegEx).append("} ");
+			sb.append("validationMessage={").append(validationMessage).append("} ");
+			sb.append("uiHint={").append(uiHint).append("} ");
 			sb.append("label={").append(label).append("} ");
 			sb.append("description={").append(description).append("} ");
 			sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
 			sb.append("rbKeyDescription={").append(rbKeyDescription).append("} ");
+			sb.append("rbKeyValidationMessage={").append(rbKeyValidationMessage).append("} ");
 			sb.append("}");
 
 			return sb;
@@ -1236,40 +1338,39 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 	public static class RangerPolicyConditionDef implements java.io.Serializable {
 		private static final long serialVersionUID = 1L;
 
-		private String name             = null;
-		private String evaluator        = null;
-		private String evaluatorOptions = null;
-		private String validationRegEx  = null;
-		private String label            = null;
-		private String description      = null;
-		private String rbKeyLabel       = null;
-		private String rbKeyDescription = null;
+		private String name              = null;
+		private String evaluator         = null;
+		private String evaluatorOptions  = null;
+		private String validationRegEx   = null;
+		private String validationMessage = null;
+		private String uiHint            = null;
+		private String label             = null;
+		private String description       = null;
+		private String rbKeyLabel        = null;
+		private String rbKeyDescription  = null;
+		private String rbKeyValidationMessage = null;
 
 
 		public RangerPolicyConditionDef() {
-			this(null, null, null, null, null, null, null);
+			this(null, null, null, null, null, null, null, null, null, null, null);
 		}
 
 		public RangerPolicyConditionDef(String name, String evaluator, String evaluatorOptions) {
-			this(name, evaluator, evaluatorOptions, null, null, null, null);
+			this(name, evaluator, evaluatorOptions, null, null, null, null, null, null, null, null);
 		}
 
-		public RangerPolicyConditionDef(String name, String evaluator, String evaluatorOptions, String label) {
-			this(name, evaluator, evaluatorOptions, label, null, null, null);
-		}
-
-		public RangerPolicyConditionDef(String name, String evaluator, String evaluatorOptions, String label, String description) {
-			this(name, evaluator, evaluatorOptions, label, description, null, null);
-		}
-
-		public RangerPolicyConditionDef(String name, String evaluator, String evaluatorOptions, String label, String description, String rbKeyLabel, String rbKeyDescription) {
+		public RangerPolicyConditionDef(String name, String evaluator, String evaluatorOptions, String validationRegEx, String vaidationMessage, String uiHint, String label, String description, String rbKeyLabel, String rbKeyDescription, String rbKeyValidationMessage) {
 			setName(name);
 			setEvaluator(evaluator);
 			setEvaluatorOptions(evaluatorOptions);
+			setValidationRegEx(validationRegEx);
+			setValidationMessage(validationMessage);
+			setUiHint(uiHint);
 			setLabel(label);
 			setDescription(description);
 			setRbKeyLabel(rbKeyLabel);
 			setRbKeyDescription(rbKeyDescription);
+			setRbKeyValidationMessage(rbKeyValidationMessage);
 		}
 
 		/**
@@ -1329,6 +1430,34 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 		}
 
 		/**
+		 * @return the validationMessage
+		 */
+		public String getValidationMessage() {
+			return validationMessage;
+		}
+
+		/**
+		 * @param validationMessage the validationMessage to set
+		 */
+		public void setValidationMessage(String validationMessage) {
+			this.validationMessage = validationMessage;
+		}
+
+		/**
+		 * @return the uiHint
+		 */
+		public String getUiHint() {
+			return uiHint;
+		}
+
+		/**
+		 * @param uiHint the uiHint to set
+		 */
+		public void setUiHint(String uiHint) {
+			this.uiHint = uiHint;
+		}
+
+		/**
 		 * @return the label
 		 */
 		public String getLabel() {
@@ -1384,6 +1513,20 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			this.rbKeyDescription = rbKeyDescription;
 		}
 
+		/**
+		 * @return the rbKeyValidationMessage
+		 */
+		public String getRbKeyValidationMessage() {
+			return rbKeyValidationMessage;
+		}
+
+		/**
+		 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+		 */
+		public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+			this.rbKeyValidationMessage = rbKeyValidationMessage;
+		}
+
 		@Override
 		public String toString( ) {
 			StringBuilder sb = new StringBuilder();
@@ -1399,10 +1542,13 @@ public class RangerServiceDef extends RangerBaseModelObject implements java.io.S
 			sb.append("evaluator={").append(evaluator).append("} ");
 			sb.append("evaluatorOptions={").append(evaluatorOptions).append("} ");
 			sb.append("validationRegEx={").append(validationRegEx).append("} ");
+			sb.append("validationMessage={").append(validationMessage).append("} ");
+			sb.append("uiHint={").append(uiHint).append("} ");
 			sb.append("label={").append(label).append("} ");
 			sb.append("description={").append(description).append("} ");
 			sb.append("rbKeyLabel={").append(rbKeyLabel).append("} ");
 			sb.append("rbKeyDescription={").append(rbKeyDescription).append("} ");
+			sb.append("rbKeyValidationMessage={").append(rbKeyValidationMessage).append("} ");
 			sb.append("}");
 
 			return sb;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
index f65d896..c35fffb 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hbase.json
@@ -1,50 +1,214 @@
 {
-  "id":2,
-  "name":"hbase",
-  "implClass":"org.apache.ranger.services.hbase.RangerServiceHBase",
-  "label":"HBase",
-  "description":"HBase",
-  "guid":"d6cea1f0-2509-4791-8fc1-7b092399ba3b",
-  "createTime":"20141208-22:50:22.426--0800",
-  "updateTime":"20141208-22:50:22.426--0800",
-  "version":1,
-  "enums":
-  [
-    {
-      "name":"authnType",
-      "elements":
-      [
-        {"name":"simple",  "label":"Simple"},
-        {"name":"kerberos","label":"Kerberos"}
-      ],
-      "defaultIndex":0
-    }
-  ],
-  "configs":
-  [
-    {"name":"username",                           "type":"string",  "subType":"",         "mandatory":true, "label":"Username"},
-    {"name":"password",                           "type":"password","subType":"",         "mandatory":true, "label":"Password"},
-    {"name":"hadoop.security.authentication",     "type":"enum",    "subType":"authnType","mandatory":true, "defaultValue":"simple"},
-    {"name":"hbase.master.kerberos.principal",    "type":"string",  "subType":"",         "mandatory":false,"defaultValue":""},
-    {"name":"hbase.security.authentication",      "type":"enum",    "subType":"authnType","mandatory":true, "defaultValue":"simple"},
-    {"name":"hbase.zookeeper.property.clientPort","type":"int",     "subType":"",         "mandatory":true, "defaultValue":"2181"},
-    {"name":"hbase.zookeeper.quorum",             "type":"string",  "subType":"",         "mandatory":true, "defaultValue":""},
-    {"name":"zookeeper.znode.parent",             "type":"string",  "subType":"",         "mandatory":true, "defaultValue":"/hbase"}
-  ],
-  "resources":
-  [
-    {"name":"table",        "type":"string","level":1,"parent":"",             "mandatory":true,"lookupSupported":true, "recursiveSupported":false,"excludesSupported":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, "recursiveSupported":false,"excludesSupported":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":true,"recursiveSupported":false,"excludesSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"HBase Column","description":"HBase Column"}
-  ],
-  "accessTypes":
-  [
-    {"name":"read",  "label":"Read"},
-    {"name":"write", "label":"Write"},
-    {"name":"create","label":"Create"},
-    {"name":"admin", "label":"Admin","impliedGrants":["read","write","create"]}
-  ],
-  "policyConditions":
-  [
-  ]
-}
+	"id": 2,
+	"name": "hbase",
+	"implClass": "org.apache.ranger.services.hbase.RangerServiceHBase",
+	"label": "HBase",
+	"description": "HBase",
+	"guid": "d6cea1f0-2509-4791-8fc1-7b092399ba3b",
+	"createTime": "20141208-22:50:22.426--0800",
+	"updateTime": "20141208-22:50:22.426--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "table",
+			"type": "string",
+			"level": 1,
+			"parent": "",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "HBase Table",
+			"description": "HBase Table"
+		},
+
+		{
+			"name": "column-family",
+			"type": "string",
+			"level": 2,
+			"parent": "table",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "HBase Column-family",
+			"description": "HBase Column-family"
+		},
+
+		{
+			"name": "column",
+			"type": "string",
+			"level": 3,
+			"parent": "column-family",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "HBase Column",
+			"description": "HBase Column"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "read",
+			"label": "Read"
+		},
+
+		{
+			"name": "write",
+			"label": "Write"
+		},
+
+		{
+			"name": "create",
+			"label": "Create"
+		},
+
+		{
+			"name": "admin",
+			"label": "Admin",
+			"impliedGrants": 
+			[
+				"read",
+				"write",
+				"create"
+			]
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"subType": "",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"subType": "",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "hadoop.security.authentication",
+			"type": "enum",
+			"subType": "authnType",
+			"mandatory": true,
+			"defaultValue": "simple",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "hbase.master.kerberos.principal",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"defaultValue": ""
+		},
+
+		{
+			"name": "hbase.security.authentication",
+			"type": "enum",
+			"subType": "authnType",
+			"mandatory": true,
+			"defaultValue": "simple",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "hbase.zookeeper.property.clientPort",
+			"type": "int",
+			"subType": "",
+			"mandatory": true,
+			"defaultValue": "2181",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "hbase.zookeeper.quorum",
+			"type": "string",
+			"subType": "",
+			"mandatory": true,
+			"defaultValue": "",
+			"validationRegEx":"",
+			"validationMessage": ""
+		},
+
+		{
+			"name": "zookeeper.znode.parent",
+			"type": "string",
+			"subType": "",
+			"mandatory": true,
+			"defaultValue": "/hbase",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		}
+	],
+
+	"enums": 
+	[
+		{
+			"name": "authnType",
+			"elements": 
+			[
+				{
+					"name": "simple",
+					"label": "Simple"
+				},
+
+				{
+					"name": "kerberos",
+					"label": "Kerberos"
+				}
+			],
+
+			"defaultIndex": 0
+		}
+	],
+
+	"contextEnrichers": 
+	[
+		
+	],
+
+	"policyConditions": 
+	[
+		
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
index 67583ed..aed776c 100755
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hdfs.json
@@ -1,60 +1,226 @@
 {
-  "id":1,
-  "name":"hdfs",
-  "implClass":"org.apache.ranger.services.hdfs.RangerServiceHdfs",
-  "label":"HDFS Repository",
-  "description":"HDFS Repository",
-  "guid":"0d047247-bafe-4cf8-8e9b-d5d377284b2d",
-  "createTime":"20141208-22:04:25.233--0800",
-  "updateTime":"20141208-22:04:25.233--0800",
-  "version":1,
-  "enums":
-  [
-    {
-      "name":"authnType",
-      "elements":
-      [
-        {"name":"simple",  "label":"Simple"},
-        {"name":"kerberos","label":"Kerberos"}
-      ],
-      "defaultIndex":0
-    },
-    {
-      "name":"rpcProtection",
-      "elements":
-      [
-        {"name":"authentication","label":"Authentication"},
-        {"name":"integrity",     "label":"Integrity"},
-        {"name":"privacy",       "label":"Privacy"}
-      ],
-      "defaultIndex":0
-    }
-  ],
-  "configs":
-  [
-    {"name":"username",                                "type":"string",  "subType":"",             "mandatory":true, "label":"Username"},
-    {"name":"password",                                "type":"password","subType":"",             "mandatory":true, "label":"Password"},
-    {"name":"fs.default.name",                         "type":"string",  "subType":"",             "mandatory":true, "label":"Namenode URL"},
-    {"name":"hadoop.security.authorization",           "type":"bool",    "subType":"YesTrue:NoFalse",    "mandatory":true, "defaultValue":"false"},
-    {"name":"hadoop.security.authentication",          "type":"enum",    "subType":"authnType",    "mandatory":true, "defaultValue":"simple"},
-    {"name":"hadoop.security.auth_to_local",           "type":"string",  "subType":"",             "mandatory":false},
-    {"name":"dfs.datanode.kerberos.principal",         "type":"string",  "subType":"",             "mandatory":false},
-    {"name":"dfs.namenode.kerberos.principal",          "type":"string", "subType":"",             "mandatory":false},
-    {"name":"dfs.secondary.namenode.kerberos.principal","type":"string", "subType":"",             "mandatory":false},
-    {"name":"hadoop.rpc.protection",                    "type":"enum",   "subType":"rpcProtection","mandatory":false,"defaultValue":"authentication"},
-    {"name":"certificate.cn",                           "type":"string", "subType":"",             "mandatory":false,"label":"Common Name for Certificate"}
-  ],
-  "resources":
-  [
-    {"name":"path","type":"path","level":1,"parent":"","mandatory":true,"lookupSupported":true,"recursiveSupported":true,"excludesSupported":false,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Resource Path","description":"HDFS file or directory path"}
-  ],
-  "accessTypes":
-  [
-    {"name":"read","label":"Read"},
-    {"name":"write","label":"Write"},
-    {"name":"execute","label":"Execute"}
-  ],
-  "policyConditions":
-  [
-  ]
-}
+	"id": 1,
+	"name": "hdfs",
+	"implClass": "org.apache.ranger.services.hdfs.RangerServiceHdfs",
+	"label": "HDFS Repository",
+	"description": "HDFS Repository",
+	"guid": "0d047247-bafe-4cf8-8e9b-d5d377284b2d",
+	"createTime": "20141208-22:04:25.233--0800",
+	"updateTime": "20141208-22:04:25.233--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "path",
+			"type": "path",
+			"level": 1,
+			"parent": "",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": true,
+			"excludesSupported": false,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Resource Path",
+			"description": "HDFS file or directory path"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "read",
+			"label": "Read"
+		},
+
+		{
+			"name": "write",
+			"label": "Write"
+		},
+
+		{
+			"name": "execute",
+			"label": "Execute"
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"subType": "",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"subType": "",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "fs.default.name",
+			"type": "string",
+			"subType": "",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Namenode URL"
+		},
+
+		{
+			"name": "hadoop.security.authorization",
+			"type": "bool",
+			"subType": "YesTrue:NoFalse",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Authorization Enabled",
+			"defaultValue": "false"
+		},
+
+		{
+			"name": "hadoop.security.authentication",
+			"type": "enum",
+			"subType": "authnType",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Authentication Type",
+			"defaultValue": "simple"
+		},
+
+		{
+			"name": "hadoop.security.auth_to_local",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "dfs.datanode.kerberos.principal",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "dfs.namenode.kerberos.principal",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "dfs.secondary.namenode.kerberos.principal",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "hadoop.rpc.protection",
+			"type": "enum",
+			"subType": "rpcProtection",
+			"mandatory": false,
+			"label": "RPC Protection Type",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"defaultValue": "authentication"
+		},
+
+		{
+			"name": "certificate.cn",
+			"type": "string",
+			"subType": "",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Common Name for Certificate"
+		}
+	],
+
+	"enums": 
+	[
+		{
+			"name": "authnType",
+			"elements": 
+			[
+				{
+					"name": "simple",
+					"label": "Simple"
+				},
+
+				{
+					"name": "kerberos",
+					"label": "Kerberos"
+				}
+			],
+
+			"defaultIndex": 0
+		},
+
+		{
+			"name": "rpcProtection",
+			"elements": 
+			[
+				{
+					"name": "authentication",
+					"label": "Authentication"
+				},
+
+				{
+					"name": "integrity",
+					"label": "Integrity"
+				},
+
+				{
+					"name": "privacy",
+					"label": "Privacy"
+				}
+			],
+
+			"defaultIndex": 0
+		}
+	],
+
+	"contextEnrichers": 
+	[
+		
+	],
+
+	"policyConditions": 
+	[
+		
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
index f702241..704ae60 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-hive.json
@@ -1,80 +1,237 @@
 {
-  "id":3,
-  "name":"hive",
-  "implClass":"org.apache.ranger.services.hive.RangerServiceHive",
-  "label":"Hive Server2",
-  "description":"Hive Server2",
-  "guid":"3e1afb5a-184a-4e82-9d9c-87a5cacc243c",
-  "createTime":"20141208-22:51:20.732--0800",
-  "updateTime":"20141208-22:51:20.732--0800",
-  "version":1,
-  "enums":
-  [
-  ],
-  "configs":
-  [
-    {"name":"username",            "type":"string",  "mandatory":true, "label":"Username"},
-    {"name":"password",            "type":"password","mandatory":true, "label":"Password"},
-    {"name":"jdbc.driverClassName","type":"string",  "mandatory":true, "defaultValue":"org.apache.hive.jdbc.HiveDriver"},
-    {"name":"jdbc.url",            "type":"string",  "mandatory":true, "defaultValue":""},
-    {"name":"certificate.cn",      "type":"string",  "mandatory":false,"label":"Common Name for Certificate"}
-  ],
-  "resources":
-  [
-    {"name":"database","type":"string","level":1,"parent":"",        "mandatory":true,"lookupSupported":true,"recursiveSupported":false,"excludesSupported":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,"recursiveSupported":false,"excludesSupported":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,"recursiveSupported":false,"excludesSupported":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,"recursiveSupported":false,"excludesSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Hive Column","description":"Hive Column"}
-  ],
-  "accessTypes":
-  [
-    {"name":"select","label":"select"},
-    {"name":"update","label":"update"},
-    {"name":"create","label":"Create"},
-    {"name":"drop",  "label":"Drop"},
-    {"name":"alter", "label":"Alter"},
-    {"name":"index", "label":"Index"},
-    {"name":"lock",  "label":"Lock"},
-    {"name":"all",   "label":"All"}
-  ],
-  "contextEnrichers":
-  [
-    {
-    	"name":"country-provider",
-    	"enricher":"org.apache.ranger.plugin.contextenricher.RangerCountryProvider",
-    	"enricherOptions":"contextName=COUNTRY;dataFile=/etc/ranger/data/userCountry.properties"
-    },
-    {
-    	"name":"project-provider",
-    	"enricher":"org.apache.ranger.plugin.contextenricher.RangerProjectProvider",
-    	"enricherOptions":"contextName=PROJECT;dataFile=/etc/ranger/data/userProject.properties"
-    }
-  ]
-  ,
-  "policyConditions":
-  [
-    {
-    	"name":"country",
-    	"evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerSimpleMatcher",
-    	"evaluatorOptions":"COUNTRY",
-    	"label":"Countries",
-    	"description":"Countries"
-    }
-    ,
-    {
-    	"name":"project",
-    	"evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerSimpleMatcher",
-    	"evaluatorOptions":"PROJECT",
-    	"label":"Projects",
-    	"description":"Projects"
-    }
-    ,
-    {
-    	"name":"timeOfDay",
-    	"evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerTimeOfDayMatcher",
-    	"evaluatorOptions":"",
-    	"label":"Time of Day",
-    	"description":"Time of Day"
-    }
-  ]
-}
+	"id": 3,
+	"name": "hive",
+	"implClass": "org.apache.ranger.services.hive.RangerServiceHive",
+	"label": "Hive Server2",
+	"description": "Hive Server2",
+	"guid": "3e1afb5a-184a-4e82-9d9c-87a5cacc243c",
+	"createTime": "20141208-22:51:20.732--0800",
+	"updateTime": "20141208-22:51:20.732--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "database",
+			"type": "string",
+			"level": 1,
+			"parent": "",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Hive Database",
+			"description": "Hive Database"
+		},
+
+		{
+			"name": "table",
+			"type": "string",
+			"level": 2,
+			"parent": "database",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Hive Table",
+			"description": "Hive Table"
+		},
+
+		{
+			"name": "udf",
+			"type": "string",
+			"level": 2,
+			"parent": "database",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Hive UDF",
+			"description": "Hive UDF"
+		},
+
+		{
+			"name": "column",
+			"type": "string",
+			"level": 3,
+			"parent": "table",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Hive Column",
+			"description": "Hive Column"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "select",
+			"label": "select"
+		},
+
+		{
+			"name": "update",
+			"label": "update"
+		},
+
+		{
+			"name": "create",
+			"label": "Create"
+		},
+
+		{
+			"name": "drop",
+			"label": "Drop"
+		},
+
+		{
+			"name": "alter",
+			"label": "Alter"
+		},
+
+		{
+			"name": "index",
+			"label": "Index"
+		},
+
+		{
+			"name": "lock",
+			"label": "Lock"
+		},
+
+		{
+			"name": "all",
+			"label": "All"
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "jdbc.driverClassName",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"defaultValue": "org.apache.hive.jdbc.HiveDriver"
+		},
+
+		{
+			"name": "jdbc.url",
+			"type": "string",
+			"mandatory": true,
+			"defaultValue": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "certificate.cn",
+			"type": "string",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Common Name for Certificate"
+		}
+	],
+
+	"enums": 
+	[
+		
+	],
+
+	"contextEnrichers": 
+	[
+		{
+			"name": "country-provider",
+			"enricher": "org.apache.ranger.plugin.contextenricher.RangerCountryProvider",
+			"enricherOptions": "contextName=COUNTRY;dataFile=/etc/ranger/data/userCountry.properties"
+		},
+
+		{
+			"name": "project-provider",
+			"enricher": "org.apache.ranger.plugin.contextenricher.RangerProjectProvider",
+			"enricherOptions": "contextName=PROJECT;dataFile=/etc/ranger/data/userProject.properties"
+		}
+	],
+
+	"policyConditions": 
+	[
+		{
+			"name": "country",
+			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerSimpleMatcher",
+			"evaluatorOptions": "COUNTRY",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Countries",
+			"description": "Countries"
+		},
+
+		{
+			"name": "project",
+			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerSimpleMatcher",
+			"evaluatorOptions": "PROJECT",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Projects",
+			"description": "Projects"
+		},
+
+		{
+			"name": "timeOfDay",
+			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerTimeOfDayMatcher",
+			"evaluatorOptions": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Time of Day",
+			"description": "Time of Day"
+		}
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
index 5857285..947b109 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-knox.json
@@ -1,34 +1,124 @@
 {
-  "id":5,
-  "name":"knox",
-  "implClass":"org.apache.ranger.services.knox.RangerServiceKnox",
-  "label":"Knox Gateway",
-  "description":"Knox Gateway",
-  "guid":"84b481b5-f23b-4f71-b8b6-ab33977149ca",
-  "createTime":"20141208-22:48:42.238--0800",
-  "updateTime":"20141208-22:48:42.238--0800",
-  "version":1,
-  "enums":
-  [
-  ],
-  "configs":
-  [
-    {"name":"username",      "type":"string",  "mandatory":true, "label":"Username"},
-    {"name":"password",      "type":"password","mandatory":true, "label":"Password"},
-    {"name":"knox.url",      "type":"string",  "mandatory":true, "defaultValue":""},
-    {"name":"certificate.cn","type":"string",  "mandatory":false,"label":"Common Name for Certificate"}
-  ],
-  "resources":
-  [
-    {"name":"topology","type":"string","level":1,"parent":"",        "mandatory":true,"lookupSupported":true,"recursiveSupported":false,"excludesSupported":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,"recursiveSupported":false,"excludesSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Knox Service","description":"Knox Service"}
-  ],
-  "accessTypes":
-  [
-    {"name":"allow","label":"Allow"}
-  ],
-  "policyConditions":
-  [
-    {"name":"ip-range","evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher","evaluatorOptions":"","label":"IP Address Range","description":"IP Address Range"}
-  ]
-}
+	"id": 5,
+	"name": "knox",
+	"implClass": "org.apache.ranger.services.knox.RangerServiceKnox",
+	"label": "Knox Gateway",
+	"description": "Knox Gateway",
+	"guid": "84b481b5-f23b-4f71-b8b6-ab33977149ca",
+	"createTime": "20141208-22:48:42.238--0800",
+	"updateTime": "20141208-22:48:42.238--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "topology",
+			"type": "string",
+			"level": 1,
+			"parent": "",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Knox Topology",
+			"description": "Knox Topology"
+		},
+
+		{
+			"name": "service",
+			"type": "string",
+			"level": 2,
+			"parent": "topology",
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Knox Service",
+			"description": "Knox Service"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "allow",
+			"label": "Allow"
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "knox.url",
+			"type": "string",
+			"mandatory": true,
+			"defaultValue": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":""
+		},
+
+		{
+			"name": "certificate.cn",
+			"type": "string",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Common Name for Certificate"
+		}
+	],
+
+	"enums": 
+	[
+		
+	],
+
+	"contextEnrichers": 
+	[
+		
+	],
+
+	"policyConditions": 
+	[
+		{
+			"name": "ip-range",
+			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
+			"evaluatorOptions": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "IP Address Range",
+			"description": "IP Address Range"
+		}
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
index 592eb35..506c9d3 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-storm.json
@@ -1,45 +1,162 @@
 {
-  "id":6,
-  "name":"storm",
-  "implClass":"org.apache.ranger.services.storm.RangerServiceStorm",
-  "label":"Storm",
-  "description":"Storm",
-  "guid":"2a60f427-edcf-4e20-834c-a9a267b5b963",
-  "createTime":"20141208-22:55:47.095--0800",
-  "updateTime":"20141208-22:55:47.095--0800",
-  "version":1,
-  "enums":
-  [
-  ],
-  "configs":
-  [
-    {"name":"username",      "type":"string",  "mandatory":true, "label":"Username"},
-    {"name":"password",      "type":"password","mandatory":true, "label":"Password"},
-    {"name":"nimbus.url",    "type":"string",  "mandatory":true, "label":"Nimbus URL","defaultValue":""},
-    {"name":"certificate.cn","type":"string",  "mandatory":false,"label":"Common Name for Certificate"}
-  ],
-  "resources":
-  [
-    {"name":"topology","type":"string","level":1,"mandatory":true,"lookupSupported":true,"recursiveSupported":false,"excludesSupported":true,"matcher":"org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher","matcherOptions":"wildCard=true;ignoreCase=true","label":"Storm Topology","description":"Storm Topology"}
-  ],
-  "accessTypes":
-  [
-    {"name":"submitTopology",      "label":"Submit Topology"},
-    {"name":"fileUpload",          "label":"File Upload"},
-    {"name":"getNimbusConf",      "label":"Get Nimbus Conf"},
-    {"name":"getClusterInfo",     "label":"Get Cluster Info"},
-    {"name":"fileDownload",        "label":"File Download"},
-    {"name":"killTopology",        "label":"Kill Topology"},
-    {"name":"rebalance",            "label":"Rebalance"},
-    {"name":"activate",             "label":"Activate"},
-    {"name":"deactivate",           "label":"Deactivate"},
-    {"name":"getTopologyConf",    "label":"Get Topology Conf"},
-    {"name":"getTopology",         "label":"Get Topology"},
-    {"name":"getUserTopology",    "label":"Get User Topology"},
-    {"name":"getTopologyInfo",    "label":"Get Topology Info"},
-    {"name":"uploadNewCredentials","label":"Upload New Credential"}
-  ],
-  "policyConditions":
-  [
-  ]
-}
+	"id": 6,
+	"name": "storm",
+	"implClass": "org.apache.ranger.services.storm.RangerServiceStorm",
+	"label": "Storm",
+	"description": "Storm",
+	"guid": "2a60f427-edcf-4e20-834c-a9a267b5b963",
+	"createTime": "20141208-22:55:47.095--0800",
+	"updateTime": "20141208-22:55:47.095--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "topology",
+			"type": "string",
+			"level": 1,
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": false,
+			"excludesSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Storm Topology",
+			"description": "Storm Topology"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "submitTopology",
+			"label": "Submit Topology"
+		},
+
+		{
+			"name": "fileUpload",
+			"label": "File Upload"
+		},
+
+		{
+			"name": "getNimbusConf",
+			"label": "Get Nimbus Conf"
+		},
+
+		{
+			"name": "getClusterInfo",
+			"label": "Get Cluster Info"
+		},
+
+		{
+			"name": "fileDownload",
+			"label": "File Download"
+		},
+
+		{
+			"name": "killTopology",
+			"label": "Kill Topology"
+		},
+
+		{
+			"name": "rebalance",
+			"label": "Rebalance"
+		},
+
+		{
+			"name": "activate",
+			"label": "Activate"
+		},
+
+		{
+			"name": "deactivate",
+			"label": "Deactivate"
+		},
+
+		{
+			"name": "getTopologyConf",
+			"label": "Get Topology Conf"
+		},
+
+		{
+			"name": "getTopology",
+			"label": "Get Topology"
+		},
+
+		{
+			"name": "getUserTopology",
+			"label": "Get User Topology"
+		},
+
+		{
+			"name": "getTopologyInfo",
+			"label": "Get Topology Info"
+		},
+
+		{
+			"name": "uploadNewCredentials",
+			"label": "Upload New Credential"
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "nimbus.url",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Nimbus URL",
+			"defaultValue": ""
+		},
+
+		{
+			"name": "certificate.cn",
+			"type": "string",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Common Name for Certificate"
+		}
+	],
+
+	"enums": 
+	[
+		
+	],
+
+	"contextEnrichers": 
+	[
+		
+	],
+
+	"policyConditions": 
+	[
+		
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
----------------------------------------------------------------------
diff --git a/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json b/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
index fc7d34f..a28ea50 100644
--- a/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
+++ b/agents-common/src/main/resources/service-defs/ranger-servicedef-yarn.json
@@ -1,82 +1,115 @@
 {
-  "id":7,
-  "name":"yarn",
-  "implClass":"org.apache.ranger.services.yarn.RangerServiceYarn",
-  "label":"YARN",
-  "description":"YARN",
-  "guid":"5b710438-edcf-4e20-834c-a9a267b5b963",
-  "createTime":"20141208-22:55:47.095--0800",
-  "updateTime":"20141208-22:55:47.095--0800",
-  "version":1,
-  "enums":
-  [
-  ],
-  "configs":
-  [
-    {
-      "name":"username",
-      "type":"string",
-      "mandatory":true,
-      "label":"Username"
-    },
-    {
-      "name":"password",
-      "type":"password",
-      "mandatory":true,
-      "label":"Password"
-    },
-    {
-      "name":"yarn.url",
-      "type":"string",
-      "mandatory":true,
-      "defaultValue":"",
-      "label":"YARN REST URL"
-    },
-    {
-      "name":"certificate.cn",
-      "type":"string",
-      "mandatory":false,
-      "label":"Common Name for Certificate"
-    }
-  ],
-  "resources":
-  [
-    {
-      "name":"queue",
-      "type":"string",
-      "level":1,
-      "mandatory":true,
-      "lookupSupported":true,
-      "recursiveSupported":true,
-      "matcher":"org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher",
-      "matcherOptions":"wildCard=true;ignoreCase=true;pathSeperatorChar=.",
-      "label":"Queue",
-      "description":"Queue"
-    }
-  ],
-  "accessTypes":
-  [
-    {
-      "name":"submit-app",
-      "label":"submit-app"
-    },
-    {
-      "name":"admin-queue",
-      "label":"admin-queue"
-    },
-    {
-      "name":"admin",
-      "label":"admin"
-    }
-  ],
-  "policyConditions":
-  [
-    {
-      "name":"ip-range",
-      "evaluator":"org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
-      "evaluatorOptions":"",
-      "label":"IP Address Range",
-      "description":"IP Address Range"
-    }
-  ]
-}
+	"id": 7,
+	"name": "yarn",
+	"implClass": "org.apache.ranger.services.yarn.RangerServiceYarn",
+	"label": "YARN",
+	"description": "YARN",
+	"guid": "5b710438-edcf-4e20-834c-a9a267b5b963",
+	"createTime": "20141208-22:55:47.095--0800",
+	"updateTime": "20141208-22:55:47.095--0800",
+	"version": 1,
+	"resources": 
+	[
+		{
+			"name": "queue",
+			"type": "string",
+			"level": 1,
+			"mandatory": true,
+			"lookupSupported": true,
+			"recursiveSupported": true,
+			"matcher": "org.apache.ranger.plugin.resourcematcher.RangerPathResourceMatcher",
+			"matcherOptions": "wildCard=true;ignoreCase=true;pathSeperatorChar=.",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Queue",
+			"description": "Queue"
+		}
+	],
+
+	"accessTypes": 
+	[
+		{
+			"name": "submit-app",
+			"label": "submit-app"
+		},
+
+		{
+			"name": "admin-queue",
+			"label": "admin-queue"
+		},
+
+		{
+			"name": "admin",
+			"label": "admin"
+		}
+	],
+
+	"configs": 
+	[
+		{
+			"name": "username",
+			"type": "string",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Username"
+		},
+
+		{
+			"name": "password",
+			"type": "password",
+			"mandatory": true,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Password"
+		},
+
+		{
+			"name": "yarn.url",
+			"type": "string",
+			"mandatory": true,
+			"defaultValue": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "YARN REST URL"
+		},
+
+		{
+			"name": "certificate.cn",
+			"type": "string",
+			"mandatory": false,
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "Common Name for Certificate"
+		}
+	],
+
+	"enums": 
+	[
+		
+	],
+
+	"contextEnrichers": 
+	[
+		
+	],
+
+	"policyConditions": 
+	[
+		{
+			"name": "ip-range",
+			"evaluator": "org.apache.ranger.plugin.conditionevaluator.RangerIpMatcher",
+			"evaluatorOptions": "",
+			"validationRegEx":"",
+			"validationMessage": "",
+			"uiHint":"",
+			"label": "IP Address Range",
+			"description": "IP Address Range"
+		}
+	]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/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 334c37e..5054d5d 100644
--- a/security-admin/db/mysql/patches/009-updated_schema.sql
+++ b/security-admin/db/mysql/patches/009-updated_schema.sql
@@ -110,10 +110,14 @@ CREATE TABLE `x_service_config_def` (
 `sub_type` varchar(1024) DEFAULT NULL,
 `is_mandatory` tinyint(1) NOT NULL DEFAULT '0',
 `default_value` varchar(1024) DEFAULT NULL,
+`validation_reg_ex` varchar(1024) DEFAULT NULL,
+`validation_message` varchar(1024) DEFAULT NULL,
+`ui_hint` varchar(1024) DEFAULT NULL,
 `label` varchar(1024) DEFAULT NULL,
 `description` varchar(1024) DEFAULT NULL,
 `rb_key_label` varchar(1024) DEFAULT NULL,
-`rb_key_decription` varchar(1024) DEFAULT NULL,
+`rb_key_description` varchar(1024) DEFAULT NULL,
+`rb_key_validation_message` varchar(1024) DEFAULT NULL,
 `sort_order` tinyint(3) DEFAULT '0',
 primary key (`id`),
 CONSTRAINT `x_service_config_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`),
@@ -141,10 +145,14 @@ CREATE TABLE `x_resource_def` (
 `excludes_supported` tinyint(1) NOT NULL DEFAULT '0',
 `matcher` varchar(1024) DEFAULT NULL,
 `matcher_options` varchar(1024) DEFAULT NULL,
+`validation_reg_ex` varchar(1024) DEFAULT NULL,
+`validation_message` varchar(1024) DEFAULT NULL,
+`ui_hint` varchar(1024) DEFAULT NULL,
 `label` varchar(1024) DEFAULT NULL,  
 `description` varchar(1024) DEFAULT NULL,  
 `rb_key_label` varchar(1024) DEFAULT NULL,  
 `rb_key_description` varchar(1024) DEFAULT NULL, 
+`rb_key_validation_message` varchar(1024) DEFAULT NULL,
 `sort_order` tinyint(3) DEFAULT '0', 
 primary key (`id`),
 KEY `x_resource_def_FK_parent` (`parent`),   
@@ -201,10 +209,14 @@ CREATE TABLE `x_policy_condition_def` (
 `name` varchar(1024) DEFAULT NULL,  
 `evaluator` varchar(1024) DEFAULT NULL,
 `evaluator_options` varchar(1024) DEFAULT NULL,
+`validation_reg_ex` varchar(1024) DEFAULT NULL,
+`validation_message` varchar(1024) DEFAULT NULL,
+`ui_hint` varchar(1024) DEFAULT NULL,
 `label` varchar(1024) DEFAULT NULL,  
 `description` varchar(1024) DEFAULT NULL,  
 `rb_key_label` varchar(1024) DEFAULT NULL,  
 `rb_key_description` varchar(1024) DEFAULT NULL,  
+`rb_key_validation_message` varchar(1024) DEFAULT NULL,
 `sort_order` tinyint(3) DEFAULT '0',
 primary key (`id`)   ,
 CONSTRAINT `x_policy_condition_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`),

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/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 17eb26d..30407c3 100644
--- a/security-admin/db/oracle/patches/009-updated_schema.sql
+++ b/security-admin/db/oracle/patches/009-updated_schema.sql
@@ -108,10 +108,14 @@ type VARCHAR(1024) DEFAULT NULL NULL,
 sub_type VARCHAR(1024) DEFAULT NULL NULL,
 is_mandatory NUMBER(1) DEFAULT '0' NOT NULL,
 default_value VARCHAR(1024) DEFAULT NULL NULL,
+validation_reg_ex VARCHAR(1024) DEFAULT NULL NULL,
+validation_message VARCHAR(1024) DEFAULT NULL NULL,
+ui_hint VARCHAR(1024) DEFAULT NULL NULL,
 label VARCHAR(1024) DEFAULT NULL NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_label VARCHAR(1024) DEFAULT NULL NULL,
-rb_key_decription VARCHAR(1024) DEFAULT NULL NULL,
+rb_key_description VARCHAR(1024) DEFAULT NULL NULL,
+rb_key_validation_message VARCHAR(1024) DEFAULT NULL NULL,
 sort_order NUMBER(3) DEFAULT '0' NULL,
 primary key (id),
 CONSTRAINT x_service_conf_def_FK_defid FOREIGN KEY (def_id) REFERENCES x_service_def (id),
@@ -137,10 +141,14 @@ recursive_supported NUMBER(1) DEFAULT '0' NOT NULL,
 excludes_supported NUMBER(1) DEFAULT '0' NOT NULL,
 matcher VARCHAR(1024) DEFAULT NULL NULL,
 matcher_options varchar(1024) DEFAULT NULL NULL,
+validation_reg_ex VARCHAR(1024) DEFAULT NULL NULL,
+validation_message VARCHAR(1024) DEFAULT NULL NULL,
+ui_hint VARCHAR(1024) DEFAULT NULL NULL,
 label VARCHAR(1024) DEFAULT NULL NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_label VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_description VARCHAR(1024) DEFAULT NULL NULL,
+rb_key_validation_message VARCHAR(1024) DEFAULT NULL NULL,
 sort_order NUMBER(3) DEFAULT '0' NULL,
 primary key (id),
 CONSTRAINT x_resource_def_FK_parent FOREIGN KEY (parent) REFERENCES x_resource_def (id),
@@ -193,10 +201,14 @@ def_id NUMBER(20) NOT NULL,
 name VARCHAR(1024) DEFAULT NULL NULL,
 evaluator VARCHAR(1024) DEFAULT NULL NULL,
 evaluator_options VARCHAR(1024) DEFAULT NULL NULL,
+validation_reg_ex VARCHAR(1024) DEFAULT NULL NULL,
+validation_message VARCHAR(1024) DEFAULT NULL NULL,
+ui_hint VARCHAR(1024) DEFAULT NULL NULL,
 label VARCHAR(1024) DEFAULT NULL NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_label VARCHAR(1024) DEFAULT NULL NULL,
 rb_key_description VARCHAR(1024) DEFAULT NULL NULL,
+rb_key_validation_message VARCHAR(1024) DEFAULT NULL NULL,
 sort_order NUMBER(3) DEFAULT '0' NULL,
 primary key (id),
 CONSTRAINT x_policy_cond_def_FK_defid FOREIGN KEY (def_id) REFERENCES x_service_def (id),

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/security-admin/src/main/java/org/apache/ranger/entity/XXDBBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXDBBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXDBBase.java
index c5e7c9c..ce7c5db 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXDBBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXDBBase.java
@@ -235,4 +235,14 @@ public abstract class XXDBBase extends Object implements java.io.Serializable {
 		return null;
 	}
 
+	public static boolean equals(Object object1, Object object2) {
+        if (object1 == object2) {
+            return true;
+        }
+        if ((object1 == null) || (object2 == null)) {
+            return false;
+        }
+        return object1.equals(object2);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java
index 4a639cb..b9e73c4 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyConditionDef.java
@@ -21,6 +21,7 @@ package org.apache.ranger.entity;
 import javax.persistence.*;
 import javax.xml.bind.annotation.XmlRootElement;
 
+
 @Entity
 @Cacheable
 @XmlRootElement
@@ -77,6 +78,33 @@ public class XXPolicyConditionDef extends XXDBBase implements
 	protected String evaluatorOptions;
 
 	/**
+	 * validationRegEx of the XXPolicyConditionDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_reg_ex")
+	protected String validationRegEx;
+
+	/**
+	 * validationMessage of the XXPolicyConditionDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_message")
+	protected String validationMessage;
+
+	/**
+	 * uiHint of the XXPolicyConditionDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "ui_hint")
+	protected String uiHint;
+
+	/**
 	 * label of the XXPolicyConditionDef
 	 * <ul>
 	 * </ul>
@@ -113,6 +141,15 @@ public class XXPolicyConditionDef extends XXDBBase implements
 	protected String rbKeyDescription;
 
 	/**
+	 * rbKeyValidationMessage of the XXPolicyConditionDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "rb_key_validation_message")
+	protected String rbKeyValidationMessage;
+
+	/**
 	 * order of the XXPolicyConditionDef
 	 * <ul>
 	 * </ul>
@@ -222,6 +259,48 @@ public class XXPolicyConditionDef extends XXDBBase implements
 	}
 
 	/**
+	 * @return the validationRegEx
+	 */
+	public String getValidationRegEx() {
+		return validationRegEx;
+	}
+
+	/**
+	 * @param validationRegEx the validationRegEx to set
+	 */
+	public void setValidationRegEx(String validationRegEx) {
+		this.validationRegEx = validationRegEx;
+	}
+
+	/**
+	 * @return the validationMessage
+	 */
+	public String getValidationMessage() {
+		return validationMessage;
+	}
+
+	/**
+	 * @param validationMessage the validationMessage to set
+	 */
+	public void setValidationMessage(String validationMessage) {
+		this.validationMessage = validationMessage;
+	}
+
+	/**
+	 * @return the uiHint
+	 */
+	public String getUiHint() {
+		return uiHint;
+	}
+
+	/**
+	 * @param uiHint the uiHint to set
+	 */
+	public void setUiHint(String uiHint) {
+		this.uiHint = uiHint;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> label</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -302,6 +381,20 @@ public class XXPolicyConditionDef extends XXDBBase implements
 	}
 
 	/**
+	 * @return the rbKeyValidationMessage
+	 */
+	public String getRbKeyValidationMessage() {
+		return rbKeyValidationMessage;
+	}
+
+	/**
+	 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+	 */
+	public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+		this.rbKeyValidationMessage = rbKeyValidationMessage;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> order</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -376,6 +469,14 @@ public class XXPolicyConditionDef extends XXDBBase implements
 		} else if (!id.equals(other.id)) {
 			return false;
 		}
+
+		if(!equals(validationRegEx, other.validationRegEx) ||
+		   !equals(validationMessage, other.validationMessage) ||
+		   !equals(uiHint, other.uiHint) ||
+		   !equals(rbKeyValidationMessage, other.rbKeyValidationMessage)) {
+			return false;
+		}
+
 		if (label == null) {
 			if (other.label != null) {
 				return false;
@@ -424,7 +525,11 @@ public class XXPolicyConditionDef extends XXDBBase implements
 		return "XXPolicyConditionDef [id=" + id + ", defId=" + defId
 				+ ", name=" + name + ", evaluator=" + evaluator
 				+ ", evaluatorOptions=" + evaluatorOptions + ", label=" + label
+				+ ", validationRegEx=" + validationRegEx
+				+ ", validationMessage=" + validationMessage
+				+ ", uiHint=" + uiHint
 				+ ", description=" + description + ", rbKeyLabel=" + rbKeyLabel
+				+ ", rbKeyValidationMessage=" + rbKeyValidationMessage
 				+ ", rbKeyDescription=" + rbKeyDescription + ", order=" + order
 				+ "]";
 	}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/security-admin/src/main/java/org/apache/ranger/entity/XXResourceDef.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXResourceDef.java b/security-admin/src/main/java/org/apache/ranger/entity/XXResourceDef.java
index e2694bf..5974033 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXResourceDef.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXResourceDef.java
@@ -139,6 +139,33 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 	protected String matcherOptions;
 
 	/**
+	 * validationRegEx of the XXResourceDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_reg_ex")
+	protected String validationRegEx;
+
+	/**
+	 * validationMessage of the XXResourceDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_message")
+	protected String validationMessage;
+
+	/**
+	 * uiHint of the XXResourceDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "ui_hint")
+	protected String uiHint;
+
+	/**
 	 * label of the XXResourceDef
 	 * <ul>
 	 * </ul>
@@ -175,6 +202,15 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 	protected String rbKeyDescription;
 
 	/**
+	 * rbKeyValidationMessage of the XXResourceDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "rb_key_validation_message")
+	protected String rbKeyValidationMessage;
+
+	/**
 	 * order of the XXResourceDef
 	 * <ul>
 	 * </ul>
@@ -424,6 +460,48 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 	}
 
 	/**
+	 * @return the validationRegEx
+	 */
+	public String getValidationRegEx() {
+		return validationRegEx;
+	}
+
+	/**
+	 * @param validationRegEx the validationRegEx to set
+	 */
+	public void setValidationRegEx(String validationRegEx) {
+		this.validationRegEx = validationRegEx;
+	}
+
+	/**
+	 * @return the validationMessage
+	 */
+	public String getValidationMessage() {
+		return validationMessage;
+	}
+
+	/**
+	 * @param validationMessage the validationMessage to set
+	 */
+	public void setValidationMessage(String validationMessage) {
+		this.validationMessage = validationMessage;
+	}
+
+	/**
+	 * @return the uiHint
+	 */
+	public String getUiHint() {
+		return uiHint;
+	}
+
+	/**
+	 * @param uiHint the uiHint to set
+	 */
+	public void setUiHint(String uiHint) {
+		this.uiHint = uiHint;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> label</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -504,6 +582,20 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 	}
 
 	/**
+	 * @return the rbKeyValidationMessage
+	 */
+	public String getRbKeyValidationMessage() {
+		return rbKeyValidationMessage;
+	}
+
+	/**
+	 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+	 */
+	public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+		this.rbKeyValidationMessage = rbKeyValidationMessage;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> order</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -564,6 +656,14 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 		} else if (!id.equals(other.id)) {
 			return false;
 		}
+
+		if(!equals(validationRegEx, other.validationRegEx) ||
+		   !equals(validationMessage, other.validationMessage) ||
+		   !equals(uiHint, other.uiHint) ||
+		   !equals(rbKeyValidationMessage, other.rbKeyValidationMessage)) {
+			return false;
+		}
+
 		if (label == null) {
 			if (other.label != null) {
 				return false;
@@ -659,9 +759,14 @@ public class XXResourceDef extends XXDBBase implements java.io.Serializable {
 				+ ", lookUpSupported=" + lookUpSupported
 				+ ", recursiveSupported=" + recursiveSupported
 				+ ", excludesSupported=" + excludesSupported + ", matcher="
-				+ matcher + ", matcherOptions=" + matcherOptions + ", label="
-				+ label + ", description=" + description + ", rbKeyLabel="
-				+ rbKeyLabel + ", rbKeyDescription=" + rbKeyDescription
+				+ matcher + ", matcherOptions=" + matcherOptions
+				+ ", validationRegEx=" + validationRegEx
+				+ ", validationMessage=" + validationMessage
+				+ ", uiHint=" + uiHint
+				+ ", label=" + label + ", description=" + description
+				+ ", rbKeyLabel="+ rbKeyLabel
+				+ ", rbKeyDescription=" + rbKeyDescription
+				+ ", rbKeyValidationMessage=" + rbKeyValidationMessage
 				+ ", order=" + order + "]";
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/security-admin/src/main/java/org/apache/ranger/entity/XXServiceConfigDef.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceConfigDef.java b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceConfigDef.java
index 524c2a1..a6650d2 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceConfigDef.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceConfigDef.java
@@ -95,6 +95,33 @@ public class XXServiceConfigDef extends XXDBBase implements
 	protected String defaultValue;
 
 	/**
+	 * validationRegEx of the XXServiceConfigDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_reg_ex")
+	protected String validationRegEx;
+
+	/**
+	 * validationMessage of the XXServiceConfigDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "validation_message")
+	protected String validationMessage;
+
+	/**
+	 * uiHint of the XXServiceConfigDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "ui_hint")
+	protected String uiHint;
+
+	/**
 	 * label of the XXServiceConfigDef
 	 * <ul>
 	 * </ul>
@@ -127,10 +154,19 @@ public class XXServiceConfigDef extends XXDBBase implements
 	 * </ul>
 	 *
 	 */
-	@Column(name = "rb_key_decription")
+	@Column(name = "rb_key_description")
 	protected String rbKeyDescription;
 
 	/**
+	 * rbKeyValidationMessage of the XXServiceConfigDef
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "rb_key_validation_message")
+	protected String rbKeyValidationMessage;
+
+	/**
 	 * order of the XXServiceConfigDef
 	 * <ul>
 	 * </ul>
@@ -280,6 +316,48 @@ public class XXServiceConfigDef extends XXDBBase implements
 	}
 
 	/**
+	 * @return the validationRegEx
+	 */
+	public String getValidationRegEx() {
+		return validationRegEx;
+	}
+
+	/**
+	 * @param validationRegEx the validationRegEx to set
+	 */
+	public void setValidationRegEx(String validationRegEx) {
+		this.validationRegEx = validationRegEx;
+	}
+
+	/**
+	 * @return the validationMessage
+	 */
+	public String getValidationMessage() {
+		return validationMessage;
+	}
+
+	/**
+	 * @param validationMessage the validationMessage to set
+	 */
+	public void setValidationMessage(String validationMessage) {
+		this.validationMessage = validationMessage;
+	}
+
+	/**
+	 * @return the uiHint
+	 */
+	public String getUiHint() {
+		return uiHint;
+	}
+
+	/**
+	 * @param uiHint the uiHint to set
+	 */
+	public void setUiHint(String uiHint) {
+		this.uiHint = uiHint;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> label</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -360,6 +438,20 @@ public class XXServiceConfigDef extends XXDBBase implements
 	}
 
 	/**
+	 * @return the rbKeyValidationMessage
+	 */
+	public String getRbKeyValidationMessage() {
+		return rbKeyValidationMessage;
+	}
+
+	/**
+	 * @param rbKeyValidationMessage the rbKeyValidationMessage to set
+	 */
+	public void setRbKeyValidationMessage(String rbKeyValidationMessage) {
+		this.rbKeyValidationMessage = rbKeyValidationMessage;
+	}
+
+	/**
 	 * This method sets the value to the member attribute <b> order</b> . You
 	 * cannot set null to the attribute.
 	 * 
@@ -430,6 +522,14 @@ public class XXServiceConfigDef extends XXDBBase implements
 		if (isMandatory != other.isMandatory) {
 			return false;
 		}
+
+		if(!equals(validationRegEx, other.validationRegEx) ||
+		   !equals(validationMessage, other.validationMessage) ||
+		   !equals(uiHint, other.uiHint) ||
+		   !equals(rbKeyValidationMessage, other.rbKeyValidationMessage)) {
+			return false;
+		}
+
 		if (label == null) {
 			if (other.label != null) {
 				return false;
@@ -494,7 +594,11 @@ public class XXServiceConfigDef extends XXDBBase implements
 				+ ", defId=" + defId + ", name=" + name + ", type=" + type
 				+ ", subType=" + subType + ", isMandatory=" + isMandatory
 				+ ", defaultValue=" + defaultValue + ", label=" + label
+				+ ", validationRegEx=" + validationRegEx
+				+ ", validationMessage=" + validationMessage
+				+ ", uiHint=" + uiHint
 				+ ", description=" + description + ", rbKeyLabel=" + rbKeyLabel
+				+ ", rbKeyValidationMessage=" + rbKeyValidationMessage
 				+ ", rbKeyDecription=" + rbKeyDescription + ", order=" + order
 				+ "]";
 	}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/210e2360/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 9bfb3f8..f6c07b3 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
@@ -81,10 +81,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		xObj.setSubtype(vObj.getSubType());
 		xObj.setIsMandatory(vObj.getMandatory());
 		xObj.setDefaultvalue(vObj.getDefaultValue());
+		xObj.setValidationRegEx(vObj.getValidationRegEx());
+		xObj.setValidationMessage(vObj.getValidationMessage());
+		xObj.setUiHint(vObj.getUiHint());
 		xObj.setLabel(vObj.getLabel());
 		xObj.setDescription(vObj.getDescription());
 		xObj.setRbkeylabel(vObj.getRbKeyLabel());
 		xObj.setRbkeydescription(vObj.getRbKeyDescription());
+		xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage());
 		xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER);
 		return xObj;
 	}
@@ -96,10 +100,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		vObj.setSubType(xObj.getSubtype());
 		vObj.setMandatory(xObj.getIsMandatory());
 		vObj.setDefaultValue(xObj.getDefaultvalue());
+		vObj.setValidationRegEx(xObj.getValidationRegEx());
+		vObj.setValidationMessage(xObj.getValidationMessage());
+		vObj.setUiHint(xObj.getUiHint());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setDescription(xObj.getDescription());
 		vObj.setRbKeyLabel(xObj.getRbkeylabel());
 		vObj.setRbKeyDescription(xObj.getRbkeydescription());
+		vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage());
 		return vObj;
 	}
 	
@@ -119,10 +127,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		xObj.setExcludessupported(vObj.getExcludesSupported());
 		xObj.setMatcher(vObj.getMatcher());
 		xObj.setMatcheroptions(vObj.getMatcherOptions());
+		xObj.setValidationRegEx(vObj.getValidationRegEx());
+		xObj.setValidationMessage(vObj.getValidationMessage());
+		xObj.setUiHint(vObj.getUiHint());
 		xObj.setLabel(vObj.getLabel());
 		xObj.setDescription(vObj.getDescription());
 		xObj.setRbkeylabel(vObj.getRbKeyLabel());
 		xObj.setRbkeydescription(vObj.getRbKeyDescription());
+		xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage());
 		xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER);
 		return xObj;
 	}
@@ -138,10 +150,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		vObj.setExcludesSupported(xObj.getExcludessupported());
 		vObj.setMatcher(xObj.getMatcher());
 		vObj.setMatcherOptions(xObj.getMatcheroptions());
+		vObj.setValidationRegEx(xObj.getValidationRegEx());
+		vObj.setValidationMessage(xObj.getValidationMessage());
+		vObj.setUiHint(xObj.getUiHint());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setDescription(xObj.getDescription());
 		vObj.setRbKeyLabel(xObj.getRbkeylabel());
 		vObj.setRbKeyDescription(xObj.getRbkeydescription());
+		vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage());
 		
 		XXResourceDef parent = daoMgr.getXXResourceDef().getById(xObj.getParent());
 		String parentName = (parent != null) ? parent.getName() : null;
@@ -185,10 +201,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		xObj.setName(vObj.getName());
 		xObj.setEvaluator(vObj.getEvaluator());
 		xObj.setEvaluatoroptions(vObj.getEvaluatorOptions());
+		xObj.setValidationRegEx(vObj.getValidationRegEx());
+		xObj.setValidationMessage(vObj.getValidationMessage());
+		xObj.setUiHint(vObj.getUiHint());
 		xObj.setLabel(vObj.getLabel());
 		xObj.setDescription(vObj.getDescription());
 		xObj.setRbkeylabel(vObj.getRbKeyLabel());
 		xObj.setRbkeydescription(vObj.getRbKeyDescription());
+		xObj.setRbKeyValidationMessage(vObj.getRbKeyValidationMessage());
 		xObj.setOrder(AppConstants.DEFAULT_SORT_ORDER);
 		return xObj;
 	}
@@ -198,10 +218,14 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		vObj.setName(xObj.getName());
 		vObj.setEvaluator(xObj.getEvaluator());
 		vObj.setEvaluatorOptions(xObj.getEvaluatoroptions());
+		vObj.setValidationRegEx(xObj.getValidationRegEx());
+		vObj.setValidationMessage(xObj.getValidationMessage());
+		vObj.setUiHint(xObj.getUiHint());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setDescription(xObj.getDescription());
 		vObj.setRbKeyLabel(xObj.getRbkeylabel());
 		vObj.setRbKeyDescription(xObj.getRbkeydescription());
+		vObj.setRbKeyValidationMessage(xObj.getRbKeyValidationMessage());
 		return vObj;
 	}