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/02/17 09:17:24 UTC

[51/55] [abbrv] incubator-ranger git commit: RANGER-203: database service-store implementation

RANGER-203: database service-store implementation


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

Branch: refs/heads/master
Commit: c928a415951ffa46986e26a99ba38e52f285ee0d
Parents: 3072277
Author: Gautam Borad <gb...@gmail.com>
Authored: Fri Feb 13 09:34:13 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Fri Feb 13 09:34:13 2015 -0800

----------------------------------------------------------------------
 .../db/patches/009-updated_schema.sql           |  419 ++++++++
 .../org/apache/ranger/biz/ServiceDBStore.java   | 1004 ++++++++++++++++++
 .../apache/ranger/db/XXAccessTypeDefDao.java    |   45 +
 .../ranger/db/XXAccessTypeDefGrantsDao.java     |   33 +
 .../org/apache/ranger/db/XXDataHistDao.java     |   29 +
 .../java/org/apache/ranger/db/XXEnumDefDao.java |   32 +
 .../apache/ranger/db/XXEnumElementDefDao.java   |   32 +
 .../ranger/db/XXPolicyConditionDefDao.java      |   59 +
 .../java/org/apache/ranger/db/XXPolicyDao.java  |   49 +
 .../apache/ranger/db/XXPolicyItemAccessDao.java |   30 +
 .../ranger/db/XXPolicyItemConditionDao.java     |   45 +
 .../org/apache/ranger/db/XXPolicyItemDao.java   |   39 +
 .../ranger/db/XXPolicyItemGroupPermDao.java     |   30 +
 .../ranger/db/XXPolicyItemUserPermDao.java      |   30 +
 .../apache/ranger/db/XXPolicyResourceDao.java   |   44 +
 .../ranger/db/XXPolicyResourceMapDao.java       |   30 +
 .../org/apache/ranger/db/XXResourceDefDao.java  |   72 ++
 .../apache/ranger/db/XXServiceConfigDefDao.java |   45 +
 .../apache/ranger/db/XXServiceConfigMapDao.java |   46 +
 .../java/org/apache/ranger/db/XXServiceDao.java |   32 +
 .../org/apache/ranger/db/XXServiceDefDao.java   |   30 +
 .../apache/ranger/entity/XXAccessTypeDef.java   |  284 +++++
 .../ranger/entity/XXAccessTypeDefGrants.java    |  176 +++
 .../org/apache/ranger/entity/XXDataHist.java    |  474 +++++++++
 .../org/apache/ranger/entity/XXEnumDef.java     |  212 ++++
 .../apache/ranger/entity/XXEnumElementDef.java  |  285 +++++
 .../java/org/apache/ranger/entity/XXPolicy.java |  345 ++++++
 .../ranger/entity/XXPolicyConditionDef.java     |  432 ++++++++
 .../org/apache/ranger/entity/XXPolicyItem.java  |  240 +++++
 .../ranger/entity/XXPolicyItemAccess.java       |  282 +++++
 .../ranger/entity/XXPolicyItemCondition.java    |  282 +++++
 .../ranger/entity/XXPolicyItemGroupPerm.java    |  213 ++++
 .../ranger/entity/XXPolicyItemUserPerm.java     |  213 ++++
 .../apache/ranger/entity/XXPolicyResource.java  |  241 +++++
 .../ranger/entity/XXPolicyResourceMap.java      |  213 ++++
 .../org/apache/ranger/entity/XXResourceDef.java |  668 ++++++++++++
 .../org/apache/ranger/entity/XXService.java     |  390 +++++++
 .../ranger/entity/XXServiceConfigDef.java       |  502 +++++++++
 .../ranger/entity/XXServiceConfigMap.java       |  213 ++++
 .../org/apache/ranger/entity/XXServiceDef.java  |  422 ++++++++
 .../ranger/service/RangerAuditFields.java       |   17 +
 .../ranger/service/RangerBaseModelService.java  |  276 +++++
 .../ranger/service/RangerDataHistService.java   |  126 +++
 .../ranger/service/RangerPolicyService.java     |  152 +++
 .../ranger/service/RangerPolicyServiceBase.java |   49 +
 .../ranger/service/RangerServiceDefService.java |  111 ++
 .../service/RangerServiceDefServiceBase.java    |  257 +++++
 .../ranger/service/RangerServiceService.java    |   59 +
 .../service/RangerServiceServiceBase.java       |   49 +
 .../ranger/plugin/store/RangerDBStore.java      |    9 +
 50 files changed, 9367 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/db/patches/009-updated_schema.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/patches/009-updated_schema.sql b/security-admin/db/patches/009-updated_schema.sql
new file mode 100644
index 0000000..401a1dc
--- /dev/null
+++ b/security-admin/db/patches/009-updated_schema.sql
@@ -0,0 +1,419 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to You under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+--     http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Temporary table structure for view `vx_trx_log`
+--
+
+DROP TABLE IF EXISTS `x_service_def`;
+CREATE TABLE `x_service_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`version` bigint(20) DEFAULT NULL,
+`name` varchar(1024) DEFAULT NULL,
+`impl_class_name` 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,
+`is_enabled` tinyint DEFAULT 1,
+primary key (`id`),      
+KEY `x_service_def_added_by_id` (`added_by_id`),
+KEY `x_service_def_upd_by_id` (`upd_by_id`),
+KEY `x_service_def_cr_time` (`create_time`),
+KEY `x_service_def_up_time` (`update_time`),
+CONSTRAINT `x_service_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_service_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_service`;
+CREATE TABLE `x_service` ( 
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`version` bigint(20) DEFAULT NULL,
+`type` bigint(20) DEFAULT NULL,
+`name` varchar(512) DEFAULT NULL,   
+`policy_version` bigint(20) DEFAULT NULL,
+`policy_update_time`datetime DEFAULT NULL,
+`description` varchar(1024) DEFAULT NULL,
+`is_enabled` tinyint(1) NOT NULL DEFAULT '0',   
+primary key (`id`),
+UNIQUE KEY `X_service_name` (`name`),
+KEY `x_service_added_by_id` (`added_by_id`),
+KEY `x_service_upd_by_id` (`upd_by_id`),
+KEY `x_service_cr_time` (`create_time`),
+KEY `x_service_up_time` (`update_time`),
+KEY `x_service_type` (`type`),  
+CONSTRAINT `x_service_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_service_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_service_FK_type` FOREIGN KEY (`type`) REFERENCES `x_service_def` (`id`)                       
+);
+
+DROP TABLE IF EXISTS `x_policy`;
+CREATE TABLE  `x_policy` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`version` bigint(20) DEFAULT NULL,
+`service` bigint(20) DEFAULT NULL,
+`name` varchar(512) DEFAULT NULL, 
+`description` varchar(1024) DEFAULT NULL,
+`is_enabled` tinyint(1) NOT NULL DEFAULT '0',
+`is_audit_enabled` tinyint(1) NOT NULL DEFAULT '0',
+primary key (`id`),
+UNIQUE KEY `x_policy_name` (`name`), 
+KEY `x_policy_added_by_id` (`added_by_id`),
+KEY `x_policy_upd_by_id` (`upd_by_id`),
+KEY `x_policy_cr_time` (`create_time`),
+KEY `x_policy_up_time` (`update_time`),
+KEY `x_policy_service` (`service`), 	
+CONSTRAINT `x_policy_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_FK_service` FOREIGN KEY (`service`) REFERENCES `x_service` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_service_config_def`;
+CREATE TABLE `x_service_config_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`def_id` bigint(20) NOT NULL,
+`name` varchar(1024) DEFAULT NULL,  
+`type` varchar(1024) DEFAULT NULL,
+`sub_type` varchar(1024) DEFAULT NULL,
+`is_mandatory` tinyint(1) NOT NULL DEFAULT '0',
+`default_value` 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,
+`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`),
+CONSTRAINT `x_service_config_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_service_config_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_resource_def`;
+CREATE TABLE `x_resource_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`def_id` bigint(20) NOT NULL,  
+`name` varchar(1024) DEFAULT NULL,
+`type` varchar(1024) DEFAULT NULL,  
+`level` bigint(20) DEFAULT NULL,  
+`parent` bigint(20) DEFAULT NULL,  
+`mandatory` tinyint(1) NOT NULL DEFAULT '0',
+`look_up_supported` tinyint(1) NOT NULL DEFAULT '0',
+`recursive_supported` tinyint(1) NOT NULL DEFAULT '0',
+`excludes_supported` tinyint(1) NOT NULL DEFAULT '0',
+`matcher` varchar(1024) DEFAULT NULL,
+`matcher_options` 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, 
+`sort_order` tinyint(3) DEFAULT '0', 
+primary key (`id`),
+KEY `x_resource_def_FK_parent` (`parent`),   
+CONSTRAINT `x_resource_def_FK_parent` FOREIGN KEY (`parent`) REFERENCES `x_resource_def` (`id`) ,
+CONSTRAINT `x_resource_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`),
+CONSTRAINT `x_resource_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_resource_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_access_type_def`;
+CREATE TABLE `x_access_type_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`def_id` bigint(20) NOT NULL,    
+`name` varchar(1024) DEFAULT NULL,  
+`label` varchar(1024) DEFAULT NULL,   
+`rb_key_label` varchar(1024) DEFAULT NULL, 
+`sort_order` tinyint(3) DEFAULT '0', 
+primary key (`id`)   ,
+CONSTRAINT `x_access_type_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`),
+CONSTRAINT `x_access_type_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_access_type_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_access_type_def_grants`;
+CREATE TABLE `x_access_type_def_grants` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`atd_id` bigint(20) NOT NULL,     
+`implied_grant` varchar(1024) DEFAULT NULL,  
+primary key (`id`),
+CONSTRAINT `x_atd_grants_FK_atdid` FOREIGN KEY (`atd_id`) REFERENCES `x_access_type_def` (`id`),
+CONSTRAINT `x_atd_grants_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_atd_grants_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_policy_condition_def`;
+CREATE TABLE `x_policy_condition_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`def_id` bigint(20) NOT NULL,      
+`name` varchar(1024) DEFAULT NULL,  
+`evaluator` varchar(1024) DEFAULT NULL,
+`evaluator_options` 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,  
+`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`),
+CONSTRAINT `x_policy_condition_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_condition_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_enum_def`;
+CREATE TABLE `x_enum_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`def_id` bigint(20) NOT NULL, 
+`name` varchar(1024) DEFAULT NULL,  
+`default_index` bigint(20) DEFAULT NULL,    
+primary key (`id`),    
+CONSTRAINT `x_enum_def_FK_defid` FOREIGN KEY (`def_id`) REFERENCES `x_service_def` (`id`),
+CONSTRAINT `x_enum_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_enum_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_enum_element_def`;
+CREATE TABLE `x_enum_element_def` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`enum_def_id` bigint(20) NOT NULL, 
+`name` varchar(1024) DEFAULT NULL,  
+`label` varchar(1024) DEFAULT NULL,  
+`rb_key_label` varchar(1024) DEFAULT NULL,   
+`sort_order` tinyint(3) DEFAULT '0', 
+primary key (`id`),    
+CONSTRAINT `x_enum_element_def_FK_defid` FOREIGN KEY (`enum_def_id`) REFERENCES `x_enum_def` (`id`),
+CONSTRAINT `x_enum_element_def_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_enum_element_def_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_service_config_map`;
+CREATE TABLE `x_service_config_map` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`service` bigint(20) NOT NULL, 
+`config_key` varchar(1024) DEFAULT NULL,   
+`config_value` varchar(1024) DEFAULT NULL,    
+primary key (`id`),    
+CONSTRAINT `x_service_config_map_FK_` FOREIGN KEY (`service`) REFERENCES `x_service` (`id`),
+CONSTRAINT `x_service_config_map_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_service_config_map_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_policy_resource`;
+CREATE TABLE `x_policy_resource` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_id` bigint(20) NOT NULL, 
+`res_def_id` bigint(20) NOT NULL, 
+`is_excludes` tinyint(1) NOT NULL DEFAULT '0',
+`is_recursive` tinyint(1) NOT NULL DEFAULT '0',
+primary key (`id`),    
+CONSTRAINT `x_policy_resource_FK_policy_id` FOREIGN KEY (`policy_id`) REFERENCES `x_policy` (`id`), 
+CONSTRAINT `x_policy_resource_FK_res_def_id` FOREIGN KEY (`res_def_id`) REFERENCES `x_resource_def` (`id`),
+CONSTRAINT `x_policy_resource_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_resource_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_policy_resource_map`;
+CREATE TABLE `x_policy_resource_map` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`resource_id` bigint(20) NOT NULL, 
+`value` varchar(1024) DEFAULT NULL,  
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (`id`),    
+CONSTRAINT `x_policy_resource_map_FK_resource_id` FOREIGN KEY (`resource_id`) REFERENCES `x_policy_resource` (`id`),
+CONSTRAINT `x_policy_resource_map_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_resource_map_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+
+DROP TABLE IF EXISTS `x_policy_item`;
+CREATE TABLE `x_policy_item` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_id` bigint(20) NOT NULL,
+`delegate_admin` tinyint(1) NOT NULL DEFAULT '0',
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (`id`), 
+CONSTRAINT `x_policy_item_FK_policy_id` FOREIGN KEY (`policy_id`) REFERENCES `x_policy` (`id`),
+CONSTRAINT `x_policy_item_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_item_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_policy_item_access`;
+CREATE TABLE `x_policy_item_access` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_item_id` bigint(20) NOT NULL, 
+`type` bigint(20) NOT NULL,
+`is_allowed` tinyint(11) NOT NULL DEFAULT '0',
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (id), 
+CONSTRAINT `x_policy_item_access_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) ,
+CONSTRAINT `x_policy_item_access_FK_atd_id` FOREIGN KEY (`type`) REFERENCES `x_access_type_def` (`id`),
+CONSTRAINT `x_policy_item_access_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_item_access_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_policy_item_condition`;
+CREATE TABLE `x_policy_item_condition` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_item_id` bigint(20) NOT NULL, 
+`type` bigint(20) NOT NULL,
+`value` varchar(1024) DEFAULT NULL, 
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (id), 
+CONSTRAINT `x_policy_item_condition_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) ,
+CONSTRAINT `x_policy_item_condition_FK_pcd_id` FOREIGN KEY (`type`) REFERENCES `x_policy_condition_def` (`id`),
+CONSTRAINT `x_policy_item_condition_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_item_condition_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_policy_item_user_perm`;
+CREATE TABLE `x_policy_item_user_perm` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_item_id` bigint(20) NOT NULL,
+`user_id` bigint(20) NULL DEFAULT NULL,
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (`id`), 
+CONSTRAINT `x_policy_item_user_perm_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) ,
+CONSTRAINT `x_policy_item_user_perm_FK_user_id` FOREIGN KEY (`user_id`) REFERENCES `x_user` (`id`),
+CONSTRAINT `x_policy_item_user_perm_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_item_user_perm_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+
+DROP TABLE IF EXISTS `x_policy_item_group_perm`;
+CREATE TABLE `x_policy_item_group_perm` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`guid` varchar(1024) DEFAULT NULL,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`added_by_id` bigint(20) DEFAULT NULL,
+`upd_by_id` bigint(20) DEFAULT NULL,
+`policy_item_id` bigint(20) NOT NULL,
+`group_id` bigint(20) NULL DEFAULT NULL,
+`sort_order` tinyint(3) DEFAULT '0',
+primary key (`id`), 
+CONSTRAINT `x_policy_item_group_perm_FK_pi_id` FOREIGN KEY (`policy_item_id`) REFERENCES `x_policy_item` (`id`) ,
+CONSTRAINT `x_policy_item_group_perm_FK_group_id` FOREIGN KEY (`group_id`) REFERENCES `x_group` (`id`),
+CONSTRAINT `x_policy_item_group_perm_FK_added_by_id` FOREIGN KEY (`added_by_id`) REFERENCES `x_portal_user` (`id`),
+CONSTRAINT `x_policy_item_group_perm_FK_upd_by_id` FOREIGN KEY (`upd_by_id`) REFERENCES `x_portal_user` (`id`)
+);
+
+DROP TABLE IF EXISTS `x_data_hist`;
+CREATE TABLE `x_data_hist` (
+`id` bigint(20) NOT NULL AUTO_INCREMENT ,
+`create_time` datetime DEFAULT NULL,
+`update_time` datetime DEFAULT NULL,
+`obj_guid` varchar(1024) not null,
+`obj_class_type` int NOT NULL,
+`obj_id` bigint(20) not null,
+`obj_name` varchar(1024) NOT NULL,
+`version` bigint(20) DEFAULT NULL,
+`action` varchar(512) NOT NULL,
+`from_time` datetime NOT NULL,
+`to_time` datetime DEFAULT NULL,
+`content` text NOT NULL,
+primary key (`id`)
+);
+

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
new file mode 100644
index 0000000..47add30
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -0,0 +1,1004 @@
+package org.apache.ranger.biz;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.common.ContextUtil;
+import org.apache.ranger.common.DateUtil;
+import org.apache.ranger.common.MessageEnums;
+import org.apache.ranger.common.RESTErrorUtil;
+import org.apache.ranger.common.RangerCommonEnums;
+import org.apache.ranger.common.StringUtil;
+import org.apache.ranger.common.UserSessionBase;
+import org.apache.ranger.db.RangerDaoManager;
+import org.apache.ranger.db.XXAccessTypeDefDao;
+import org.apache.ranger.db.XXAccessTypeDefGrantsDao;
+import org.apache.ranger.db.XXEnumDefDao;
+import org.apache.ranger.db.XXEnumElementDefDao;
+import org.apache.ranger.db.XXPolicyConditionDefDao;
+import org.apache.ranger.db.XXPolicyItemAccessDao;
+import org.apache.ranger.db.XXPolicyItemConditionDao;
+import org.apache.ranger.db.XXPolicyItemDao;
+import org.apache.ranger.db.XXPolicyItemGroupPermDao;
+import org.apache.ranger.db.XXPolicyItemUserPermDao;
+import org.apache.ranger.db.XXPolicyResourceDao;
+import org.apache.ranger.db.XXPolicyResourceMapDao;
+import org.apache.ranger.db.XXResourceDefDao;
+import org.apache.ranger.db.XXServiceConfigDefDao;
+import org.apache.ranger.db.XXServiceConfigMapDao;
+import org.apache.ranger.entity.XXAccessTypeDef;
+import org.apache.ranger.entity.XXAccessTypeDefGrants;
+import org.apache.ranger.entity.XXDBBase;
+import org.apache.ranger.entity.XXEnumDef;
+import org.apache.ranger.entity.XXEnumElementDef;
+import org.apache.ranger.entity.XXGroup;
+import org.apache.ranger.entity.XXPolicy;
+import org.apache.ranger.entity.XXPolicyConditionDef;
+import org.apache.ranger.entity.XXPolicyItem;
+import org.apache.ranger.entity.XXPolicyItemAccess;
+import org.apache.ranger.entity.XXPolicyItemCondition;
+import org.apache.ranger.entity.XXPolicyItemGroupPerm;
+import org.apache.ranger.entity.XXPolicyItemUserPerm;
+import org.apache.ranger.entity.XXPolicyResource;
+import org.apache.ranger.entity.XXPolicyResourceMap;
+import org.apache.ranger.entity.XXResourceDef;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXServiceConfigDef;
+import org.apache.ranger.entity.XXServiceConfigMap;
+import org.apache.ranger.entity.XXServiceDef;
+import org.apache.ranger.entity.XXUser;
+import org.apache.ranger.plugin.model.RangerBaseModelObject;
+import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItem;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemAccess;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyItemCondition;
+import org.apache.ranger.plugin.model.RangerService;
+import org.apache.ranger.plugin.model.RangerServiceDef;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerPolicyConditionDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef;
+import org.apache.ranger.plugin.store.ServiceStore;
+import org.apache.ranger.plugin.util.ServicePolicies;
+import org.apache.ranger.service.RangerAuditFields;
+import org.apache.ranger.service.RangerDataHistService;
+import org.apache.ranger.service.RangerPolicyService;
+import org.apache.ranger.service.RangerServiceDefService;
+import org.apache.ranger.service.RangerServiceService;
+import org.apache.ranger.service.XUserService;
+import org.apache.ranger.view.VXUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.apache.ranger.plugin.util.SearchFilter;
+
+
+@Component
+public class ServiceDBStore implements ServiceStore {
+	private static final Log LOG = LogFactory.getLog(ServiceDBStore.class);
+
+	@Autowired
+	RangerServiceDefService serviceDefService;
+ 
+	@Autowired
+	RangerDaoManager daoMgr;
+
+	@Autowired
+	RESTErrorUtil restErrorUtil;
+	
+	@Autowired
+	RangerServiceService svcService;
+	
+	@Autowired
+	StringUtil stringUtil;
+	
+	@Autowired
+	RangerAuditFields<XXDBBase> rangerAuditFields;
+	
+	@Autowired
+	RangerPolicyService policyService;
+	
+	@Autowired
+	XUserService xUserService;
+	
+	@Autowired
+	XUserMgr xUserMgr;
+	
+	@Autowired
+	RangerDataHistService dataHistService;
+	
+	static Map<String, Long> legacyServiceDefs = new HashMap<String, Long>();
+
+	static {
+		legacyServiceDefs.put("hdfs",  new Long(1));
+		legacyServiceDefs.put("hbase", new Long(2));
+		legacyServiceDefs.put("hive",  new Long(3));
+		legacyServiceDefs.put("knox",  new Long(5));
+		legacyServiceDefs.put("storm", new Long(6));
+	}
+	
+
+	@Override
+	public void init() throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.init()");
+		}
+	}
+
+
+	@Override
+	public RangerServiceDef createServiceDef(RangerServiceDef serviceDef)
+			throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.createServiceDef(" + serviceDef + ")");
+		}
+		XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(
+				serviceDef.getName());
+		if (xServiceDef != null) {
+			throw restErrorUtil.createRESTException("service-def with name: "
+					+ serviceDef.getName() + " already exists",
+					MessageEnums.ERROR_DUPLICATE_OBJECT);
+		}
+		
+		List<RangerServiceConfigDef> configs = serviceDef.getConfigs();
+		List<RangerResourceDef> resources = serviceDef.getResources();
+		List<RangerAccessTypeDef> accessTypes = serviceDef.getAccessTypes();
+		List<RangerPolicyConditionDef> policyConditions = serviceDef.getPolicyConditions();
+		List<RangerEnumDef> enums = serviceDef.getEnums();
+		
+		serviceDef = serviceDefService.create(serviceDef);
+		Long serviceDefId = serviceDef.getId();
+		XXServiceDef createdSvcDef = daoMgr.getXXServiceDef().getById(serviceDefId);
+		
+		XXServiceConfigDefDao xxServiceConfigDao = daoMgr.getXXServiceConfigDef();
+		for(RangerServiceConfigDef config : configs) {
+			XXServiceConfigDef xConfig = new XXServiceConfigDef();
+			xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef);
+			xConfig = xxServiceConfigDao.create(xConfig);
+		}
+		
+		XXResourceDefDao xxResDefDao = daoMgr.getXXResourceDef();
+		for(RangerResourceDef resource : resources) {
+			XXResourceDef parent = xxResDefDao.findByNameAndServiceDefId(resource.getParent(), serviceDefId);
+			Long parentId = (parent != null) ? parent.getId() : null;
+			
+			XXResourceDef xResource = new XXResourceDef();
+			xResource = serviceDefService.populateRangerResourceDefToXX(resource, xResource, createdSvcDef);
+			xResource.setParent(parentId);
+			xResource = xxResDefDao.create(xResource);
+		}
+		
+		XXAccessTypeDefDao xxATDDao = daoMgr.getXXAccessTypeDef();
+		for(RangerAccessTypeDef accessType : accessTypes) {
+			XXAccessTypeDef xAccessType = new XXAccessTypeDef();
+			xAccessType = serviceDefService.populateRangerAccessTypeDefToXX(accessType, xAccessType, createdSvcDef);
+			xAccessType = xxATDDao.create(xAccessType);
+			
+			Collection<String> impliedGrants = accessType.getImpliedGrants();
+			XXAccessTypeDefGrantsDao xxATDGrantDao = daoMgr.getXXAccessTypeDefGrants();
+			for(String impliedGrant : impliedGrants) {
+				XXAccessTypeDefGrants xImpliedGrant = new XXAccessTypeDefGrants();
+				xImpliedGrant.setAtdid(xAccessType.getId());
+				xImpliedGrant.setImpliedgrant(impliedGrant);
+				xImpliedGrant = xxATDGrantDao.create(xImpliedGrant);
+			}
+		}
+		
+		XXPolicyConditionDefDao xxPolCondDao = daoMgr.getXXPolicyConditionDef();
+		for (RangerPolicyConditionDef policyCondition : policyConditions) {
+			XXPolicyConditionDef xPolicyCondition = new XXPolicyConditionDef();
+			xPolicyCondition = serviceDefService
+					.populateRangerPolicyConditionDefToXX(policyCondition,
+							xPolicyCondition, createdSvcDef);
+			xPolicyCondition = xxPolCondDao.create(xPolicyCondition);
+		}
+		
+		XXEnumDefDao xxEnumDefDao = daoMgr.getXXEnumDef();
+		for(RangerEnumDef vEnum : enums) {
+			XXEnumDef xEnum = new XXEnumDef();
+			xEnum = serviceDefService.populateRangerEnumDefToXX(vEnum, xEnum, createdSvcDef);
+			xEnum = xxEnumDefDao.create(xEnum);
+			
+			List<RangerEnumElementDef> elements = vEnum.getElements();
+			XXEnumElementDefDao xxEnumEleDefDao = daoMgr.getXXEnumElementDef();
+			for(RangerEnumElementDef element : elements) {
+				XXEnumElementDef xElement = new XXEnumElementDef();
+				xElement = serviceDefService.populateRangerEnumElementDefToXX(element, xElement, xEnum);
+				xElement = xxEnumEleDefDao.create(xElement);
+			}
+		}
+		RangerServiceDef createdServiceDef = serviceDefService.getPopulatedViewObject(createdSvcDef);
+		dataHistService.createObjectDataHistory(createdServiceDef, RangerDataHistService.ACTION_CREATE);
+		return createdServiceDef;
+	}
+
+	@Override
+	public RangerServiceDef updateServiceDef(RangerServiceDef serviceDef)
+			throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.updateServiceDef(" + serviceDef + ")");
+		}
+		return null;
+	}
+
+	@Override
+	public void deleteServiceDef(Long servceId) throws Exception {
+		
+	}
+
+	@Override
+	public RangerServiceDef getServiceDef(Long id) throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.getServiceDef(" + id + ")");
+		}
+		return serviceDefService.read(id);
+	}
+
+	@Override
+	public RangerServiceDef getServiceDefByName(String name) throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.getServiceDefByName(" + name + ")");
+		}
+		
+		XXServiceDef xServiceDef = daoMgr.getXXServiceDef().findByName(name);
+		return serviceDefService.getPopulatedViewObject(xServiceDef);
+	}
+
+	@Override
+	public List<RangerServiceDef> getServiceDefs(SearchFilter filter) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServiceDefs()");
+		}
+		List<RangerServiceDef> serviceDefList = serviceDefService.getServiceDefs(filter);
+
+		return serviceDefList;
+	}
+
+	@Override
+	public RangerService createService(RangerService service) throws Exception {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDefDBStore.createService(" + service + ")");
+		}
+		
+		UserSessionBase usb = ContextUtil.getCurrentUserSession();
+		if (usb != null && usb.isUserAdmin()) {
+			Map<String, String> configs = service.getConfigs();
+			Map<String, String> validConfigs = validateRequiredConfigParams(
+					service, configs);
+			if (validConfigs == null) {
+				if (LOG.isDebugEnabled()) {
+					LOG.debug("==> ConfigParams cannot be null, ServiceDefDBStore.createService(" + service + ")");
+				}
+				throw restErrorUtil.createRESTException(
+						"ConfigParams cannot be null.",
+						MessageEnums.ERROR_CREATING_OBJECT);
+			}
+
+			service = svcService.create(service);
+			XXService xCreatedService = daoMgr.getXXService().getById(service.getId());
+			VXUser vXUser = null;
+
+			XXServiceConfigMapDao xConfMapDao = daoMgr.getXXServiceConfigMap();
+			for (Entry<String, String> configMap : validConfigs.entrySet()) {
+				String configKey = configMap.getKey();
+				String configValue = configMap.getValue();
+				
+				if(StringUtils.equalsIgnoreCase(configKey, "username")) {
+					String userName = stringUtil.getValidUserName(configValue);
+					XXUser xxUser = daoMgr.getXXUser().findByUserName(userName);
+					if (xxUser != null) {
+						vXUser = xUserService.populateViewBean(xxUser);
+					} else {
+						vXUser = new VXUser();
+						vXUser.setName(userName);
+						vXUser.setUserSource(RangerCommonEnums.USER_EXTERNAL);
+						vXUser = xUserMgr.createXUser(vXUser);
+					}
+				}
+
+				XXServiceConfigMap xConfMap = new XXServiceConfigMap();
+				xConfMap = (XXServiceConfigMap) rangerAuditFields.populateAuditFields(xConfMap, xCreatedService);
+				xConfMap.setServiceId(xCreatedService.getId());
+				xConfMap.setConfigkey(configKey);
+				xConfMap.setConfigvalue(configValue);
+				xConfMap = xConfMapDao.create(xConfMap);
+			}
+			RangerService createdService = svcService.getPopulatedViewObject(xCreatedService);
+			dataHistService.createObjectDataHistory(createdService, RangerDataHistService.ACTION_CREATE);
+			
+			createDefaultPolicy(xCreatedService, vXUser);
+			
+			return createdService;
+		} else {
+			LOG.debug("User id : " + usb.getUserId() + " doesn't have admin access to create repository.");
+			throw restErrorUtil.createRESTException(
+							"Sorry, you don't have permission to perform the operation",
+							MessageEnums.OPER_NOT_ALLOWED_FOR_ENTITY);
+
+		}
+	}
+
+	@Override
+	public RangerService updateService(RangerService service) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.updateService()");
+		}
+		
+		UserSessionBase usb = ContextUtil.getCurrentUserSession();
+		if (usb != null && usb.isUserAdmin()) {
+			
+			XXService existing = daoMgr.getXXService().getById(service.getId());
+
+			if(existing == null) {
+				throw restErrorUtil.createRESTException(
+						"no service exists with ID=" + service.getId(),
+						MessageEnums.DATA_NOT_FOUND);
+			}
+			
+			String existingName = existing.getName();
+
+			boolean renamed = !StringUtils.equalsIgnoreCase(service.getName(), existingName);
+			
+			if(renamed) {
+				XXService newNameService = daoMgr.getXXService().findByName(service.getName());
+
+				if(newNameService != null) {
+					throw restErrorUtil.createRESTException("another service already exists with name '"
+							+ service.getName() + "'. ID=" + newNameService.getId(), MessageEnums.DATA_NOT_UPDATABLE);
+				}
+			}
+			
+			Map<String, String> configs = service.getConfigs();
+			Map<String, String> validConfigs = validateRequiredConfigParams(
+					service, configs);
+			if (validConfigs == null) {
+				if (LOG.isDebugEnabled()) {
+					LOG.debug("==> ConfigParams cannot be null, ServiceDefDBStore.createService(" + service + ")");
+				}
+				throw restErrorUtil.createRESTException(
+						"ConfigParams cannot be null.",
+						MessageEnums.ERROR_CREATING_OBJECT);
+			}
+			service = svcService.update(service);
+			XXService xUpdService = daoMgr.getXXService().getById(service.getId());
+			
+			List<XXServiceConfigMap> dbConfigMaps = daoMgr.getXXServiceConfigMap().findByServiceId(service.getId());
+			for(XXServiceConfigMap dbConfigMap : dbConfigMaps) {
+				daoMgr.getXXServiceConfigMap().remove(dbConfigMap);
+			}
+			
+			VXUser vXUser = null;
+			XXServiceConfigMapDao xConfMapDao = daoMgr.getXXServiceConfigMap();
+			for (Entry<String, String> configMap : validConfigs.entrySet()) {
+				String configKey = configMap.getKey();
+				String configValue = configMap.getValue();
+				
+				if(StringUtils.equalsIgnoreCase(configKey, "username")) {
+					String userName = stringUtil.getValidUserName(configValue);
+					XXUser xxUser = daoMgr.getXXUser().findByUserName(userName);
+					if (xxUser != null) {
+						vXUser = xUserService.populateViewBean(xxUser);
+					} else {
+						vXUser = new VXUser();
+						vXUser.setName(userName);
+						vXUser.setUserSource(RangerCommonEnums.USER_EXTERNAL);
+						vXUser = xUserMgr.createXUser(vXUser);
+					}
+				}
+
+				XXServiceConfigMap xConfMap = new XXServiceConfigMap();
+				xConfMap = (XXServiceConfigMap) rangerAuditFields.populateAuditFields(xConfMap, xUpdService);
+				xConfMap.setServiceId(service.getId());
+				xConfMap.setConfigkey(configKey);
+				xConfMap.setConfigvalue(configValue);
+				xConfMap = xConfMapDao.create(xConfMap);
+			}
+			RangerService updService = svcService.getPopulatedViewObject(xUpdService);
+			dataHistService.createObjectDataHistory(updService, RangerDataHistService.ACTION_UPDATE);
+			return updService;
+		} else {
+			LOG.debug("User id : " + usb.getUserId() + " doesn't have admin access to update repository.");
+			throw restErrorUtil.createRESTException(
+							"Sorry, you don't have permission to perform the operation",
+							MessageEnums.OPER_NOT_ALLOWED_FOR_ENTITY);
+
+		}
+	}
+
+	@Override
+	public void deleteService(Long id) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.deleteService(" + id + ")");
+		}
+
+		RangerService service = getService(id);
+
+		if(service == null) {
+			throw new Exception("no service exists with ID=" + id);
+		}
+		
+		List<XXPolicy> policies = daoMgr.getXXPolicy().findByServiceId(service.getId());
+		for(XXPolicy policy : policies) {
+			LOG.info("Deleting Policy, policyName: " + policy.getName());
+			deletePolicy(policy.getId());
+		}
+		
+		XXServiceConfigMapDao configDao = daoMgr.getXXServiceConfigMap();
+		List<XXServiceConfigMap> configs = configDao.findByServiceId(service.getId());
+		for (XXServiceConfigMap configMap : configs) {
+			configDao.remove(configMap);
+		}
+		
+		svcService.delete(service);
+		dataHistService.createObjectDataHistory(service, RangerDataHistService.ACTION_DELETE);
+	}
+
+	@Override
+	public RangerService getService(Long id) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getService()");
+		}
+		return svcService.read(id);
+	}
+
+	@Override
+	public RangerService getServiceByName(String name) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServiceByName()");
+		}
+		XXService xService = daoMgr.getXXService().findByName(name);
+		return svcService.getPopulatedViewObject(xService);
+	}
+
+	@Override
+	public List<RangerService> getServices(SearchFilter filter) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServices()");
+		}
+		List<RangerService> serviceList = svcService.getServices(filter);
+
+		return serviceList;
+	}
+
+	@Override
+	public RangerPolicy createPolicy(RangerPolicy policy) throws Exception {
+
+		RangerService service = getServiceByName(policy.getService());
+		
+		if(service == null) {
+			throw new Exception("service does not exist - name=" + policy.getService());
+		}
+		
+		XXPolicy existing = daoMgr.getXXPolicy().findByName(policy.getName());
+
+		if(existing != null) {
+			throw new Exception("policy already exists: ServiceName=" + policy.getService() + "; PolicyName=" + policy.getName() + ". ID=" + existing.getId());
+		}
+		
+		Map<String, RangerPolicyResource> resources = policy.getResources();
+		List<RangerPolicyItem> policyItems = policy.getPolicyItems();
+
+		policy = policyService.create(policy);
+		XXPolicy xCreatedPolicy = daoMgr.getXXPolicy().getById(policy.getId());
+
+		createNewResourcesForPolicy(policy, xCreatedPolicy, resources);
+		createNewPolicyItemsForPolicy(policy, xCreatedPolicy, policyItems);
+		
+		RangerPolicy createdPolicy = policyService.getPopulatedViewObject(xCreatedPolicy);
+		dataHistService.createObjectDataHistory(createdPolicy, RangerDataHistService.ACTION_CREATE);
+		
+		return createdPolicy;
+	}
+
+	@Override
+	public RangerPolicy updatePolicy(RangerPolicy policy) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.updatePolicy(" + policy + ")");
+		}
+		UserSessionBase currentUserSession = ContextUtil
+				.getCurrentUserSession();
+		if (currentUserSession == null) {
+			throw restErrorUtil.createRESTException("Policy updation not "
+					+ "allowed",MessageEnums.OPER_NO_PERMISSION);
+		}
+		
+		RangerPolicy existing = getPolicy(policy.getId());
+
+		if(existing == null) {
+			throw new Exception("no policy exists with ID=" + policy.getId());
+		}
+
+		RangerService service = getServiceByName(policy.getService());
+		
+		if(service == null) {
+			throw new Exception("service does not exist - name=" + policy.getService());
+		}
+		if(! StringUtils.equalsIgnoreCase(existing.getService(), policy.getService())) {
+			throw new Exception("policy id=" + policy.getId() + " already exists in service " + existing.getService() + ". It can not be moved to service " + policy.getService());
+		}
+		boolean renamed = !StringUtils.equalsIgnoreCase(policy.getName(), existing.getName());
+		
+		if(renamed) {
+			XXPolicy newNamePolicy = daoMgr.getXXPolicy().findByName(policy.getName());
+
+			if(newNamePolicy != null) {
+				throw new Exception("another policy already exists with name '" + policy.getName() + "'. ID=" + newNamePolicy.getId());
+			}
+		}
+		Map<String, RangerPolicyResource> newResources = policy.getResources();
+		List<RangerPolicyItem> newPolicyItems = policy.getPolicyItems();
+		
+		policy = policyService.update(policy);
+		XXPolicy newUpdPolicy = daoMgr.getXXPolicy().getById(policy.getId());
+
+		deleteExistingPolicyResources(policy);
+		deleteExistingPolicyItems(policy);
+		
+		createNewResourcesForPolicy(policy, newUpdPolicy, newResources);
+		createNewPolicyItemsForPolicy(policy, newUpdPolicy, newPolicyItems);
+		
+		handlePolicyUpdate(service);
+		RangerPolicy updPolicy = policyService.getPopulatedViewObject(newUpdPolicy);
+		dataHistService.createObjectDataHistory(updPolicy, RangerDataHistService.ACTION_UPDATE);
+		
+		return updPolicy;
+	}
+
+	@Override
+	public void deletePolicy(Long policyId) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.deletePolicy(" + policyId + ")");
+		}
+
+		RangerPolicy policy = getPolicy(policyId);
+
+		if(policy == null) {
+			throw new Exception("no policy exists with ID=" + policyId);
+		}
+
+		String policyName = policy.getName();
+		RangerService service = getServiceByName(policy.getService());
+		
+		if(service == null) {
+			throw new Exception("service does not exist - name='" + policy.getService());
+		}
+		
+		deleteExistingPolicyItems(policy);
+		deleteExistingPolicyResources(policy);
+		
+		policyService.delete(policy);
+		handlePolicyUpdate(service);
+		
+		dataHistService.createObjectDataHistory(policy, RangerDataHistService.ACTION_DELETE);
+		
+		LOG.info("Policy Deleted Successfully. PolicyName : " +policyName);
+	}
+
+	@Override
+	public RangerPolicy getPolicy(Long id) throws Exception {
+		return policyService.read(id);
+	}
+
+	@Override
+	public List<RangerPolicy> getPolicies(SearchFilter filter) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getPolicies()");
+		}
+
+		List<RangerPolicy> ret = new ArrayList<RangerPolicy>();
+		List<XXPolicy> policyList = daoMgr.getXXPolicy().getAll();
+		for (XXPolicy xPolicy : policyList) {
+			RangerPolicy policy = policyService.getPopulatedViewObject(xPolicy);
+			ret.add(policy);
+		}
+
+		return ret;
+	}
+
+	@Override
+	public List<RangerPolicy> getServicePolicies(Long serviceId, SearchFilter filter) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServicePolicies(" + serviceId + ")");
+		}
+
+		List<XXPolicy> servicePolicyList = daoMgr.getXXPolicy().findByServiceId(serviceId);
+		List<RangerPolicy> servicePolicies = new ArrayList<RangerPolicy>();
+		for(XXPolicy xPolicy : servicePolicyList) {
+			RangerPolicy servicePolicy = policyService.getPopulatedViewObject(xPolicy);
+			servicePolicies.add(servicePolicy);
+		}
+
+		return servicePolicies;
+	}
+
+	@Override
+	public List<RangerPolicy> getServicePolicies(String serviceName, SearchFilter filter) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServicePolicies(" + serviceName + ")");
+		}
+
+		List<RangerPolicy> ret = new ArrayList<RangerPolicy>();
+
+		try {
+			XXService service = daoMgr.getXXService().findByName(serviceName);
+
+			if(service == null) {
+				return ret;
+			}
+
+			List<XXPolicy> policyList = daoMgr.getXXPolicy().findByServiceId(service.getId());
+			for (XXPolicy xPolicy : policyList) {
+				RangerPolicy policy = policyService.getPopulatedViewObject(xPolicy);
+				ret.add(policy);
+			}
+		} catch(Exception excp) {
+			LOG.error("ServiceDBStore.getServicePolicies(" + serviceName + "): failed to read policies", excp);
+		}
+
+		return ret;
+	}
+
+	@Override
+	public ServicePolicies getServicePoliciesIfUpdated(String serviceName, Long lastKnownVersion) throws Exception {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.getServicePoliciesIfUpdated(" + serviceName + ", " + lastKnownVersion + ")");
+		}
+
+		ServicePolicies ret = null;
+
+		RangerService service = getServiceByName(serviceName);
+
+		if(service == null) {
+			throw new Exception("service does not exist - name=" + serviceName);
+		}
+
+		RangerServiceDef serviceDef = getServiceDefByName(service.getType());
+
+		if(serviceDef == null) {
+			throw new Exception(service.getType() + ": unknown service-def)");
+		}
+
+		if(lastKnownVersion == null || service.getPolicyVersion() == null || lastKnownVersion.longValue() != service.getPolicyVersion().longValue()) {
+			SearchFilter filter = new SearchFilter(SearchFilter.SERVICE_NAME, serviceName);
+
+			List<RangerPolicy> policies = getServicePolicies(serviceName, filter);
+
+			ret = new ServicePolicies();
+
+			ret.setServiceId(service.getId());
+			ret.setServiceName(service.getName());
+			ret.setPolicyVersion(service.getPolicyVersion());
+			ret.setPolicyUpdateTime(service.getPolicyUpdateTime());
+			ret.setPolicies(policies);
+			ret.setServiceDef(serviceDef);
+		}
+
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("<== ServiceDBStore.getServicePoliciesIfUpdated(" + serviceName + ", " + lastKnownVersion + "): count=" + ((ret == null || ret.getPolicies() == null) ? 0 : ret.getPolicies().size()));
+		}
+
+		if(ret != null && ret.getPolicies() != null) {
+			Collections.sort(ret.getPolicies(), idComparator);
+		}
+
+		return ret;
+	}
+	
+	private void createDefaultPolicy(XXService createdService, VXUser vXUser) throws Exception {
+		RangerPolicy policy = new RangerPolicy();
+		String policyName=createdService.getName()+"-"+1+"-"+DateUtil.dateToString(DateUtil.getUTCDate(),"yyyyMMddHHmmss");
+		
+		policy.setIsEnabled(true);
+		policy.setVersion(1L);
+		policy.setName(policyName);
+		policy.setService(createdService.getName());
+		policy.setDescription("Default Policy for Service: " + createdService.getName());
+		policy.setIsAuditEnabled(true);
+		
+		Map<String, RangerPolicyResource> resources = new HashMap<String, RangerPolicyResource>();
+		List<XXResourceDef> resDefList = daoMgr.getXXResourceDef().findByServiceDefId(createdService.getType());
+		
+		for(XXResourceDef resDef : resDefList) {
+			RangerPolicyResource polRes = new RangerPolicyResource();
+			polRes.setIsExcludes(false);
+			polRes.setIsRecursive(false);
+			
+			String value;
+			if("path".equalsIgnoreCase(resDef.getName())) {
+				value = "/*/*";
+			} else {
+				value = "*";
+			}
+			polRes.setValue(value);
+			resources.put(resDef.getName(), polRes);
+		}
+		policy.setResources(resources);
+		
+		if (vXUser != null) {
+			List<RangerPolicyItem> policyItems = new ArrayList<RangerPolicyItem>();
+			RangerPolicyItem policyItem = new RangerPolicyItem();
+
+			List<String> users = new ArrayList<String>();
+			users.add(vXUser.getName());
+			policyItem.setUsers(users);
+			
+			List<XXAccessTypeDef> accessTypeDefs = daoMgr.getXXAccessTypeDef().findByServiceDefId(createdService.getType());
+			List<RangerPolicyItemAccess> accesses = new ArrayList<RangerPolicyItemAccess>();
+			for(XXAccessTypeDef accessTypeDef : accessTypeDefs) {
+				RangerPolicyItemAccess access = new RangerPolicyItemAccess();
+				access.setType(accessTypeDef.getName());
+				access.setIsAllowed(true);
+				accesses.add(access);
+			}
+			policyItem.setAccesses(accesses);
+
+			policyItem.setDelegateAdmin(true);
+			policyItems.add(policyItem);
+			policy.setPolicyItems(policyItems);
+		}
+		policy = createPolicy(policy);
+		handlePolicyUpdate(svcService.getPopulatedViewObject(createdService));
+	}
+
+
+	private Map<String, String> validateRequiredConfigParams(RangerService service, Map<String, String> configs) {
+		if(LOG.isDebugEnabled()) {
+			LOG.debug("==> ServiceDBStore.validateRequiredConfigParams()");
+		}
+		if(configs == null) {
+			return null;
+		}
+		
+		List<XXServiceConfigDef> svcConfDefList = daoMgr.getXXServiceConfigDef()
+				.findByServiceDefName(service.getType());
+		for(XXServiceConfigDef svcConfDef : svcConfDefList ) {
+			String confField = configs.get(svcConfDef.getName());
+			
+			if(svcConfDef.getIsMandatory() && stringUtil.isEmpty(confField)) {
+				throw restErrorUtil.createRESTException(
+						"Please provide value of mandatory: "+ svcConfDef.getName(),
+						MessageEnums.INVALID_INPUT_DATA);
+			}
+		}
+		Map<String, String> validConfigs = new HashMap<String, String>();
+		for(Entry<String, String> config : configs.entrySet()) {
+			String confKey = config.getKey();
+			String confValue = config.getValue();
+
+			boolean found = false;
+			for(XXServiceConfigDef xConfDef : svcConfDefList) {
+				if((xConfDef.getName()).equalsIgnoreCase(confKey)) {
+					found = true;
+					break;
+				}
+			}
+			if(found) {
+				validConfigs.put(confKey, confValue);
+			} else {
+				LOG.info("Ignoring this config parameter:" + confKey
+						+ ", as its not valid conf param for service");
+			}
+		}
+		return validConfigs;
+	}
+	
+	private void handlePolicyUpdate(RangerService service) throws Exception {
+		if(service == null) {
+			return;
+		}
+		
+		Long policyVersion = service.getPolicyVersion();
+
+		if(policyVersion == null) {
+			policyVersion = new Long(1);
+		} else {
+			policyVersion = new Long(policyVersion.longValue() + 1);
+		}
+		
+		service.setPolicyVersion(policyVersion);
+		service.setPolicyUpdateTime(new Date());
+		service = updateService(service);
+	}
+	
+	private void createNewPolicyItemsForPolicy(RangerPolicy policy, XXPolicy xPolicy, List<RangerPolicyItem> policyItems) {
+		
+		for (RangerPolicyItem policyItem : policyItems) {
+			XXPolicyItem xPolicyItem = new XXPolicyItem();
+			xPolicyItem = (XXPolicyItem) rangerAuditFields.populateAuditFields(
+					xPolicyItem, xPolicy);
+			xPolicyItem.setDelegateAdmin(policyItem.getDelegateAdmin());
+			xPolicyItem.setPolicyId(policy.getId());
+			xPolicyItem = daoMgr.getXXPolicyItem().create(xPolicyItem);
+
+			List<RangerPolicyItemAccess> accesses = policyItem.getAccesses();
+			for (RangerPolicyItemAccess access : accesses) {
+
+				XXAccessTypeDef xAccTypeDef = daoMgr.getXXAccessTypeDef()
+						.findByNameAndServiceId(access.getType(),
+								xPolicy.getService());
+				if (xAccTypeDef == null) {
+					LOG.info("One of given accessType is not valid for this policy. access: "
+							+ access.getType() + ", Ignoring this access");
+					continue;
+				}
+
+				XXPolicyItemAccess xPolItemAcc = new XXPolicyItemAccess();
+				xPolItemAcc = (XXPolicyItemAccess) rangerAuditFields.populateAuditFields(xPolItemAcc, xPolicyItem);
+				xPolItemAcc.setIsAllowed(access.getIsAllowed());
+
+				xPolItemAcc.setType(xAccTypeDef.getId());
+				xPolItemAcc.setPolicyitemid(xPolicyItem.getId());
+				xPolItemAcc = daoMgr.getXXPolicyItemAccess()
+						.create(xPolItemAcc);
+			}
+			List<String> users = policyItem.getUsers();
+			for(String user : users) {
+				XXUser xUser = daoMgr.getXXUser().findByUserName(user);
+				if(xUser == null) {
+					LOG.info("User does not exists with username: " 
+							+ user + ", Ignoring permissions given to this user for policy");
+					continue;
+				}
+				XXPolicyItemUserPerm xUserPerm = new XXPolicyItemUserPerm();
+				xUserPerm = (XXPolicyItemUserPerm) rangerAuditFields.populateAuditFields(xUserPerm, xPolicyItem);
+				xUserPerm.setUserId(xUser.getId());
+				xUserPerm.setPolicyItemId(xPolicyItem.getId());
+				xUserPerm = daoMgr.getXXPolicyItemUserPerm().create(xUserPerm);
+			}
+			
+			List<String> groups = policyItem.getGroups();
+			for(String group : groups) {
+				XXGroup xGrp = daoMgr.getXXGroup().findByGroupName(group);
+				if(xGrp == null) {
+					LOG.info("Group does not exists with groupName: " 
+							+ group + ", Ignoring permissions given to this group for policy");
+					continue;
+				}
+				XXPolicyItemGroupPerm xGrpPerm = new XXPolicyItemGroupPerm();
+				xGrpPerm = (XXPolicyItemGroupPerm) rangerAuditFields.populateAuditFields(xGrpPerm, xPolicyItem);
+				xGrpPerm.setGroupId(xGrp.getId());
+				xGrpPerm.setPolicyItemId(xPolicyItem.getId());
+				xGrpPerm = daoMgr.getXXPolicyItemGroupPerm().create(xGrpPerm);
+			}
+			
+			List<RangerPolicyItemCondition> conditions = policyItem.getConditions();
+			for(RangerPolicyItemCondition condition : conditions) {
+				XXPolicyConditionDef xPolCond = daoMgr
+						.getXXPolicyConditionDef().findByPolicyItemIdAndName(
+								xPolicyItem.getId(), condition.getType());
+				
+				if(xPolCond == null) {
+					LOG.info("PolicyCondition is not valid, condition: "
+							+ condition.getType()
+							+ ", Ignoring creation of this policy condition");
+					continue;
+				}
+				
+				for(String value : condition.getValues()) {
+					XXPolicyItemCondition xPolItemCond = new XXPolicyItemCondition();
+					xPolItemCond = (XXPolicyItemCondition) rangerAuditFields.populateAuditFields(xPolItemCond, xPolicyItem);
+					xPolItemCond.setPolicyItemId(xPolicyItem.getId());
+					xPolItemCond.setType(xPolCond.getId());
+					xPolItemCond.setValue(value);
+					xPolItemCond = daoMgr.getXXPolicyItemCondition().create(xPolItemCond);
+				}
+			}
+		}
+	}
+
+	private void createNewResourcesForPolicy(RangerPolicy policy, XXPolicy xPolicy, Map<String, RangerPolicyResource> resources) {
+		
+		for (Entry<String, RangerPolicyResource> resource : resources.entrySet()) {
+			RangerPolicyResource policyRes = resource.getValue();
+
+			XXResourceDef xResDef = daoMgr.getXXResourceDef()
+					.findByNameAndPolicyId(resource.getKey(), policy.getId());
+			if (xResDef == null) {
+				LOG.info("No Such Resource found, resourceName : "
+						+ resource.getKey() + ", Ignoring this resource.");
+				continue;
+			}
+
+			XXPolicyResource xPolRes = new XXPolicyResource();
+			xPolRes = (XXPolicyResource) rangerAuditFields.populateAuditFields(xPolRes, xPolicy);
+
+			xPolRes.setIsExcludes(policyRes.getIsExcludes());
+			xPolRes.setIsRecursive(policyRes.getIsRecursive());
+			xPolRes.setPolicyId(policy.getId());
+			xPolRes.setResDefId(xResDef.getId());
+			xPolRes = daoMgr.getXXPolicyResource().create(xPolRes);
+
+			List<String> values = policyRes.getValues();
+			for (String value : values) {
+				XXPolicyResourceMap xPolResMap = new XXPolicyResourceMap();
+				xPolResMap = (XXPolicyResourceMap) rangerAuditFields.populateAuditFields(xPolResMap, xPolRes);
+				xPolResMap.setResourceId(xPolRes.getId());
+				xPolResMap.setValue(value);
+
+				xPolResMap = daoMgr.getXXPolicyResourceMap().create(xPolResMap);
+			}
+		}
+	}
+
+	private Boolean deleteExistingPolicyItems(RangerPolicy policy) {
+		if(policy == null) {
+			return false;
+		}
+		
+		XXPolicyItemDao policyItemDao = daoMgr.getXXPolicyItem();
+		List<XXPolicyItem> policyItems = policyItemDao.findByPolicyId(policy.getId());
+		for(XXPolicyItem policyItem : policyItems) {
+			Long polItemId = policyItem.getId();
+			
+			XXPolicyItemConditionDao polCondDao = daoMgr.getXXPolicyItemCondition();
+			List<XXPolicyItemCondition> conditions = polCondDao.findByPolicyItemId(polItemId);
+			for(XXPolicyItemCondition condition : conditions) {
+				polCondDao.remove(condition);
+			}
+			
+			XXPolicyItemGroupPermDao grpPermDao = daoMgr.getXXPolicyItemGroupPerm();
+			List<XXPolicyItemGroupPerm> groups = grpPermDao.findByPolicyItemId(polItemId);
+			for(XXPolicyItemGroupPerm group : groups) {
+				grpPermDao.remove(group);
+			}
+			
+			XXPolicyItemUserPermDao userPermDao = daoMgr.getXXPolicyItemUserPerm();
+			List<XXPolicyItemUserPerm> users = userPermDao.findByPolicyItemId(polItemId);
+			for(XXPolicyItemUserPerm user : users) {
+				userPermDao.remove(user);
+			}
+			
+			XXPolicyItemAccessDao polItemAccDao = daoMgr.getXXPolicyItemAccess();
+			List<XXPolicyItemAccess> accesses = polItemAccDao.findByPolicyItemId(polItemId);
+			for(XXPolicyItemAccess access : accesses) {
+				polItemAccDao.remove(access);
+			}
+			
+			policyItemDao.remove(policyItem);
+		}
+		return true;
+	}
+
+	private Boolean deleteExistingPolicyResources(RangerPolicy policy) {
+		if(policy == null) {
+			return false;
+		}
+		
+		List<XXPolicyResource> resources = daoMgr.getXXPolicyResource().findByPolicyId(policy.getId());
+		
+		XXPolicyResourceDao resDao = daoMgr.getXXPolicyResource();
+		for(XXPolicyResource resource : resources) {
+			List<XXPolicyResourceMap> resMapList = daoMgr.getXXPolicyResourceMap().findByPolicyResId(resource.getId());
+			
+			XXPolicyResourceMapDao resMapDao = daoMgr.getXXPolicyResourceMap();
+			for(XXPolicyResourceMap resMap : resMapList) {
+				resMapDao.remove(resMap);
+			}
+			resDao.remove(resource);
+		}
+		return true;
+	}
+
+	private final static Comparator<RangerBaseModelObject> idComparator = new Comparator<RangerBaseModelObject>() {
+		@Override
+		public int compare(RangerBaseModelObject o1, RangerBaseModelObject o2) {
+			Long val1 = (o1 != null) ? o1.getId() : null;
+			Long val2 = (o2 != null) ? o2.getId() : null;
+
+			return ObjectUtils.compare(val1, val2);
+		}
+	};
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java
new file mode 100644
index 0000000..df68874
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefDao.java
@@ -0,0 +1,45 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXAccessTypeDef;
+
+public class XXAccessTypeDefDao extends BaseDao<XXAccessTypeDef> {
+
+	public XXAccessTypeDefDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+	
+	public List<XXAccessTypeDef> findByServiceDefId(Long serviceDefId) {
+		if (serviceDefId == null) {
+			return new ArrayList<XXAccessTypeDef>();
+		}
+		try {
+			List<XXAccessTypeDef> retList = getEntityManager()
+					.createNamedQuery("XXAccessTypeDef.findByServiceDefId", tClass)
+					.setParameter("serviceDefId", serviceDefId).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXAccessTypeDef>();
+		}
+	}
+
+	public XXAccessTypeDef findByNameAndServiceId(String name, Long serviceId) {
+		if(name == null || serviceId == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXAccessTypeDef.findByNameAndServiceId", tClass)
+					.setParameter("name", name).setParameter("serviceId", serviceId)
+					.getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
new file mode 100644
index 0000000..2ddb845
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXAccessTypeDefGrantsDao.java
@@ -0,0 +1,33 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXAccessTypeDefGrants;
+
+public class XXAccessTypeDefGrantsDao extends BaseDao<XXAccessTypeDefGrants> {
+
+	public XXAccessTypeDefGrantsDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	@SuppressWarnings("unchecked")
+	public List<String> findImpliedGrantsByATDId(Long atdId) {
+		if(atdId == null) {
+			return new ArrayList<String>();
+		}
+		try {
+			List<String> returnList = getEntityManager()
+					.createNamedQuery("XXAccessTypeDefGrants.findImpliedGrantsByATDId")
+					.setParameter("atdId", atdId).getResultList();
+			
+			return returnList;
+		} catch (NoResultException e) {
+			return new ArrayList<String>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java
new file mode 100644
index 0000000..29c4246
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXDataHistDao.java
@@ -0,0 +1,29 @@
+package org.apache.ranger.db;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXDataHist;
+
+public class XXDataHistDao extends BaseDao<XXDataHist> {
+
+	public XXDataHistDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public XXDataHist findLatestByObjectClassTypeAndObjectId(Integer classType, Long objectId) {
+		if(classType == null || objectId == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXDataHist.findLatestByObjectClassTypeAndObjectId", tClass)
+					.setParameter("classType", classType)
+					.setParameter("objectId", objectId)
+					.setMaxResults(1).getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java
new file mode 100644
index 0000000..0fbeb7f
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXEnumDefDao.java
@@ -0,0 +1,32 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXEnumDef;
+import org.apache.ranger.entity.XXPolicyConditionDef;
+
+public class XXEnumDefDao extends BaseDao<XXEnumDef> {
+
+	public XXEnumDefDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXEnumDef> findByServiceDefId(Long serviceDefId) {
+		if (serviceDefId == null) {
+			return new ArrayList<XXEnumDef>();
+		}
+		try {
+			List<XXEnumDef> retList = getEntityManager()
+					.createNamedQuery("XXEnumDef.findByServiceDefId", tClass)
+					.setParameter("serviceDefId", serviceDefId).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXEnumDef>();
+		}
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java
new file mode 100644
index 0000000..f17d478
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXEnumElementDefDao.java
@@ -0,0 +1,32 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXEnumElementDef;
+import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef;
+
+public class XXEnumElementDefDao extends BaseDao<XXEnumElementDef> {
+
+	public XXEnumElementDefDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXEnumElementDef> findByEnumDefId(Long enumDefId) {
+		if(enumDefId == null) {
+			return new ArrayList<XXEnumElementDef>();
+		}
+		try {
+			List<XXEnumElementDef> returnList = getEntityManager()
+					.createNamedQuery("XXEnumElementDef.findByEnumDefId", tClass)
+					.setParameter("enumDefId", enumDefId).getResultList();
+			return returnList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXEnumElementDef>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java
new file mode 100644
index 0000000..ac69697
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyConditionDefDao.java
@@ -0,0 +1,59 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyConditionDef;
+
+public class XXPolicyConditionDefDao extends BaseDao<XXPolicyConditionDef> {
+
+	public XXPolicyConditionDefDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXPolicyConditionDef> findByServiceDefId(Long serviceDefId) {
+		if (serviceDefId == null) {
+			return new ArrayList<XXPolicyConditionDef>();
+		}
+		try {
+			List<XXPolicyConditionDef> retList = getEntityManager()
+					.createNamedQuery("XXPolicyConditionDef.findByServiceDefId", tClass)
+					.setParameter("serviceDefId", serviceDefId).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyConditionDef>();
+		}
+	}
+
+	public List<XXPolicyConditionDef> findByPolicyItemId(Long polItemId) {
+		if(polItemId == null) {
+			return new ArrayList<XXPolicyConditionDef>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyConditionDef.findByPolicyItemId", tClass)
+					.setParameter("polItemId", polItemId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyConditionDef>();
+		}
+	}
+	
+	public XXPolicyConditionDef findByPolicyItemIdAndName(Long polItemId, String name) {
+		if(polItemId == null || name == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyConditionDef.findByPolicyItemIdAndName", tClass)
+					.setParameter("polItemId", polItemId)
+					.setParameter("name", name).getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
new file mode 100644
index 0000000..e2b4fcf
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyDao.java
@@ -0,0 +1,49 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicy;
+
+/**
+ */
+
+public class XXPolicyDao extends BaseDao<XXPolicy> {
+	/**
+	 * Default Constructor
+	 */
+	public XXPolicyDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public XXPolicy findByName(String polName) {
+		if (polName == null) {
+			return null;
+		}
+		try {
+			XXPolicy xPol = getEntityManager()
+					.createNamedQuery("XXPolicy.findByName", tClass)
+					.setParameter("polName", polName).getSingleResult();
+			return xPol;
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+	public List<XXPolicy> findByServiceId(Long serviceId) {
+		if (serviceId == null) {
+			return new ArrayList<XXPolicy>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicy.findByServiceId", tClass)
+					.setParameter("serviceId", serviceId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicy>();
+		}
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
new file mode 100644
index 0000000..31385ee
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemAccessDao.java
@@ -0,0 +1,30 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyItemAccess;
+
+public class XXPolicyItemAccessDao extends BaseDao<XXPolicyItemAccess> {
+
+	public XXPolicyItemAccessDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+	
+	public List<XXPolicyItemAccess> findByPolicyItemId(Long polItemId) {
+		if(polItemId == null) {
+			return new ArrayList<XXPolicyItemAccess>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyItemAccess.findByPolicyItemId", tClass)
+					.setParameter("polItemId", polItemId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItemAccess>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
new file mode 100644
index 0000000..6a3a355
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemConditionDao.java
@@ -0,0 +1,45 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyItemCondition;
+
+public class XXPolicyItemConditionDao extends BaseDao<XXPolicyItemCondition> {
+
+	public XXPolicyItemConditionDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+	
+	public List<XXPolicyItemCondition> findByPolicyItemId(Long polItemId) {
+		if(polItemId == null) {
+			return new ArrayList<XXPolicyItemCondition>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyItemCondition.findByPolicyItemId", tClass)
+					.setParameter("polItemId", polItemId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItemCondition>();
+		}
+	}
+
+	public List<XXPolicyItemCondition> findByPolicyItemAndDefId(Long polItemId,
+			Long polCondDefId) {
+		if(polItemId == null || polCondDefId == null) {
+			return new ArrayList<XXPolicyItemCondition>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyItemCondition.findByPolicyItemAndDefId", tClass)
+					.setParameter("polItemId", polItemId)
+					.setParameter("polCondDefId", polCondDefId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItemCondition>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java
new file mode 100644
index 0000000..8853ece
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemDao.java
@@ -0,0 +1,39 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyItem;
+
+/**
+ */
+
+public class XXPolicyItemDao extends BaseDao<XXPolicyItem> {
+	/**
+	 * Default Constructor
+	 */
+	public XXPolicyItemDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXPolicyItem> findByPolicyId(Long policyId) {
+		if (policyId == null) {
+			return new ArrayList<XXPolicyItem>();
+		}
+		try {
+			List<XXPolicyItem> returnList = getEntityManager()
+					.createNamedQuery("XXPolicyItem.findByPolicyId", tClass)
+					.setParameter("policyId", policyId).getResultList();
+			if (returnList == null) {
+				return new ArrayList<XXPolicyItem>();
+			}
+			return returnList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItem>();
+		}
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java
new file mode 100644
index 0000000..fd21d65
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemGroupPermDao.java
@@ -0,0 +1,30 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyItemGroupPerm;
+
+public class XXPolicyItemGroupPermDao extends BaseDao<XXPolicyItemGroupPerm> {
+
+	public XXPolicyItemGroupPermDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXPolicyItemGroupPerm> findByPolicyItemId(Long polItemId) {
+		if(polItemId == null) {
+			return new ArrayList<XXPolicyItemGroupPerm>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyItemGroupPerm.findByPolicyItemId", tClass)
+					.setParameter("polItemId", polItemId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItemGroupPerm>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java
new file mode 100644
index 0000000..8de8e91
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyItemUserPermDao.java
@@ -0,0 +1,30 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyItemUserPerm;
+
+public class XXPolicyItemUserPermDao extends BaseDao<XXPolicyItemUserPerm> {
+
+	public XXPolicyItemUserPermDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXPolicyItemUserPerm> findByPolicyItemId(Long polItemId) {
+		if(polItemId == null) {
+			return new ArrayList<XXPolicyItemUserPerm>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyItemUserPerm.findByPolicyItemId", tClass)
+					.setParameter("polItemId", polItemId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyItemUserPerm>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
new file mode 100644
index 0000000..6474467
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceDao.java
@@ -0,0 +1,44 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyResource;
+
+public class XXPolicyResourceDao extends BaseDao<XXPolicyResource> {
+
+	public XXPolicyResourceDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+	
+	public XXPolicyResource findByResDefIdAndPolicyId(Long resDefId, Long polId) {
+		if(resDefId == null || polId == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyResource.findByResDefIdAndPolicyId", tClass)
+					.setParameter("resDefId", resDefId).setParameter("polId", polId)
+					.getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+	public List<XXPolicyResource> findByPolicyId(Long policyId) {
+		if(policyId == null) {
+			return new ArrayList<XXPolicyResource>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyResource.findByPolicyId", tClass)
+					.setParameter("policyId", policyId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyResource>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java
new file mode 100644
index 0000000..06dd87e
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXPolicyResourceMapDao.java
@@ -0,0 +1,30 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXPolicyResourceMap;
+
+public class XXPolicyResourceMapDao extends BaseDao<XXPolicyResourceMap> {
+
+	public XXPolicyResourceMapDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+	
+	public List<XXPolicyResourceMap> findByPolicyResId(Long polResId) {
+		if(polResId == null) {
+			return new ArrayList<XXPolicyResourceMap>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXPolicyResourceMap.findByPolicyResId", tClass)
+					.setParameter("polResId", polResId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXPolicyResourceMap>();
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
new file mode 100644
index 0000000..c815f49
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXResourceDefDao.java
@@ -0,0 +1,72 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXResourceDef;
+
+public class XXResourceDefDao extends BaseDao<XXResourceDef> {
+
+	public XXResourceDefDao(RangerDaoManagerBase daoMgr) {
+		super(daoMgr);
+	}
+	
+	public XXResourceDef findByNameAndServiceDefId(String name, Long defId) {
+		if(name == null || defId == null) {
+			return null;
+		}
+		try {
+			return getEntityManager().createNamedQuery(
+					"XXResourceDef.findByNameAndDefId", tClass)
+					.setParameter("name", name).setParameter("defId", defId)
+					.getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+	public List<XXResourceDef> findByServiceDefId(Long serviceDefId) {
+		if (serviceDefId == null) {
+			return new ArrayList<XXResourceDef>();
+		}
+		try {
+			List<XXResourceDef> retList = getEntityManager()
+					.createNamedQuery("XXResourceDef.findByServiceDefId", tClass)
+					.setParameter("serviceDefId", serviceDefId).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXResourceDef>();
+		}
+	}
+	
+	public List<XXResourceDef> findByPolicyId(Long policyId) {
+		if(policyId == null) {
+			return new ArrayList<XXResourceDef>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXResourceDef.findByPolicyId", tClass)
+					.setParameter("policyId", policyId).getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXResourceDef>();
+		}
+	}
+
+	public XXResourceDef findByNameAndPolicyId(String name, Long policyId) {
+		if(policyId == null || name == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXResourceDef.findByNameAndPolicyId", tClass)
+					.setParameter("policyId", policyId)
+					.setParameter("name", name).getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java
new file mode 100644
index 0000000..f8bf8d2
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigDefDao.java
@@ -0,0 +1,45 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXServiceConfigDef;
+
+public class XXServiceConfigDefDao extends BaseDao<XXServiceConfigDef> {
+	
+	public XXServiceConfigDefDao(RangerDaoManagerBase daoMgr) {
+		super(daoMgr);
+	}
+
+	public List<XXServiceConfigDef> findByServiceDefId(Long serviceDefId) {
+		if (serviceDefId == null) {
+			return new ArrayList<XXServiceConfigDef>();
+		}
+		try {
+			List<XXServiceConfigDef> retList = getEntityManager()
+					.createNamedQuery("XXServiceConfigDef.findByServiceDefId", tClass)
+					.setParameter("serviceDefId", serviceDefId).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXServiceConfigDef>();
+		}
+	}
+	
+	public List<XXServiceConfigDef> findByServiceDefName(String serviceDef) {
+		if (serviceDef == null) {
+			return new ArrayList<XXServiceConfigDef>();
+		}
+		try {
+			List<XXServiceConfigDef> retList = getEntityManager()
+					.createNamedQuery("XXServiceConfigDef.findByServiceDefName", tClass)
+					.setParameter("serviceDef", serviceDef).getResultList();
+			return retList;
+		} catch (NoResultException e) {
+			return new ArrayList<XXServiceConfigDef>();
+		}
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c928a415/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java
new file mode 100644
index 0000000..9c14732
--- /dev/null
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceConfigMapDao.java
@@ -0,0 +1,46 @@
+package org.apache.ranger.db;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.ranger.common.db.BaseDao;
+import org.apache.ranger.entity.XXServiceConfigMap;
+
+public class XXServiceConfigMapDao extends BaseDao<XXServiceConfigMap> {
+
+	public XXServiceConfigMapDao(RangerDaoManagerBase daoManager) {
+		super(daoManager);
+	}
+
+	public List<XXServiceConfigMap> findByServiceId(Long serviceId) {
+		if (serviceId == null) {
+			return new ArrayList<XXServiceConfigMap>();
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXServiceConfigMap.findByServiceId", tClass)
+					.setParameter("serviceId", serviceId)
+					.getResultList();
+		} catch (NoResultException e) {
+			return new ArrayList<XXServiceConfigMap>();
+		}
+	}
+
+	public XXServiceConfigMap findByServiceAndConfigKey(Long serviceId,
+			String configKey) {
+		if(serviceId == null || configKey == null) {
+			return null;
+		}
+		try {
+			return getEntityManager()
+					.createNamedQuery("XXServiceConfigMap.findByServiceAndConfigKey", tClass)
+					.setParameter("serviceId", serviceId)
+					.setParameter("configKey", configKey).getSingleResult();
+		} catch (NoResultException e) {
+			return null;
+		}
+	}
+
+}