Repository: incubator-ranger
Updated Branches:
  refs/heads/tag-policy dba2bea65 -> bc090a669


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/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
new file mode 100644
index 0000000..953df6b
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTagResourceMap.java
@@ -0,0 +1,195 @@
+/*
+ * 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_tag_resource_map")
+@XmlRootElement
+public class XXTagResourceMap extends XXDBBase implements Serializable {
+       private static final long serialVersionUID = 1L;
+
+       @Id
+       @SequenceGenerator(name = "XXTagResourceMapSEQ", sequenceName = 
"XXTagResourceMapSEQ", allocationSize = 1)
+       @GeneratedValue(strategy = GenerationType.AUTO, generator = 
"XXTagResourceMapSEQ")
+       @Column(name = "id")
+       protected Long id;
+
+       @Column(name = "guid", unique = true, nullable = false, length = 512)
+       protected String guid;
+
+       @Column(name = "tag_id")
+       protected Long tagId;
+
+       @Column(name = "tagged_res_id")
+       protected Long taggedResId;
+
+       @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 tagId
+        */
+       public Long getTagId() {
+               return tagId;
+       }
+
+       /**
+        * @param tagId
+        *            the tagId to set
+        */
+       public void setTagId(Long tagId) {
+               this.tagId = tagId;
+       }
+
+       /**
+        * @return the taggedResId
+        */
+       public Long getTaggedResId() {
+               return taggedResId;
+       }
+
+       /**
+        * @param taggedResId
+        *            the taggedResId to set
+        */
+       public void setTaggedResId(Long taggedResId) {
+               this.taggedResId = taggedResId;
+       }
+
+       @Override
+       public int getMyClassType() {
+               return AppConstants.CLASS_TYPE_XA_TAG_RESOURCE_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 + ((tagId == null) ? 0 : 
tagId.hashCode());
+               result = prime * result + ((taggedResId == null) ? 0 : 
taggedResId.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;
+               XXTagResourceMap other = (XXTagResourceMap) 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 (tagId == null) {
+                       if (other.tagId != null)
+                               return false;
+               } else if (!tagId.equals(other.tagId))
+                       return false;
+               if (taggedResId == null) {
+                       if (other.taggedResId != null)
+                               return false;
+               } else if (!taggedResId.equals(other.taggedResId))
+                       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("tagId={").append(tagId).append("} ");
+               sb.append("taggedResId={").append(taggedResId).append("} ");
+               sb.append(" }");
+
+               return sb;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/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
new file mode 100644
index 0000000..9487bc7
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResource.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_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/bc090a66/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
new file mode 100644
index 0000000..977d1f5
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValue.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_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/bc090a66/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
new file mode 100644
index 0000000..62e875f
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/entity/XXTaggedResourceValueMap.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_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/bc090a66/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 3f2062a..0837290 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
@@ -23,6 +23,7 @@ import org.apache.commons.collections.CollectionUtils;
 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.common.RESTErrorUtil;
 import org.apache.ranger.plugin.model.RangerTaggedResourceKey;
 import org.apache.ranger.plugin.model.RangerTaggedResource;
@@ -53,32 +54,22 @@ public class TagREST {
 
     private static final Log LOG = LogFactory.getLog(TagREST.class);
 
-    @Autowired
-    RESTErrorUtil restErrorUtil;
+       @Autowired
+       RESTErrorUtil restErrorUtil;
 
-    /*
-    @Autowired
-    ServiceRESTStore svcStore;
-    */
+       @Autowired
+       ServiceDBStore svcStore;
 
-    @Autowired
-    ServiceDBStore svcStore;
+       @Autowired
+       TagDBStore tagStore;
 
-    /*
-    @Autowired
-    TagFileStore tagStore;
-    */
+       public TagREST() {
+       }
 
-    private TagStore tagStore;
+       @PostConstruct
+       public void initStore() {
 
-    public TagREST() {
-    }
-
-    @PostConstruct
-    public void initStore() {
-        tagStore = TagFileStore.getInstance();
-        tagStore.setServiceStore(svcStore);
-    }
+       }
 
     @POST
     @Path(TagRESTConstants.TAGS_RESOURCE)

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/security-admin/src/main/java/org/apache/ranger/service/RangerAuditFields.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerAuditFields.java 
b/security-admin/src/main/java/org/apache/ranger/service/RangerAuditFields.java
index cab208b..7223f10 100644
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerAuditFields.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerAuditFields.java
@@ -17,12 +17,14 @@
 
 package org.apache.ranger.service;
 
+import org.apache.ranger.common.ContextUtil;
+import org.apache.ranger.common.DateUtil;
 import org.apache.ranger.entity.XXDBBase;
 import org.springframework.stereotype.Component;
 
 @Component
 public class RangerAuditFields<T extends XXDBBase> {
-       
+
        public T populateAuditFields(T xObj, T parentObj) {
                xObj.setCreateTime(parentObj.getCreateTime());
                xObj.setUpdateTime(parentObj.getUpdateTime());
@@ -31,4 +33,12 @@ public class RangerAuditFields<T extends XXDBBase> {
                return xObj;
        }
 
+       public T populateAuditFieldsForCreate(T xObj) {
+               xObj.setCreateTime(DateUtil.getUTCDate());
+               xObj.setUpdateTime(DateUtil.getUTCDate());
+               xObj.setAddedByUserId(ContextUtil.getCurrentUserId());
+               xObj.setUpdatedByUserId(ContextUtil.getCurrentUserId());
+               return xObj;
+       }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/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
new file mode 100644
index 0000000..25fc278
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java
@@ -0,0 +1,39 @@
+/*
+ * 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 org.apache.ranger.entity.XXTagDef;
+import org.apache.ranger.plugin.model.RangerTagDef;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, 
RangerTagDef> {
+
+       @Override
+       protected void validateForCreate(RangerTagDef vObj) {
+
+       }
+
+       @Override
+       protected void validateForUpdate(RangerTagDef vObj, XXTagDef entityObj) 
{
+
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
new file mode 100644
index 0000000..8b2d8a9
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
@@ -0,0 +1,115 @@
+/*
+ * 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.lang.StringUtils;
+import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.entity.XXDBBase;
+import org.apache.ranger.entity.XXTagAttributeDef;
+import org.apache.ranger.entity.XXTagDef;
+import org.apache.ranger.plugin.model.RangerTagDef;
+import org.apache.ranger.plugin.model.RangerTagDef.RangerTagAttributeDef;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerTagDefServiceBase<T extends XXTagDef, V extends 
RangerTagDef> extends
+               RangerBaseModelService<T, V> {
+
+       @Autowired
+       GUIDUtil guidUtil;
+
+       @Autowired
+       RangerAuditFields<XXDBBase> rangerAuditFields;
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected XXTagDef mapViewToEntityBean(RangerTagDef vObj, XXTagDef 
xObj, int OPERATION_CONTEXT) {
+               String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
+
+               xObj.setGuid(guid);
+               xObj.setVersion(vObj.getVersion());
+               xObj.setIsEnabled(vObj.getIsEnabled());
+               xObj.setName(vObj.getName());
+               xObj.setSource(vObj.getSource());
+               return xObj;
+       }
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected RangerTagDef mapEntityToViewBean(RangerTagDef vObj, XXTagDef 
xObj) {
+
+               vObj.setGuid(xObj.getGuid());
+               vObj.setVersion(xObj.getVersion());
+               vObj.setIsEnabled(xObj.getIsEnabled());
+               vObj.setName(xObj.getName());
+               vObj.setSource(xObj.getSource());
+
+               List<RangerTagAttributeDef> attributeDefs = 
getAttributeDefForTagDef(xObj);
+               vObj.setAttributeDefs(attributeDefs);
+
+               return vObj;
+       }
+
+       public List<RangerTagAttributeDef> getAttributeDefForTagDef(XXTagDef 
xtagDef) {
+               List<XXTagAttributeDef> tagAttrDefList = 
daoMgr.getXXTagAttributeDef().findByTagDefId(xtagDef.getId());
+               List<RangerTagDef.RangerTagAttributeDef> attributeDefList = new 
ArrayList<RangerTagDef.RangerTagAttributeDef>();
+
+               for (XXTagAttributeDef xAttrTag : tagAttrDefList) {
+                       RangerTagAttributeDef attrDef = 
populateRangerTagAttributeDef(xAttrTag);
+                       attributeDefList.add(attrDef);
+               }
+               return attributeDefList;
+       }
+
+       /**
+        * @param xObj
+        * @return
+        */
+       public RangerTagAttributeDef 
populateRangerTagAttributeDef(XXTagAttributeDef xObj) {
+               RangerTagAttributeDef attrDef = new RangerTagAttributeDef();
+               attrDef.setName(xObj.getName());
+               attrDef.setType(xObj.getType());
+               return attrDef;
+       }
+
+       /**
+        * @param attrDef
+        * @param xTagAttrDef
+        * @param parentObj
+        * @return
+        */
+       public XXTagAttributeDef 
populateXXTagAttributeDef(RangerTagAttributeDef attrDef, XXTagAttributeDef 
xTagAttrDef,
+                       XXTagDef parentObj) {
+
+               if (xTagAttrDef == null) {
+                       xTagAttrDef = new XXTagAttributeDef();
+                       xTagAttrDef.setGuid(guidUtil.genGUID());
+               }
+
+               xTagAttrDef = (XXTagAttributeDef) 
rangerAuditFields.populateAuditFields(xTagAttrDef, parentObj);
+
+               xTagAttrDef.setTagDefId(parentObj.getId());
+               xTagAttrDef.setName(attrDef.getName());
+               xTagAttrDef.setType(attrDef.getType());
+               return xTagAttrDef;
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
new file mode 100644
index 0000000..67efcad
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
@@ -0,0 +1,43 @@
+/*
+ * 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 org.apache.ranger.entity.XXTaggedResource;
+import org.apache.ranger.plugin.model.RangerTaggedResource;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RangerTaggedResourceService extends 
RangerTaggedResourceServiceBase<XXTaggedResource, RangerTaggedResource> {
+
+       @Override
+       protected void validateForCreate(RangerTaggedResource vObj) {
+
+       }
+
+       @Override
+       protected void validateForUpdate(RangerTaggedResource vObj, 
XXTaggedResource entityObj) {
+
+       }
+       
+       public RangerTaggedResource getPopulatedViewObjject(XXTaggedResource 
xObj) {
+               return populateViewBean(xObj);
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
----------------------------------------------------------------------
diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
new file mode 100644
index 0000000..c50c1fd
--- /dev/null
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
@@ -0,0 +1,147 @@
+/*
+ * 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.XXTag;
+import org.apache.ranger.entity.XXTagAttribute;
+import org.apache.ranger.entity.XXTaggedResource;
+import org.apache.ranger.entity.XXTaggedResourceValue;
+import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
+import org.apache.ranger.plugin.model.RangerTaggedResource;
+import org.apache.ranger.plugin.model.RangerTaggedResourceKey;
+import org.apache.ranger.plugin.model.RangerTaggedResource.RangerResourceTag;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public abstract class RangerTaggedResourceServiceBase<T extends 
XXTaggedResource, V extends RangerTaggedResource> extends 
RangerBaseModelService<T, V> {
+
+       @Autowired
+       GUIDUtil guidUtil;
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected XXTaggedResource mapViewToEntityBean(RangerTaggedResource 
vObj, XXTaggedResource xObj, int operationContext) {
+               String guid = (StringUtils.isEmpty(vObj.getGuid())) ? 
guidUtil.genGUID() : vObj.getGuid();
+
+               xObj.setGuid(guid);
+               xObj.setVersion(vObj.getVersion());
+               xObj.setIsEnabled(vObj.getIsEnabled());
+               xObj.setExternalId(vObj.getExternalId());
+
+               RangerTaggedResourceKey key = vObj.getKey();
+               if (key == null) {
+                       throw restErrorUtil.createRESTException("Error 
Populating XXTaggedResource. Key cannot be null in RangerTaggedResource.", 
MessageEnums.INVALID_INPUT_DATA);
+               }
+               XXService xService = 
daoMgr.getXXService().findByName(key.getServiceName());
+               if (xService == null) {
+                       throw restErrorUtil.createRESTException("Error 
Populating XXTaggedResource. No Service found with name: " + 
key.getServiceName(), MessageEnums.INVALID_INPUT_DATA);
+               }
+
+               xObj.setServiceId(xService.getId());
+
+               return xObj;
+       }
+
+       @Override
+       @SuppressWarnings("unchecked")
+       protected RangerTaggedResource mapEntityToViewBean(RangerTaggedResource 
vObj, XXTaggedResource xObj) {
+               vObj.setGuid(xObj.getGuid());
+               vObj.setVersion(xObj.getVersion());
+               vObj.setIsEnabled(xObj.getIsEnabled());
+               vObj.setExternalId(xObj.getExternalId());
+
+               RangerTaggedResourceKey key = 
populateRangerTaggedResourceKey(xObj);
+               vObj.setKey(key);
+
+               List<RangerResourceTag> tags = populateRangerResourceTags(xObj);
+               vObj.setTags(tags);
+
+               return vObj;
+       }
+
+       private List<RangerResourceTag> 
populateRangerResourceTags(XXTaggedResource xTaggedRes) {
+               if (xTaggedRes == null) {
+                       return null;
+               }
+
+               List<RangerResourceTag> tags = new 
ArrayList<RangerTaggedResource.RangerResourceTag>();
+
+               List<XXTag> xTagList = 
daoMgr.getXXTag().findByTaggedResource(xTaggedRes.getId());
+
+               for (XXTag xTag : xTagList) {
+                       RangerResourceTag tag = new RangerResourceTag();
+
+                       List<XXTagAttribute> tagAttrList = 
daoMgr.getXXTagAttribute().findByTagId(xTag.getId());
+                       Map<String, String> attrList = new HashMap<String, 
String>();
+
+                       for (XXTagAttribute tagAttr : tagAttrList) {
+                               attrList.put(tagAttr.getName(), 
tagAttr.getValue());
+                       }
+
+                       tag.setAttributeValues(attrList);
+                       tag.setName(xTag.getName());
+                       tag.setExternalId(xTag.getExternalId());
+                       
+                       tags.add(tag);
+               }
+
+               return tags;
+       }
+
+       private RangerTaggedResourceKey 
populateRangerTaggedResourceKey(XXTaggedResource xTaggedRes) {
+               if (xTaggedRes == null) {
+                       return null;
+               }
+
+               RangerTaggedResourceKey key = new RangerTaggedResourceKey();
+
+               XXService xService = 
daoMgr.getXXService().getById(xTaggedRes.getServiceId());
+               key.setServiceName(xService.getName());
+
+               List<XXTaggedResourceValue> resValueList = 
daoMgr.getXXTaggedResourceValue().findByTaggedResId(xTaggedRes.getId());
+               Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = 
new HashMap<String, RangerPolicy.RangerPolicyResource>();
+
+               for (XXTaggedResourceValue resValue : resValueList) {
+                       List<String> resValueMapList = 
daoMgr.getXXTaggedResourceValueMap().findValuesByResValueId(resValue.getId());
+
+                       XXResourceDef xResDef = 
daoMgr.getXXResourceDef().getById(resValue.getResDefId());
+
+                       RangerPolicyResource policyRes = new 
RangerPolicyResource();
+                       policyRes.setIsExcludes(resValue.getIsExcludes());
+                       policyRes.setIsRecursive(resValue.getIsRecursive());
+                       policyRes.setValues(resValueMapList);
+
+                       resourceSpec.put(xResDef.getName(), policyRes);
+               }
+               key.setResourceSpec(resourceSpec);
+               return key;
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/bc090a66/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml 
b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
index aa504e7..090b70c 100644
--- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
+++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml
@@ -532,4 +532,51 @@
                           xpu.id=:userId and gmp.isAllowed=:isAllowed
                </query>
        </named-query>
+       
+       <!-- Start ==> JPA Queries for Tag Based Policies  -->
+
+       <named-query name="XXTagAttributeDef.findByTagDefId">
+               <query>select obj from XXTagAttributeDef obj where obj.tagDefId 
= :tagDefId</query>
+       </named-query>
+       
+       <named-query name="XXTaggedResourceValue.findByTaggedResId">
+               <query>select obj from XXTaggedResourceValue obj where 
obj.taggedResourceId = :taggedResId</query>
+       </named-query>
+       
+       <named-query name="XXTaggedResourceValueMap.findByResValueId">
+               <query>select obj from XXTaggedResourceValueMap obj where 
obj.resValueId = :resValueId</query>
+       </named-query>
+
+       <named-query name="XXTaggedResourceValueMap.findValuesByResValueId">
+               <query>select obj.value from XXTaggedResourceValueMap obj where 
obj.resValueId = :resValueId</query>
+       </named-query>
+
+       <named-query name="XXTag.findByTaggedResource">
+               <query>select obj from XXTag obj, XXTagResourceMap tagResMap 
where 
+               tagResMap.taggedResId = :taggedResId and obj.id = 
tagResMap.tagId</query>
+       </named-query>
+       
+       <named-query name="XXTagAttribute.findByTagId">
+               <query>select obj from XXTagAttribute obj where obj.tagId = 
:tagId</query>
+       </named-query>
+       
+       <named-query name="XXTaggedResource.findByServiceId">
+               <query>select obj from XXTaggedResource obj where obj.serviceId 
= :serviceId</query>
+       </named-query>
+
+       <named-query name="XXTag.findTagNamesByServiceId">
+               <query>select obj.name from XXTag obj, XXTaggedResource tRes, 
XXTagResourceMap tResMap where 
+               tRes.serviceId = :serviceId and obj.id = tResMap.tagId and 
tRes.id = tResMap.taggedResId </query>
+       </named-query>  
+       
+       <named-query name="XXTagResourceMap.findByTaggedResourceId">
+               <query>select obj from XXTagResourceMap obj where 
obj.taggedResId = :taggedResId</query>
+       </named-query>
+       
+       <named-query name="XXTag.findTagsByExternalId">
+               <query>select obj from XXTag obj where obj.externalId = 
:externalId</query>
+       </named-query>
+
+       <!-- End <== JPA Queries for Tag Based Policies  -->
+       
 </entity-mappings>


Reply via email to