http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
index 087eb8d..69c4e4d 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceBase.java
@@ -96,6 +96,25 @@ public abstract class XXServiceBase extends XXDBBase {
        protected Date policyUpdateTime;
 
        /**
+        * tagVersion of the XXService
+        * <ul>
+        * </ul>
+        *
+        */
+       @Column(name = "tag_version")
+       protected Long tagVersion;
+
+       /**
+        * tagUpdateTime of the XXService
+        * <ul>
+        * </ul>
+        *
+        */
+       @Temporal(TemporalType.TIMESTAMP)
+       @Column(name = "tag_update_time")
+       protected Date tagUpdateTime;
+
+       /**
         * description of the XXService
         * <ul>
         * </ul>
@@ -248,6 +267,46 @@ public abstract class XXServiceBase extends XXDBBase {
        }
 
        /**
+        * This method sets the value to the member attribute <b> tagVersion</b>
+        * . You cannot set null to the attribute.
+        * 
+        * @param tagVersion
+        *            Value to set member attribute <b> tagVersion</b>
+        */
+       public void setTagVersion(Long tagVersion) {
+               this.tagVersion = tagVersion;
+       }
+
+       /**
+        * Returns the value for the member attribute <b>tagVersion</b>
+        * 
+        * @return Long - value of member attribute <b>tagVersion</b> .
+        */
+       public Long getTagVersion() {
+               return this.tagVersion;
+       }
+
+       /**
+        * This method sets the value to the member attribute <b>
+        * tagUpdateTime</b> . You cannot set null to the attribute.
+        * 
+        * @param tagUpdateTime
+        *            Value to set member attribute <b> tagUpdateTime</b>
+        */
+       public void setTagUpdateTime(Date tagUpdateTime) {
+               this.tagUpdateTime = tagUpdateTime;
+       }
+
+       /**
+        * Returns the value for the member attribute <b>tagUpdateTime</b>
+        * 
+        * @return Date - value of member attribute <b>tagUpdateTime</b> .
+        */
+       public Date getTagUpdateTime() {
+               return this.tagUpdateTime;
+       }
+
+       /**
         * This method sets the value to the member attribute <b> 
description</b> .
         * You cannot set null to the attribute.
         * 
@@ -346,6 +405,20 @@ public abstract class XXServiceBase extends XXDBBase {
                } else if (!policyVersion.equals(other.policyVersion)) {
                        return false;
                }
+               if (tagUpdateTime == null) {
+                       if (other.tagUpdateTime != null) {
+                               return false;
+                       }
+               } else if (!tagUpdateTime.equals(other.tagUpdateTime)) {
+                       return false;
+               }
+               if (tagVersion == null) {
+                       if (other.tagVersion != null) {
+                               return false;
+                       }
+               } else if (!tagVersion.equals(other.tagVersion)) {
+                       return false;
+               }
                if (type == null) {
                        if (other.type != null) {
                                return false;
@@ -379,6 +452,7 @@ public abstract class XXServiceBase extends XXDBBase {
        public String toString() {
                return "XXServiceBase [" + super.toString() + " guid=" + guid + 
", version=" + version + ", type=" + type
                                + ", name=" + name + ", tagService=" + 
tagService + ", policyVersion=" + policyVersion + ", policyUpdateTime=" + 
policyUpdateTime
+                               + ", tagVersion=" + tagVersion + ", 
tagUpdateTime=" + tagUpdateTime
                                + ", description=" + description + ", 
isEnabled=" + isEnabled + "]";
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
new file mode 100644
index 0000000..8fd3866
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResource.java
@@ -0,0 +1,245 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource")
+@XmlRootElement
+public class XXServiceResource extends XXDBBase implements Serializable {
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @SequenceGenerator(name = "XXServiceResourceSEQ", sequenceName = 
"XXServiceResourceSEQ", allocationSize = 1)
+       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXServiceResourceSEQ")
+       @Column(name = "id")
+       protected Long id;
+
+       @Column(name = "guid", unique = true, nullable = false, length = 512)
+       protected String guid;
+
+       @Column(name = "version")
+       protected Long version;
+
+       @Column(name = "is_enabled")
+       protected Boolean isEnabled;
+
+       @Column(name = "resource_signature")
+       protected String resourceSignature;
+
+       @Column(name = "service_id")
+       protected Long serviceId;
+
+       @Override
+       public void setId(Long id) {
+               this.id = id;
+       }
+
+       @Override
+       public Long getId() {
+               return id;
+       }
+
+       /**
+        * @return the guid
+        */
+       public String getGuid() {
+               return guid;
+       }
+
+       /**
+        * @param guid
+        *            the guid to set
+        */
+       public void setGuid(String guid) {
+               this.guid = guid;
+       }
+
+       /**
+        * @return the serviceId
+        */
+       public Long getServiceId() {
+               return serviceId;
+       }
+
+       /**
+        * @param serviceId
+        *            the serviceId to set
+        */
+       public void setServiceId(Long serviceId) {
+               this.serviceId = serviceId;
+       }
+
+       /**
+        * @return the resourceSignature
+        */
+       public String getResourceSignature() {
+               return resourceSignature;
+       }
+
+       /**
+        * @param resourceSignature
+        *            the resourceSignature to set
+        */
+       public void setResourceSignature(String resourceSignature) {
+               this.resourceSignature = resourceSignature;
+       }
+
+       /**
+        * @return the version
+        */
+       public Long getVersion() {
+               return version;
+       }
+
+       /**
+        * @param version
+        *            the version to set
+        */
+       public void setVersion(Long version) {
+               this.version = version;
+       }
+
+       /**
+        * @return the isEnabled
+        */
+       public Boolean getIsEnabled() {
+               return isEnabled;
+       }
+
+       /**
+        * @param isEnabled
+        *            the isEnabled to set
+        */
+       public void setIsEnabled(Boolean isEnabled) {
+               this.isEnabled = isEnabled;
+       }
+
+       @Override
+       public int getMyClassType() {
+               return AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#hashCode()
+        */
+       @Override
+       public int hashCode() {
+               final int prime = 31;
+               int result = 1;
+               result = prime * result + ((id == null) ? 0 : id.hashCode());
+               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
+               result = prime * result + ((version == null) ? 0 : 
version.hashCode());
+               result = prime * result + ((isEnabled == null) ? 0 : 
isEnabled.hashCode());
+               result = prime * result + ((resourceSignature == null) ? 0 : 
resourceSignature.hashCode());
+               result = prime * result + ((serviceId == null) ? 0 : 
serviceId.hashCode());
+               return result;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#equals(java.lang.Object)
+        */
+       @Override
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (!super.equals(obj))
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+               XXServiceResource other = (XXServiceResource) obj;
+               if (resourceSignature == null) {
+                       if (other.resourceSignature != null)
+                               return false;
+               } else if (!resourceSignature.equals(other.resourceSignature))
+                       return false;
+               if (guid == null) {
+                       if (other.guid != null)
+                               return false;
+               } else if (!guid.equals(other.guid))
+                       return false;
+               if (id == null) {
+                       if (other.id != null)
+                               return false;
+               } else if (!id.equals(other.id))
+                       return false;
+               if (isEnabled == null) {
+                       if (other.isEnabled != null)
+                               return false;
+               } else if (!isEnabled.equals(other.isEnabled))
+                       return false;
+               if (serviceId == null) {
+                       if (other.serviceId != null)
+                               return false;
+               } else if (!serviceId.equals(other.serviceId))
+                       return false;
+               if (version == null) {
+                       if (other.version != null)
+                               return false;
+               } else if (!version.equals(other.version))
+                       return false;
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#toString()
+        */
+       @Override
+       public String toString() {
+               StringBuilder sb = new StringBuilder();
+               toString(sb);
+               return sb.toString();
+       }
+
+       public StringBuilder toString(StringBuilder sb) {
+               sb.append("{ ");
+               sb.append(super.toString() + "} ");
+               sb.append("id={").append(id).append("} ");
+               sb.append("guid={").append(guid).append("} ");
+               sb.append("version={").append(version).append("} ");
+               sb.append("isEnabled={").append(isEnabled).append("} ");
+               
sb.append("resourceSignature={").append(resourceSignature).append("} ");
+               sb.append("serviceId={").append(serviceId).append("} ");
+               sb.append(" }");
+
+               return sb;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
new file mode 100644
index 0000000..a545133
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElement.java
@@ -0,0 +1,245 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource_element")
+@XmlRootElement
+public class XXServiceResourceElement extends XXDBBase implements Serializable 
{
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @SequenceGenerator(name = "XXServiceResourceElementSEQ", sequenceName = 
"XXServiceResourceElementSEQ", allocationSize = 1)
+       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXServiceResourceElementSEQ")
+       @Column(name = "id")
+       protected Long id;
+
+       @Column(name = "guid", unique = true, nullable = false, length = 512)
+       protected String guid;
+
+       @Column(name = "res_def_id")
+       protected Long resDefId;
+
+       @Column(name = "res_id")
+       protected Long resourceId;
+
+       @Column(name = "is_excludes")
+       protected Boolean isExcludes;
+
+       @Column(name = "is_recursive")
+       protected Boolean isRecursive;
+
+       @Override
+       public void setId(Long id) {
+               this.id = id;
+       }
+
+       @Override
+       public Long getId() {
+               return id;
+       }
+
+       /**
+        * @return the guid
+        */
+       public String getGuid() {
+               return guid;
+       }
+
+       /**
+        * @param guid
+        *            the guid to set
+        */
+       public void setGuid(String guid) {
+               this.guid = guid;
+       }
+
+       /**
+        * @return the resDefId
+        */
+       public Long getResDefId() {
+               return resDefId;
+       }
+
+       /**
+        * @param resDefId
+        *            the resDefId to set
+        */
+       public void setResDefId(Long resDefId) {
+               this.resDefId = resDefId;
+       }
+
+       /**
+        * @return the isExcludes
+        */
+       public Boolean getIsExcludes() {
+               return isExcludes;
+       }
+
+       /**
+        * @param isExcludes
+        *            the isExcludes to set
+        */
+       public void setIsExcludes(Boolean isExcludes) {
+               this.isExcludes = isExcludes;
+       }
+
+       /**
+        * @return the isRecursive
+        */
+       public Boolean getIsRecursive() {
+               return isRecursive;
+       }
+
+       /**
+        * @param isRecursive
+        *            the isRecursive to set
+        */
+       public void setIsRecursive(Boolean isRecursive) {
+               this.isRecursive = isRecursive;
+       }
+
+       /**
+        * @return the resourceId
+        */
+       public Long getResourceId() {
+               return resourceId;
+       }
+
+       /**
+        * @param resourceId
+        *            the resourceId to set
+        */
+       public void setResourceId(Long resourceId) {
+               this.resourceId = resourceId;
+       }
+
+       @Override
+       public int getMyClassType() {
+               return AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#hashCode()
+        */
+       @Override
+       public int hashCode() {
+               final int prime = 31;
+               int result = 1;
+               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
+               result = prime * result + ((id == null) ? 0 : id.hashCode());
+               result = prime * result + ((isExcludes == null) ? 0 : 
isExcludes.hashCode());
+               result = prime * result + ((isRecursive == null) ? 0 : 
isRecursive.hashCode());
+               result = prime * result + ((resDefId == null) ? 0 : 
resDefId.hashCode());
+               result = prime * result + ((resourceId == null) ? 0 : 
resourceId.hashCode());
+               return result;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#equals(java.lang.Object)
+        */
+       @Override
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (!super.equals(obj))
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+               XXServiceResourceElement other = (XXServiceResourceElement) obj;
+               if (guid == null) {
+                       if (other.guid != null)
+                               return false;
+               } else if (!guid.equals(other.guid))
+                       return false;
+               if (id == null) {
+                       if (other.id != null)
+                               return false;
+               } else if (!id.equals(other.id))
+                       return false;
+               if (isExcludes == null) {
+                       if (other.isExcludes != null)
+                               return false;
+               } else if (!isExcludes.equals(other.isExcludes))
+                       return false;
+               if (isRecursive == null) {
+                       if (other.isRecursive != null)
+                               return false;
+               } else if (!isRecursive.equals(other.isRecursive))
+                       return false;
+               if (resDefId == null) {
+                       if (other.resDefId != null)
+                               return false;
+               } else if (!resDefId.equals(other.resDefId))
+                       return false;
+               if (resourceId == null) {
+                       if (other.resourceId != null)
+                               return false;
+               } else if (!resourceId.equals(other.resourceId))
+                       return false;
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#toString()
+        */
+       @Override
+       public String toString() {
+               StringBuilder sb = new StringBuilder();
+               toString(sb);
+               return sb.toString();
+       }
+
+       public StringBuilder toString(StringBuilder sb) {
+               sb.append("{ ");
+               sb.append(super.toString() + "} ");
+               sb.append("id={").append(id).append("} ");
+               sb.append("guid={").append(guid).append("} ");
+               sb.append("resDefId={").append(resDefId).append("} ");
+               sb.append("resourceId={").append(resourceId).append("} ");
+               sb.append("isExcludes={").append(isExcludes).append("} ");
+               sb.append("isRecursive={").append(isRecursive).append("} ");
+               sb.append(" }");
+
+               return sb;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
new file mode 100644
index 0000000..23b17b9
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXServiceResourceElementValue.java
@@ -0,0 +1,220 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.entity;
+
+import java.io.Serializable;
+
+import javax.persistence.Cacheable;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.ranger.common.AppConstants;
+
+@Entity
+@Cacheable
+@Table(name="x_service_resource_element_value")
+@XmlRootElement
+public class XXServiceResourceElementValue extends XXDBBase implements 
Serializable {
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @SequenceGenerator(name = "XXServiceResourceElementValueSEQ", 
sequenceName = "XXServiceResourceElementValueSEQ", allocationSize = 1)
+       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXServiceResourceElementValueSEQ")
+       @Column(name = "id")
+       protected Long id;
+
+       @Column(name = "guid", unique = true, nullable = false, length = 512)
+       protected String guid;
+
+       @Column(name = "res_element_id")
+       protected Long resElementId;
+
+       @Column(name = "value")
+       protected String value;
+
+       @Column(name = "sort_order")
+       protected Integer sortOrder;
+
+       @Override
+       public void setId(Long id) {
+               this.id = id;
+       }
+
+       @Override
+       public Long getId() {
+               return id;
+       }
+
+       /**
+        * @return the guid
+        */
+       public String getGuid() {
+               return guid;
+       }
+
+       /**
+        * @param guid
+        *            the guid to set
+        */
+       public void setGuid(String guid) {
+               this.guid = guid;
+       }
+
+       /**
+        * @return the resElementId
+        */
+       public Long getResElementId() {
+               return resElementId;
+       }
+
+       /**
+        * @param resElementId
+        *            the resElementId to set
+        */
+       public void setResElementId(Long resElementId) {
+               this.resElementId = resElementId;
+       }
+
+       /**
+        * @return the value
+        */
+       public String getValue() {
+               return value;
+       }
+
+       /**
+        * @param value
+        *            the value to set
+        */
+       public void setValue(String value) {
+               this.value = value;
+       }
+
+       /**
+        * @return the sortOrder
+        */
+       public Integer getSortOrder() {
+               return sortOrder;
+       }
+
+       /**
+        * @param sortOrder
+        *            the sortOrder to set
+        */
+       public void setSortOrder(Integer sortOrder) {
+               this.sortOrder = sortOrder;
+       }
+
+       @Override
+       public int getMyClassType() {
+               return 
AppConstants.CLASS_TYPE_XA_SERVICE_RESOURCE_ELEMENT_VALUE;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#hashCode()
+        */
+       @Override
+       public int hashCode() {
+               final int prime = 31;
+               int result = 1;
+               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
+               result = prime * result + ((id == null) ? 0 : id.hashCode());
+               result = prime * result + ((resElementId == null) ? 0 : 
resElementId.hashCode());
+               result = prime * result + ((sortOrder == null) ? 0 : 
sortOrder.hashCode());
+               result = prime * result + ((value == null) ? 0 : 
value.hashCode());
+               return result;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#equals(java.lang.Object)
+        */
+       @Override
+       public boolean equals(Object obj) {
+               if (this == obj)
+                       return true;
+               if (!super.equals(obj))
+                       return false;
+               if (getClass() != obj.getClass())
+                       return false;
+               XXServiceResourceElementValue other = 
(XXServiceResourceElementValue) obj;
+               if (guid == null) {
+                       if (other.guid != null)
+                               return false;
+               } else if (!guid.equals(other.guid))
+                       return false;
+               if (id == null) {
+                       if (other.id != null)
+                               return false;
+               } else if (!id.equals(other.id))
+                       return false;
+               if (resElementId == null) {
+                       if (other.resElementId != null)
+                               return false;
+               } else if (!resElementId.equals(other.resElementId))
+                       return false;
+               if (sortOrder == null) {
+                       if (other.sortOrder != null)
+                               return false;
+               } else if (!sortOrder.equals(other.sortOrder))
+                       return false;
+               if (value == null) {
+                       if (other.value != null)
+                               return false;
+               } else if (!value.equals(other.value))
+                       return false;
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see java.lang.Object#toString()
+        */
+       @Override
+       public String toString() {
+               StringBuilder sb = new StringBuilder();
+               toString(sb);
+               return sb.toString();
+       }
+
+       public StringBuilder toString(StringBuilder sb) {
+               sb.append("{ ");
+               sb.append(super.toString() + "} ");
+               sb.append("id={").append(id).append("} ");
+               sb.append("guid={").append(guid).append("} ");
+               sb.append("resElementId={").append(resElementId).append("} ");
+               sb.append("value={").append(value).append("} ");
+               sb.append("sortOrder={").append(sortOrder).append("} ");
+               sb.append(" }");
+
+               return sb;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
index 46b760b..1d8493a 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java
@@ -49,18 +49,6 @@ public class XXTag extends XXDBBase implements Serializable {
        @Column(name = "guid", unique = true, nullable = false, length = 512)
        protected String guid;
 
-       @Column(name = "version")
-       protected Long version;
-
-       @Column(name = "is_enabled")
-       protected Boolean isEnabled;
-
-       @Column(name = "tag_def_id")
-       protected Long tagDefId;
-
-       @Column(name = "external_id")
-       protected String externalId;
-
        @Column(name = "name")
        protected String name;
 
@@ -90,51 +78,6 @@ public class XXTag extends XXDBBase implements Serializable {
        }
 
        /**
-        * @return the version
-        */
-       public Long getVersion() {
-               return version;
-       }
-
-       /**
-        * @param version
-        *            the version to set
-        */
-       public void setVersion(Long version) {
-               this.version = version;
-       }
-
-       /**
-        * @return the isEnabled
-        */
-       public Boolean getIsEnabled() {
-               return isEnabled;
-       }
-
-       /**
-        * @param isEnabled
-        *            the isEnabled to set
-        */
-       public void setIsEnabled(Boolean isEnabled) {
-               this.isEnabled = isEnabled;
-       }
-
-       /**
-        * @return the tagDefId
-        */
-       public Long getTagDefId() {
-               return tagDefId;
-       }
-
-       /**
-        * @param tagDefId
-        *            the tagDefId to set
-        */
-       public void setTagDefId(Long tagDefId) {
-               this.tagDefId = tagDefId;
-       }
-
-       /**
         * @return the name
         */
        public String getName() {
@@ -149,21 +92,6 @@ public class XXTag extends XXDBBase implements Serializable 
{
                this.name = name;
        }
 
-       /**
-        * @return the externalId
-        */
-       public String getExternalId() {
-               return externalId;
-       }
-
-       /**
-        * @param externalId
-        *            the externalId to set
-        */
-       public void setExternalId(String externalId) {
-               this.externalId = externalId;
-       }
-
        @Override
        public int getMyClassType() {
                return AppConstants.CLASS_TYPE_XA_TAG;
@@ -178,11 +106,9 @@ public class XXTag extends XXDBBase implements 
Serializable {
        public int hashCode() {
                final int prime = 31;
                int result = 1;
-               result = prime * result + ((externalId == null) ? 0 : 
externalId.hashCode());
                result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
                result = prime * result + ((id == null) ? 0 : id.hashCode());
                result = prime * result + ((name == null) ? 0 : 
name.hashCode());
-               result = prime * result + ((tagDefId == null) ? 0 : 
tagDefId.hashCode());
                return result;
        }
 
@@ -200,11 +126,6 @@ public class XXTag extends XXDBBase implements 
Serializable {
                if (getClass() != obj.getClass())
                        return false;
                XXTag other = (XXTag) obj;
-               if (externalId == null) {
-                       if (other.externalId != null)
-                               return false;
-               } else if (!externalId.equals(other.externalId))
-                       return false;
                if (guid == null) {
                        if (other.guid != null)
                                return false;
@@ -220,11 +141,6 @@ public class XXTag extends XXDBBase implements 
Serializable {
                                return false;
                } else if (!name.equals(other.name))
                        return false;
-               if (tagDefId == null) {
-                       if (other.tagDefId != null)
-                               return false;
-               } else if (!tagDefId.equals(other.tagDefId))
-                       return false;
                return true;
        }
 
@@ -245,8 +161,6 @@ public class XXTag extends XXDBBase implements Serializable 
{
                sb.append(super.toString() + "} ");
                sb.append("id={").append(id).append("} ");
                sb.append("guid={").append(guid).append("} ");
-               sb.append("tagDefId={").append(tagDefId).append("} ");
-               sb.append("externalId={").append(externalId).append("} ");
                sb.append("name={").append(name).append("} ");
                sb.append(" }");
 

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
index 953df6b..98f2355 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
@@ -52,8 +52,8 @@ public class XXTagResourceMap extends XXDBBase implements 
Serializable {
        @Column(name = "tag_id")
        protected Long tagId;
 
-       @Column(name = "tagged_res_id")
-       protected Long taggedResId;
+       @Column(name = "res_id")
+       protected Long resourceId;
 
        @Override
        public void setId(Long id) {
@@ -96,18 +96,18 @@ public class XXTagResourceMap extends XXDBBase implements 
Serializable {
        }
 
        /**
-        * @return the taggedResId
+        * @return the resourceId
         */
-       public Long getTaggedResId() {
-               return taggedResId;
+       public Long getResourceId() {
+               return resourceId;
        }
 
        /**
-        * @param taggedResId
-        *            the taggedResId to set
+        * @param resourceId
+        *            the resourceId to set
         */
-       public void setTaggedResId(Long taggedResId) {
-               this.taggedResId = taggedResId;
+       public void setResourceId(Long resourceId) {
+               this.resourceId = resourceId;
        }
 
        @Override
@@ -127,7 +127,7 @@ public class XXTagResourceMap extends XXDBBase implements 
Serializable {
                result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
                result = prime * result + ((id == null) ? 0 : id.hashCode());
                result = prime * result + ((tagId == null) ? 0 : 
tagId.hashCode());
-               result = prime * result + ((taggedResId == null) ? 0 : 
taggedResId.hashCode());
+               result = prime * result + ((resourceId == null) ? 0 : 
resourceId.hashCode());
                return result;
        }
 
@@ -160,10 +160,10 @@ public class XXTagResourceMap extends XXDBBase implements 
Serializable {
                                return false;
                } else if (!tagId.equals(other.tagId))
                        return false;
-               if (taggedResId == null) {
-                       if (other.taggedResId != null)
+               if (resourceId == null) {
+                       if (other.resourceId != null)
                                return false;
-               } else if (!taggedResId.equals(other.taggedResId))
+               } else if (!resourceId.equals(other.resourceId))
                        return false;
                return true;
        }
@@ -186,7 +186,7 @@ public class XXTagResourceMap extends XXDBBase implements 
Serializable {
                sb.append("id={").append(id).append("} ");
                sb.append("guid={").append(guid).append("} ");
                sb.append("tagId={").append(tagId).append("} ");
-               sb.append("taggedResId={").append(taggedResId).append("} ");
+               sb.append("resourceId={").append(resourceId).append("} ");
                sb.append(" }");
 
                return sb;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
deleted file mode 100644
index 9487bc7..0000000
--- 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource")
-@XmlRootElement
-public class XXTaggedResource extends XXDBBase implements Serializable {
-       private static final long serialVersionUID = 1L;
-
-       @Id
-       @SequenceGenerator(name = "XXTaggedResourceSEQ", sequenceName = 
"XXTaggedResourceSEQ", allocationSize = 1)
-       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXTaggedResourceSEQ")
-       @Column(name = "id")
-       protected Long id;
-
-       @Column(name = "guid", unique = true, nullable = false, length = 512)
-       protected String guid;
-
-       @Column(name = "version")
-       protected Long version;
-
-       @Column(name = "is_enabled")
-       protected Boolean isEnabled;
-
-       @Column(name = "external_id")
-       protected String externalId;
-
-       @Column(name = "service_id")
-       protected Long serviceId;
-
-       @Override
-       public void setId(Long id) {
-               this.id = id;
-       }
-
-       @Override
-       public Long getId() {
-               return id;
-       }
-
-       /**
-        * @return the guid
-        */
-       public String getGuid() {
-               return guid;
-       }
-
-       /**
-        * @param guid
-        *            the guid to set
-        */
-       public void setGuid(String guid) {
-               this.guid = guid;
-       }
-
-       /**
-        * @return the serviceId
-        */
-       public Long getServiceId() {
-               return serviceId;
-       }
-
-       /**
-        * @param serviceId
-        *            the serviceId to set
-        */
-       public void setServiceId(Long serviceId) {
-               this.serviceId = serviceId;
-       }
-
-       /**
-        * @return the externalId
-        */
-       public String getExternalId() {
-               return externalId;
-       }
-
-       /**
-        * @param externalId
-        *            the externalId to set
-        */
-       public void setExternalId(String externalId) {
-               this.externalId = externalId;
-       }
-
-       /**
-        * @return the version
-        */
-       public Long getVersion() {
-               return version;
-       }
-
-       /**
-        * @param version
-        *            the version to set
-        */
-       public void setVersion(Long version) {
-               this.version = version;
-       }
-
-       /**
-        * @return the isEnabled
-        */
-       public Boolean getIsEnabled() {
-               return isEnabled;
-       }
-
-       /**
-        * @param isEnabled
-        *            the isEnabled to set
-        */
-       public void setIsEnabled(Boolean isEnabled) {
-               this.isEnabled = isEnabled;
-       }
-
-       @Override
-       public int getMyClassType() {
-               return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#hashCode()
-        */
-       @Override
-       public int hashCode() {
-               final int prime = 31;
-               int result = 1;
-               result = prime * result + ((externalId == null) ? 0 : 
externalId.hashCode());
-               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
-               result = prime * result + ((id == null) ? 0 : id.hashCode());
-               result = prime * result + ((isEnabled == null) ? 0 : 
isEnabled.hashCode());
-               result = prime * result + ((serviceId == null) ? 0 : 
serviceId.hashCode());
-               result = prime * result + ((version == null) ? 0 : 
version.hashCode());
-               return result;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#equals(java.lang.Object)
-        */
-       @Override
-       public boolean equals(Object obj) {
-               if (this == obj)
-                       return true;
-               if (!super.equals(obj))
-                       return false;
-               if (getClass() != obj.getClass())
-                       return false;
-               XXTaggedResource other = (XXTaggedResource) obj;
-               if (externalId == null) {
-                       if (other.externalId != null)
-                               return false;
-               } else if (!externalId.equals(other.externalId))
-                       return false;
-               if (guid == null) {
-                       if (other.guid != null)
-                               return false;
-               } else if (!guid.equals(other.guid))
-                       return false;
-               if (id == null) {
-                       if (other.id != null)
-                               return false;
-               } else if (!id.equals(other.id))
-                       return false;
-               if (isEnabled == null) {
-                       if (other.isEnabled != null)
-                               return false;
-               } else if (!isEnabled.equals(other.isEnabled))
-                       return false;
-               if (serviceId == null) {
-                       if (other.serviceId != null)
-                               return false;
-               } else if (!serviceId.equals(other.serviceId))
-                       return false;
-               if (version == null) {
-                       if (other.version != null)
-                               return false;
-               } else if (!version.equals(other.version))
-                       return false;
-               return true;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#toString()
-        */
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-               toString(sb);
-               return sb.toString();
-       }
-
-       public StringBuilder toString(StringBuilder sb) {
-               sb.append("{ ");
-               sb.append(super.toString() + "} ");
-               sb.append("id={").append(id).append("} ");
-               sb.append("guid={").append(guid).append("} ");
-               sb.append("version={").append(version).append("} ");
-               sb.append("isEnabled={").append(isEnabled).append("} ");
-               sb.append("externalId={").append(externalId).append("} ");
-               sb.append("serviceId={").append(serviceId).append("} ");
-               sb.append(" }");
-
-               return sb;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
deleted file mode 100644
index 977d1f5..0000000
--- 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource_value")
-@XmlRootElement
-public class XXTaggedResourceValue extends XXDBBase implements Serializable {
-       private static final long serialVersionUID = 1L;
-
-       @Id
-       @SequenceGenerator(name = "XXTaggedResourceValueSEQ", sequenceName = 
"XXTaggedResourceValueSEQ", allocationSize = 1)
-       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXTaggedResourceValueSEQ")
-       @Column(name = "id")
-       protected Long id;
-
-       @Column(name = "guid", unique = true, nullable = false, length = 512)
-       protected String guid;
-
-       @Column(name = "res_def_id")
-       protected Long resDefId;
-
-       @Column(name = "tagged_res_id")
-       protected Long taggedResourceId;
-
-       @Column(name = "is_excludes")
-       protected Boolean isExcludes;
-
-       @Column(name = "is_recursive")
-       protected Boolean isRecursive;
-
-       @Override
-       public void setId(Long id) {
-               this.id = id;
-       }
-
-       @Override
-       public Long getId() {
-               return id;
-       }
-
-       /**
-        * @return the guid
-        */
-       public String getGuid() {
-               return guid;
-       }
-
-       /**
-        * @param guid
-        *            the guid to set
-        */
-       public void setGuid(String guid) {
-               this.guid = guid;
-       }
-
-       /**
-        * @return the resDefId
-        */
-       public Long getResDefId() {
-               return resDefId;
-       }
-
-       /**
-        * @param resDefId
-        *            the resDefId to set
-        */
-       public void setResDefId(Long resDefId) {
-               this.resDefId = resDefId;
-       }
-
-       /**
-        * @return the isExcludes
-        */
-       public Boolean getIsExcludes() {
-               return isExcludes;
-       }
-
-       /**
-        * @param isExcludes
-        *            the isExcludes to set
-        */
-       public void setIsExcludes(Boolean isExcludes) {
-               this.isExcludes = isExcludes;
-       }
-
-       /**
-        * @return the isRecursive
-        */
-       public Boolean getIsRecursive() {
-               return isRecursive;
-       }
-
-       /**
-        * @param isRecursive
-        *            the isRecursive to set
-        */
-       public void setIsRecursive(Boolean isRecursive) {
-               this.isRecursive = isRecursive;
-       }
-
-       /**
-        * @return the taggedResourceId
-        */
-       public Long getTaggedResourceId() {
-               return taggedResourceId;
-       }
-
-       /**
-        * @param taggedResourceId
-        *            the taggedResourceId to set
-        */
-       public void setTaggedResourceId(Long taggedResourceId) {
-               this.taggedResourceId = taggedResourceId;
-       }
-
-       @Override
-       public int getMyClassType() {
-               return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#hashCode()
-        */
-       @Override
-       public int hashCode() {
-               final int prime = 31;
-               int result = 1;
-               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
-               result = prime * result + ((id == null) ? 0 : id.hashCode());
-               result = prime * result + ((isExcludes == null) ? 0 : 
isExcludes.hashCode());
-               result = prime * result + ((isRecursive == null) ? 0 : 
isRecursive.hashCode());
-               result = prime * result + ((resDefId == null) ? 0 : 
resDefId.hashCode());
-               result = prime * result + ((taggedResourceId == null) ? 0 : 
taggedResourceId.hashCode());
-               return result;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#equals(java.lang.Object)
-        */
-       @Override
-       public boolean equals(Object obj) {
-               if (this == obj)
-                       return true;
-               if (!super.equals(obj))
-                       return false;
-               if (getClass() != obj.getClass())
-                       return false;
-               XXTaggedResourceValue other = (XXTaggedResourceValue) obj;
-               if (guid == null) {
-                       if (other.guid != null)
-                               return false;
-               } else if (!guid.equals(other.guid))
-                       return false;
-               if (id == null) {
-                       if (other.id != null)
-                               return false;
-               } else if (!id.equals(other.id))
-                       return false;
-               if (isExcludes == null) {
-                       if (other.isExcludes != null)
-                               return false;
-               } else if (!isExcludes.equals(other.isExcludes))
-                       return false;
-               if (isRecursive == null) {
-                       if (other.isRecursive != null)
-                               return false;
-               } else if (!isRecursive.equals(other.isRecursive))
-                       return false;
-               if (resDefId == null) {
-                       if (other.resDefId != null)
-                               return false;
-               } else if (!resDefId.equals(other.resDefId))
-                       return false;
-               if (taggedResourceId == null) {
-                       if (other.taggedResourceId != null)
-                               return false;
-               } else if (!taggedResourceId.equals(other.taggedResourceId))
-                       return false;
-               return true;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#toString()
-        */
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-               toString(sb);
-               return sb.toString();
-       }
-
-       public StringBuilder toString(StringBuilder sb) {
-               sb.append("{ ");
-               sb.append(super.toString() + "} ");
-               sb.append("id={").append(id).append("} ");
-               sb.append("guid={").append(guid).append("} ");
-               sb.append("resDefId={").append(resDefId).append("} ");
-               
sb.append("taggedResourceId={").append(taggedResourceId).append("} ");
-               sb.append("isExcludes={").append(isExcludes).append("} ");
-               sb.append("isRecursive={").append(isRecursive).append("} ");
-               sb.append(" }");
-
-               return sb;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
deleted file mode 100644
index 62e875f..0000000
--- 
a/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ranger.entity;
-
-import java.io.Serializable;
-
-import javax.persistence.Cacheable;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
-import javax.persistence.Table;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.apache.ranger.common.AppConstants;
-
-@Entity
-@Cacheable
-@Table(name="x_tagged_resource_value_map")
-@XmlRootElement
-public class XXTaggedResourceValueMap extends XXDBBase implements Serializable 
{
-       private static final long serialVersionUID = 1L;
-
-       @Id
-       @SequenceGenerator(name = "XXTaggedResourceValueMapSEQ", sequenceName = 
"XXTaggedResourceValueMapSEQ", allocationSize = 1)
-       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXTaggedResourceValueMapSEQ")
-       @Column(name = "id")
-       protected Long id;
-
-       @Column(name = "guid", unique = true, nullable = false, length = 512)
-       protected String guid;
-
-       @Column(name = "res_value_id")
-       protected Long resValueId;
-
-       @Column(name = "value")
-       protected String value;
-
-       @Column(name = "sort_order")
-       protected Integer sortOrder;
-
-       @Override
-       public void setId(Long id) {
-               this.id = id;
-       }
-
-       @Override
-       public Long getId() {
-               return id;
-       }
-
-       /**
-        * @return the guid
-        */
-       public String getGuid() {
-               return guid;
-       }
-
-       /**
-        * @param guid
-        *            the guid to set
-        */
-       public void setGuid(String guid) {
-               this.guid = guid;
-       }
-
-       /**
-        * @return the resValueId
-        */
-       public Long getResValueId() {
-               return resValueId;
-       }
-
-       /**
-        * @param resValueId
-        *            the resValueId to set
-        */
-       public void setResValueId(Long resValueId) {
-               this.resValueId = resValueId;
-       }
-
-       /**
-        * @return the value
-        */
-       public String getValue() {
-               return value;
-       }
-
-       /**
-        * @param value
-        *            the value to set
-        */
-       public void setValue(String value) {
-               this.value = value;
-       }
-
-       /**
-        * @return the sortOrder
-        */
-       public Integer getSortOrder() {
-               return sortOrder;
-       }
-
-       /**
-        * @param sortOrder
-        *            the sortOrder to set
-        */
-       public void setSortOrder(Integer sortOrder) {
-               this.sortOrder = sortOrder;
-       }
-
-       @Override
-       public int getMyClassType() {
-               return AppConstants.CLASS_TYPE_XA_TAGGED_RESOURCE_VALUE_MAP;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#hashCode()
-        */
-       @Override
-       public int hashCode() {
-               final int prime = 31;
-               int result = 1;
-               result = prime * result + ((guid == null) ? 0 : 
guid.hashCode());
-               result = prime * result + ((id == null) ? 0 : id.hashCode());
-               result = prime * result + ((resValueId == null) ? 0 : 
resValueId.hashCode());
-               result = prime * result + ((sortOrder == null) ? 0 : 
sortOrder.hashCode());
-               result = prime * result + ((value == null) ? 0 : 
value.hashCode());
-               return result;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#equals(java.lang.Object)
-        */
-       @Override
-       public boolean equals(Object obj) {
-               if (this == obj)
-                       return true;
-               if (!super.equals(obj))
-                       return false;
-               if (getClass() != obj.getClass())
-                       return false;
-               XXTaggedResourceValueMap other = (XXTaggedResourceValueMap) obj;
-               if (guid == null) {
-                       if (other.guid != null)
-                               return false;
-               } else if (!guid.equals(other.guid))
-                       return false;
-               if (id == null) {
-                       if (other.id != null)
-                               return false;
-               } else if (!id.equals(other.id))
-                       return false;
-               if (resValueId == null) {
-                       if (other.resValueId != null)
-                               return false;
-               } else if (!resValueId.equals(other.resValueId))
-                       return false;
-               if (sortOrder == null) {
-                       if (other.sortOrder != null)
-                               return false;
-               } else if (!sortOrder.equals(other.sortOrder))
-                       return false;
-               if (value == null) {
-                       if (other.value != null)
-                               return false;
-               } else if (!value.equals(other.value))
-                       return false;
-               return true;
-       }
-
-       /*
-        * (non-Javadoc)
-        * 
-        * @see java.lang.Object#toString()
-        */
-       @Override
-       public String toString() {
-               StringBuilder sb = new StringBuilder();
-               toString(sb);
-               return sb.toString();
-       }
-
-       public StringBuilder toString(StringBuilder sb) {
-               sb.append("{ ");
-               sb.append(super.toString() + "} ");
-               sb.append("id={").append(id).append("} ");
-               sb.append("guid={").append(guid).append("} ");
-               sb.append("resValueId={").append(resValueId).append("} ");
-               sb.append("value={").append(value).append("} ");
-               sb.append("sortOrder={").append(sortOrder).append("} ");
-               sb.append(" }");
-
-               return sb;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 
b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
index b667777..0b0d4ca 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagREST.java
@@ -20,24 +20,21 @@
 package org.apache.ranger.rest;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.ListUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ranger.biz.ServiceDBStore;
-//import org.apache.ranger.biz.TagDBStore;
+import org.apache.ranger.biz.TagDBStore;
 import org.apache.ranger.common.RESTErrorUtil;
 import org.apache.ranger.plugin.model.RangerServiceResource;
 import org.apache.ranger.plugin.model.RangerTag;
 import org.apache.ranger.plugin.model.RangerTagResourceMap;
 import org.apache.ranger.plugin.model.RangerTagDef;
-import org.apache.ranger.plugin.store.TagStore;
 import org.apache.ranger.plugin.store.TagValidator;
-
-import org.apache.ranger.plugin.store.file.TagFileStore;
 import org.apache.ranger.plugin.util.SearchFilter;
 import org.apache.ranger.plugin.util.ServiceTags;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -46,11 +43,9 @@ import javax.annotation.PostConstruct;
 import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.*;
 
-import java.util.ArrayList;
 import java.util.List;
 
 @Path(TagRESTConstants.TAGDEF_NAME_AND_VERSION)
-
 @Component
 @Scope("request")
 @Transactional(propagation = Propagation.REQUIRES_NEW)
@@ -64,13 +59,8 @@ public class TagREST {
        @Autowired
        ServiceDBStore svcStore;
 
-       //@Autowired
-       //TagDBStore tagStore;
-
-    TagStore tagStore;
-
-    //@Autowired
-    //TagValidator validator;
+       @Autowired
+       TagDBStore tagStore;
 
     TagValidator validator;
 
@@ -79,16 +69,16 @@ public class TagREST {
 
        @PostConstruct
        public void initStore() {
-        tagStore = TagFileStore.getInstance();
+               validator = new TagValidator();
+
         tagStore.setServiceStore(svcStore);
-        validator = new TagValidator();
         validator.setTagStore(tagStore);
        }
 
     @POST
     @Path(TagRESTConstants.TAGDEFS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTagDef createTagDef(RangerTagDef tagDef) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.createTagDef(" + tagDef + ")");
@@ -116,8 +106,7 @@ public class TagREST {
     @PUT
     @Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTagDef updateTagDef(@PathParam("id") Long id, RangerTagDef 
tagDef) {
 
         if(LOG.isDebugEnabled()) {
@@ -147,7 +136,7 @@ public class TagREST {
     @DELETE
     @Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public void deleteTagDef(@PathParam("id") Long id) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.deleteTagDef(" + id + ")");
@@ -171,6 +160,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGDEF_RESOURCE+"/{name}")
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<RangerTagDef> getTagDefByName(@PathParam("name") String name) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getTagDefByName(" + name + ")");
@@ -179,7 +169,7 @@ public class TagREST {
         List<RangerTagDef> ret;
 
         try {
-            ret = tagStore.getTagDef(name);
+            ret = tagStore.getTagDefsByName(name);
         } catch(Exception excp) {
             LOG.error("getTagDefByName(" + name + ") failed", excp);
 
@@ -200,6 +190,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGDEFS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<RangerTagDef> getTagDefs() {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getTagDefs()");
@@ -229,7 +220,7 @@ public class TagREST {
     @POST
     @Path(TagRESTConstants.TAGS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTag createTag(RangerTag tag) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.createTag(" + tag + ")");
@@ -256,8 +247,7 @@ public class TagREST {
     @PUT
     @Path(TagRESTConstants.TAG_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTag updateTagById(@PathParam("id") Long id, RangerTag tag) {
 
         RangerTag ret;
@@ -277,27 +267,26 @@ public class TagREST {
     }
 
     @PUT
-    @Path(TagRESTConstants.TAG_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.TAG_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
-    public RangerTag updateTagByExternalId(@PathParam("externalId") String 
externalId, RangerTag tag) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public RangerTag updateTagByGuid(@PathParam("guid") String guid, RangerTag 
tag) {
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.updateTagByExternalId(" + externalId + ")");
+            LOG.debug("==> TagREST.updateTagByGuid(" + guid + ")");
         }
 
         RangerTag ret;
 
         try {
-            validator.preUpdateTagByExternalId(externalId, tag);
+            validator.preUpdateTagByGuid(guid, tag);
             ret = tagStore.updateTag(tag);
         } catch (Exception excp) {
-            LOG.error("updateTagByExternalId(" + externalId + ") failed", 
excp);
+            LOG.error("updateTagByGuid(" + guid + ") failed", excp);
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.updateTagByExternalId(" + externalId + "): 
" + ret);
+            LOG.debug("<== TagREST.updateTagByGuid(" + guid + "): " + ret);
         }
 
         return ret;
@@ -306,8 +295,7 @@ public class TagREST {
     @PUT
     @Path(TagRESTConstants.TAG_RESOURCE + "name/{name}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTag updateTagByName(@PathParam("name") String name, RangerTag 
tag) {
 
         if(LOG.isDebugEnabled()) {
@@ -333,8 +321,7 @@ public class TagREST {
     @DELETE
     @Path(TagRESTConstants.TAG_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public void deleteTagById(@PathParam("id") Long id) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.deleteTagById(" + id +")");
@@ -354,32 +341,32 @@ public class TagREST {
     }
 
     @DELETE
-    @Path(TagRESTConstants.TAG_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.TAG_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-    public void deleteTagByExternalId(@PathParam("externalId") String 
externalId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public void deleteTagByGuid(@PathParam("guid") String guid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.deleteTagByExternalId(" + externalId + ")");
+            LOG.debug("==> TagREST.deleteTagByGuid(" + guid + ")");
         }
 
         try {
-            RangerTag exist = validator.preDeleteTagByExternalId(externalId);
+            RangerTag exist = validator.preDeleteTagByGuid(guid);
             tagStore.deleteTagById(exist.getId());
         } catch(Exception excp) {
-            LOG.error("deleteTagByExternalId(" + externalId + ") failed", 
excp);
+            LOG.error("deleteTagByGuid(" + guid + ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.deleteTagByExternalId(" + externalId + ")");
+            LOG.debug("<== TagREST.deleteTagByGuid(" + guid + ")");
         }
     }
 
     @DELETE
     @Path(TagRESTConstants.TAG_RESOURCE + "name/{name}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public void deleteTagByName(@PathParam("name") String name) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.deleteTagByName(" + name + ")");
@@ -402,6 +389,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGS_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerTag getTagById(@PathParam("id") Long id) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getTagById(" + id + ")");
@@ -424,24 +412,25 @@ public class TagREST {
     }
 
     @GET
-    @Path(TagRESTConstants.TAGS_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.TAGS_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    public List<RangerTag> getTagsByExternalId(@PathParam("externalId") String 
externalId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public RangerTag getTagByGuid(@PathParam("guid") String guid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.getTagsByExternalId(" + externalId + ")");
+            LOG.debug("==> TagREST.getTagByGuid(" + guid + ")");
         }
-        List<RangerTag> ret;
+        RangerTag ret;
 
         try {
-            ret = tagStore.getTagsByExternalId(externalId);
+            ret = tagStore.getTagByGuid(guid);
         } catch(Exception excp) {
-            LOG.error("getTagsByExternalId(" + externalId + ") failed", excp);
+            LOG.error("getTagByGuid(" + guid + ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.getTagsByExternalId(" + externalId + "): " 
+ ret);
+            LOG.debug("<== TagREST.getTagByGuid(" + guid + "): " + ret);
         }
 
         return ret;
@@ -450,6 +439,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGS_RESOURCE + "name/{name}")
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<RangerTag> getTagsByName(@PathParam("name") String name) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getTagsByName(" + name + ")");
@@ -474,6 +464,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<RangerTag> getAllTags() {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getAllTags()");
@@ -504,7 +495,7 @@ public class TagREST {
     @POST
     @Path(TagRESTConstants.RESOURCES_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerServiceResource createServiceResource(RangerServiceResource 
resource) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.createServiceResource(" + resource + ")");
@@ -531,8 +522,7 @@ public class TagREST {
     @PUT
     @Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerServiceResource updateServiceResourceById(@PathParam("id") 
Long id, RangerServiceResource resource) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.updateServiceResourceById(" + id + ")");
@@ -555,25 +545,24 @@ public class TagREST {
     }
 
     @PUT
-    @Path(TagRESTConstants.RESOURCE_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.RESOURCE_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-
-    public RangerServiceResource 
updateServiceResourceByExternalId(@PathParam("externalId") String externalId, 
RangerServiceResource resource) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public RangerServiceResource 
updateServiceResourceByGuid(@PathParam("guid") String guid, 
RangerServiceResource resource) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.updateServiceResourceByExternalId(" + 
externalId + ", " + resource + ")");
+            LOG.debug("==> TagREST.updateServiceResourceByGuid(" + guid + ", " 
+ resource + ")");
         }
         RangerServiceResource ret;
         try {
-            validator.preUpdateServiceResourceByExternalId(externalId, 
resource);
+            validator.preUpdateServiceResourceByGuid(guid, resource);
             ret = tagStore.updateServiceResource(resource);
         } catch(Exception excp) {
-            LOG.error("updateServiceResourceByExternalId(" + externalId + ", " 
+ resource + ") failed", excp);
+            LOG.error("updateServiceResourceByGuid(" + guid + ", " + resource 
+ ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.updateServiceResourceByExternalId(" + 
externalId + ", " + resource + "): " + ret);
+            LOG.debug("<== TagREST.updateServiceResourceByGuid(" + guid + ", " 
+ resource + "): " + ret);
         }
         return ret;
     }
@@ -581,7 +570,7 @@ public class TagREST {
     @DELETE
     @Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public void deleteServiceResourceById(@PathParam("id") Long id) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.deleteServiceResourceById(" + id + ")");
@@ -601,31 +590,32 @@ public class TagREST {
     }
 
     @DELETE
-    @Path(TagRESTConstants.RESOURCE_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.RESOURCE_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-    public void deleteServiceResourceByExternalId(@PathParam("externalId") 
String externalId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public void deleteServiceResourceByGuid(@PathParam("guid") String guid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.deleteServiceResourceByExternalId(" + 
externalId + ")");
+            LOG.debug("==> TagREST.deleteServiceResourceByGuid(" + guid + ")");
         }
 
         try {
-            RangerServiceResource exist = 
validator.preDeleteServiceResourceByExternalId(externalId);
+            RangerServiceResource exist = 
validator.preDeleteServiceResourceByGuid(guid);
             tagStore.deleteServiceResourceById(exist.getId());
         } catch(Exception excp) {
-            LOG.error("deleteServiceResourceByExternalId(" + externalId + ") 
failed", excp);
+            LOG.error("deleteServiceResourceByGuid(" + guid + ") failed", 
excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.deleteServiceResourceByExternalId(" + 
externalId + ")");
+            LOG.debug("<== TagREST.deleteServiceResourceByGuid(" + guid + ")");
         }
     }
 
     @GET
     @Path(TagRESTConstants.RESOURCES_RESOURCE + "{id}")
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public RangerServiceResource getServiceResourceById(@PathParam("id") Long 
id) {
         if(LOG.isDebugEnabled()) {
             LOG.debug("==> TagREST.getServiceResourceById(" + id + ")");
@@ -645,22 +635,23 @@ public class TagREST {
     }
 
     @GET
-    @Path(TagRESTConstants.RESOURCES_RESOURCE + "externalId/{externalId}")
+    @Path(TagRESTConstants.RESOURCES_RESOURCE + "guid/{guid}")
     @Produces({ "application/json", "application/xml" })
-    public List<RangerServiceResource> 
getServiceResourcesByExternalId(@PathParam("externalId") String externalId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public RangerServiceResource getServiceResourceByGuid(@PathParam("guid") 
String guid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.getServiceResourceByExternalId(" + 
externalId + ")");
+            LOG.debug("==> TagREST.getServiceResourceByGuid(" + guid + ")");
         }
-        List<RangerServiceResource> ret;
+        RangerServiceResource ret;
         try {
-            ret = tagStore.getServiceResourcesByExternalId(externalId);
+            ret = tagStore.getServiceResourceByGuid(guid);
         } catch(Exception excp) {
-            LOG.error("getServiceResourceByExternalId(" + externalId + ") 
failed", excp);
+            LOG.error("getServiceResourceByGuid(" + guid + ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
         if(LOG.isDebugEnabled()) {
-            LOG.debug("<== TagREST.getServiceResourceByExternalId(" + 
externalId + "): " + ret);
+            LOG.debug("<== TagREST.getServiceResourceByGuid(" + guid + "): " + 
ret);
         }
         return ret;
     }
@@ -668,26 +659,25 @@ public class TagREST {
     @POST
     @Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-    public RangerTagResourceMap 
createTagResourceMap(@QueryParam("externalResourceId") String 
externalResourceId,
-                                                     
@QueryParam("externalTagId") String externalTagId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public RangerTagResourceMap createTagResourceMap(@QueryParam("tagGuid") 
String tagGuid, @QueryParam("resourceGuid") String resourceGuid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.createTagResourceMap(" + externalResourceId 
+ ", " + externalTagId + ")");
+            LOG.debug("==> TagREST.createTagResourceMap(" + tagGuid + ", " +  
resourceGuid + ")");
         }
 
         RangerTagResourceMap tagResourceMap;
 
         try {
-            tagResourceMap = 
validator.preCreateTagResourceMap(externalResourceId, externalTagId);
+            tagResourceMap = validator.preCreateTagResourceMap(tagGuid, 
resourceGuid);
             tagResourceMap = tagStore.createTagResourceMap(tagResourceMap);
         } catch(Exception excp) {
-            LOG.error("createTagResourceMap(" + externalResourceId + ", " + 
externalTagId + ") failed", excp);
+            LOG.error("createTagResourceMap(" + tagGuid + ", " +  resourceGuid 
+ ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.createTagResourceMap(" + externalResourceId 
+ ", " + externalTagId + ")");
+            LOG.debug("==> TagREST.createTagResourceMap(" + tagGuid + ", " + 
resourceGuid + ")");
         }
 
         return tagResourceMap;
@@ -696,24 +686,23 @@ public class TagREST {
     @DELETE
     @Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
-    public void deleteTagResourceMap(@QueryParam("externalResourceId") String 
externalResourceId,
-                                     @QueryParam("externalTagId") String 
externalTagId) {
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    public void deleteTagResourceMap(@QueryParam("tagGuid") String tagGuid, 
@QueryParam("resourceGuid") String resourceGuid) {
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.deleteTagResourceMap(" + externalResourceId 
+ ", " + externalTagId + ")");
+            LOG.debug("==> TagREST.deleteTagResourceMap(" + tagGuid + ", " + 
resourceGuid + ")");
         }
 
         try {
-            RangerTagResourceMap exist = 
validator.preDeleteTagResourceMap(externalResourceId, externalTagId);
+            RangerTagResourceMap exist = 
validator.preDeleteTagResourceMap(tagGuid, resourceGuid);
             tagStore.deleteTagResourceMapById(exist.getId());
         } catch(Exception excp) {
-            LOG.error("deleteTagResourceMap(" + externalResourceId + ", " + 
externalTagId + ") failed", excp);
+            LOG.error("deleteTagResourceMap(" + tagGuid + ", " +  resourceGuid 
+ ") failed", excp);
 
             throw 
restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, 
excp.getMessage(), true);
         }
 
         if(LOG.isDebugEnabled()) {
-            LOG.debug("==> TagREST.deleteTagResourceMap(" + externalResourceId 
+ ", " + externalTagId + ")");
+            LOG.debug("==> TagREST.deleteTagResourceMap(" + tagGuid + ", " + 
resourceGuid + ")");
         }
     }
 
@@ -727,7 +716,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.RESOURCES_RESOURCE)
     @Produces({ "application/json", "application/xml" })
-    //@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<RangerServiceResource> 
getServiceResources(RangerServiceResource resource) throws Exception {
 
         List<RangerServiceResource> ret = null;
@@ -776,6 +765,7 @@ public class TagREST {
     @GET
     @Path(TagRESTConstants.TAGNAMES_RESOURCE)
     @Produces({ "application/json", "application/xml" })
+    @PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
     public List<String> 
getTagNames(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String 
serviceName) {
 
         if(LOG.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java 
b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
index 915ff13..07a559c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java
@@ -22,25 +22,18 @@ package org.apache.ranger.rest;
 public class TagRESTConstants {
        public static final String TAGDEF_NAME_AND_VERSION = "tags";
 
-       static final String TAGDEFS_RESOURCE = "/tagdefs/";
-       static final String TAGDEF_RESOURCE = "/tagdef/";
-
-       static final String TAGS_RESOURCE = "/tags/";
-       static final String TAG_RESOURCE = "/tag/";
-
-       static final String RESOURCES_RESOURCE = "/resources/";
-       static final String RESOURCE_RESOURCE = "/resource/";
-
+       static final String TAGDEFS_RESOURCE         = "/tagdefs/";
+       static final String TAGDEF_RESOURCE          = "/tagdef/";
+       static final String TAGS_RESOURCE            = "/tags/";
+       static final String TAG_RESOURCE             = "/tag/";
+       static final String RESOURCES_RESOURCE       = "/resources/";
+       static final String RESOURCE_RESOURCE        = "/resource/";
        static final String TAGRESOURCEMAPS_RESOURCE = "/tagresourcemaps/";
+       static final String TAGNAMES_RESOURCE        = "/tags/names/";
+       static final String LOOKUP_TAGS_RESOURCE     = "/tags/lookup/";
+       static final String TAGS_DOWNLOAD            = "/download/";
 
-
-       static final String TAGNAMES_RESOURCE = "/tags/names/";
-       static final String LOOKUP_TAGS_RESOURCE = "/tags/lookup/";
-
-       static final String TAGS_DOWNLOAD = "/download/";
-
-       public static final String SERVICE_NAME_PARAM = "serviceName";
-       public static final String LAST_KNOWN_TAG_VERSION_PARAM = "tagVersion";
-       public static final String PATTERN_PARAM = "pattern";
-
+       public static final String SERVICE_NAME_PARAM           = "serviceName";
+       public static final String LAST_KNOWN_TAG_VERSION_PARAM = 
"lastKnownVersion";
+       public static final String PATTERN_PARAM                = "pattern";
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
index e80ba01..9f9761c 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
@@ -20,15 +20,6 @@ package org.apache.ranger.service;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.ranger.common.SearchField.DATA_TYPE;
-import org.apache.ranger.common.SearchField.SEARCH_TYPE;
-import org.apache.ranger.common.UserSessionBase;
-import org.apache.ranger.entity.XXContextEnricherDef;
-import org.apache.ranger.entity.XXAccessTypeDef;
-import org.apache.ranger.entity.XXEnumDef;
-import org.apache.ranger.entity.XXPolicyConditionDef;
-import org.apache.ranger.entity.XXResourceDef;
-import org.apache.ranger.entity.XXServiceConfigDef;
 import org.apache.ranger.entity.XXServiceDef;
 import org.apache.ranger.entity.XXServiceDefBase;
 import org.apache.ranger.plugin.model.RangerServiceDef;

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
new file mode 100644
index 0000000..3bbd344
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.ranger.common.SearchField;
+import org.apache.ranger.common.SearchField.DATA_TYPE;
+import org.apache.ranger.common.SearchField.SEARCH_TYPE;
+import org.apache.ranger.entity.XXServiceResource;
+import org.apache.ranger.plugin.model.RangerServiceResource;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerServiceResourceService extends 
RangerServiceResourceServiceBase<XXServiceResource, RangerServiceResource> {
+
+       public RangerServiceResourceService() {
+               searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, 
"obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+               searchFields.add(new SearchField(SearchFilter.TAG_SERVICE_ID, 
"obj.serviceId", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+               searchFields.add(new 
SearchField(SearchFilter.TAG_RESOURCE_SIGNATURE, "obj.resourceSignature", 
DATA_TYPE.STRING, SEARCH_TYPE.FULL));
+       }
+
+       @Override
+       protected void validateForCreate(RangerServiceResource vObj) {
+
+       }
+
+       @Override
+       protected void validateForUpdate(RangerServiceResource vObj, 
XXServiceResource entityObj) {
+
+       }
+       
+       public RangerServiceResource getPopulatedViewObject(XXServiceResource 
xObj) {
+               return populateViewBean(xObj);
+       }
+
+       public RangerServiceResource getServiceResourceByGuid(String guid) {
+               RangerServiceResource ret = null;
+
+               XXServiceResource xxServiceResource = 
daoMgr.getXXServiceResource().findByGuid(guid);
+               
+               if(xxServiceResource != null) {
+                       ret = populateViewBean(xxServiceResource);
+               }
+
+               return ret;
+       }
+
+       public RangerServiceResource 
getServiceResourceByServiceIdAndResourceSignature(Long serviceId, String 
resourceSignature) {
+               RangerServiceResource ret = null;
+
+               XXServiceResource xxServiceResource = 
daoMgr.getXXServiceResource().findByServiceIdAndResourceSignature(serviceId, 
resourceSignature);
+               
+               if(xxServiceResource != null) {
+                       ret = populateViewBean(xxServiceResource);
+               }
+
+               return ret;
+       }
+
+       public List<RangerServiceResource> getTaggedResourcesInServiceId(Long 
serviceId) {
+               List<RangerServiceResource> ret = new 
ArrayList<RangerServiceResource>();
+
+               List<XXServiceResource> xxServiceResources = 
daoMgr.getXXServiceResource().findTaggedResourcesInServiceId(serviceId);
+               
+               if(CollectionUtils.isNotEmpty(xxServiceResources)) {
+                       for(XXServiceResource xxServiceResource : 
xxServiceResources) {
+                               RangerServiceResource serviceResource = 
populateViewBean(xxServiceResource);
+
+                               ret.add(serviceResource);
+                       }
+               }
+
+               return ret;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
new file mode 100644
index 0000000..f6a1dca
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+package org.apache.ranger.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.common.MessageEnums;
+import org.apache.ranger.entity.XXResourceDef;
+import org.apache.ranger.entity.XXService;
+import org.apache.ranger.entity.XXServiceResource;
+import org.apache.ranger.entity.XXServiceResourceElement;
+import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
+import org.apache.ranger.plugin.model.RangerServiceResource;
+import org.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerServiceResourceServiceBase<T extends 
XXServiceResource, V extends RangerServiceResource> extends 
RangerBaseModelService<T, V> {
+
+       @Autowired
+       GUIDUtil guidUtil;
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected XXServiceResource mapViewToEntityBean(RangerServiceResource 
vObj, XXServiceResource xObj, int operationContext) {
+               String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
+
+               xObj.setGuid(guid);
+               xObj.setVersion(vObj.getVersion());
+               xObj.setIsEnabled(vObj.getIsEnabled());
+
+               XXService xService = 
daoMgr.getXXService().findByName(vObj.getServiceName());
+               if (xService == null) {
+                       throw restErrorUtil.createRESTException("Error 
Populating XXServiceResource. No Service found with name: " + 
vObj.getServiceName(), MessageEnums.INVALID_INPUT_DATA);
+               }
+
+               xObj.setServiceId(xService.getId());
+
+               return xObj;
+       }
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected RangerServiceResource 
mapEntityToViewBean(RangerServiceResource vObj, XXServiceResource xObj) {
+               vObj.setGuid(xObj.getGuid());
+               vObj.setVersion(xObj.getVersion());
+               vObj.setIsEnabled(xObj.getIsEnabled());
+
+               XXService xService = 
daoMgr.getXXService().getById(xObj.getServiceId());
+
+               vObj.setServiceName(xService.getName());
+
+               List<XXServiceResourceElement> resElementList = 
daoMgr.getXXServiceResourceElement().findByResourceId(xObj.getId());
+               Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = 
new HashMap<String, RangerPolicy.RangerPolicyResource>();
+
+               for (XXServiceResourceElement resElement : resElementList) {
+                       List<String> resValueMapList = 
daoMgr.getXXServiceResourceElementValue().findValuesByResElementId(resElement.getId());
+
+                       XXResourceDef xResDef = 
daoMgr.getXXResourceDef().getById(resElement.getResDefId());
+
+                       RangerPolicyResource policyRes = new 
RangerPolicyResource();
+                       policyRes.setIsExcludes(resElement.getIsExcludes());
+                       policyRes.setIsRecursive(resElement.getIsRecursive());
+                       policyRes.setValues(resValueMapList);
+
+                       resourceSpec.put(xResDef.getName(), policyRes);
+               }
+
+               vObj.setResourceSpec(resourceSpec);
+
+               return vObj;
+       }
+
+       @SuppressWarnings("unchecked")
+       public PList<RangerServiceResource> searchServiceResources(SearchFilter 
searchFilter) {
+               PList<RangerServiceResource> retList = new 
PList<RangerServiceResource>();
+               List<RangerServiceResource> resourceList = new 
ArrayList<RangerServiceResource>();
+
+               List<XXServiceResource> xResourceList = 
(List<XXServiceResource>) searchRangerObjects(searchFilter, searchFields, 
sortFields, (PList<V>) retList);
+
+               for (XXServiceResource xResource : xResourceList) {
+                       RangerServiceResource taggedRes = populateViewBean((T) 
xResource);
+                       resourceList.add(taggedRes);
+               }
+               retList.setList(resourceList);
+               return retList;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/303f7b70/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
index bd61ff1..462b781 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
@@ -19,11 +19,17 @@
 
 package org.apache.ranger.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.ranger.common.SearchField;
 import org.apache.ranger.common.SearchField.DATA_TYPE;
 import org.apache.ranger.common.SearchField.SEARCH_TYPE;
 import org.apache.ranger.entity.XXTagDef;
+import org.apache.ranger.entity.XXTagResourceMap;
 import org.apache.ranger.plugin.model.RangerTagDef;
+import org.apache.ranger.plugin.model.RangerTagResourceMap;
 import org.apache.ranger.plugin.util.SearchFilter;
 import org.springframework.stereotype.Service;
 
@@ -32,6 +38,7 @@ public class RangerTagDefService extends 
RangerTagDefServiceBase<XXTagDef, Range
 
        public RangerTagDefService() {
                searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, 
"obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+               searchFields.add(new SearchField(SearchFilter.TAG_DEF_GUID, 
"obj.guid", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
                searchFields.add(new SearchField(SearchFilter.TAG_DEF_NAME, 
"obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
        }
        
@@ -45,8 +52,61 @@ public class RangerTagDefService extends 
RangerTagDefServiceBase<XXTagDef, Range
 
        }
 
+       @Override
+       public RangerTagDef postUpdate(XXTagDef tagDef) {
+               RangerTagDef ret = super.postUpdate(tagDef);
+
+               
daoMgr.getXXTagDef().updateServiceForTagDefUpdate(tagDef.getId(), 
tagDef.getUpdateTime());
+
+               return ret;
+       }
+
        public RangerTagDef getPopulatedViewObject(XXTagDef xObj) {
                return populateViewBean(xObj);
        }
 
+       public RangerTagDef getTagDefByGuid(String guid) {
+               RangerTagDef ret = null;
+
+               XXTagDef xxTagDef = daoMgr.getXXTagDef().findByGuid(guid);
+               
+               if(xxTagDef != null) {
+                       ret = populateViewBean(xxTagDef);
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagDef> getTagDefsByName(String name) {
+               List<RangerTagDef> ret = new ArrayList<RangerTagDef>();
+
+               List<XXTagDef> xxTagDefs = 
daoMgr.getXXTagDef().findByName(name);
+               
+               if(CollectionUtils.isNotEmpty(xxTagDefs)) {
+                       for(XXTagDef xxTagDef : xxTagDefs) {
+                               RangerTagDef tagDef = 
populateViewBean(xxTagDef);
+                               
+                               ret.add(tagDef);
+                       }
+               }
+
+               return ret;
+       }
+
+       public List<RangerTagDef> getTagDefsByServiceId(Long serviceId) {
+               List<RangerTagDef> ret = new ArrayList<RangerTagDef>();
+
+               List<XXTagDef> xxTagDefs = 
daoMgr.getXXTagDef().findByServiceId(serviceId);
+               
+               if(CollectionUtils.isNotEmpty(xxTagDefs)) {
+                       for(XXTagDef xxTagDef : xxTagDefs) {
+                               RangerTagDef tagDef = 
populateViewBean(xxTagDef);
+                               
+                               ret.add(tagDef);
+                       }
+               }
+
+               return ret;
+       }
+       
 }


Reply via email to