You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/08/15 02:50:20 UTC
incubator-ranger git commit: RANGER-595: CRUDs of Tag def - Support
for persisting tag info in the database
Repository: incubator-ranger
Updated Branches:
refs/heads/tag-policy 3130174ef -> 532e2e04d
RANGER-595: CRUDs of Tag def - Support for persisting tag info in the database
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/532e2e04
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/532e2e04
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/532e2e04
Branch: refs/heads/tag-policy
Commit: 532e2e04da0b7c537c3dc3351bb59b0af8eecc53
Parents: 3130174
Author: Gautam Borad <gb...@gmail.com>
Authored: Fri Aug 14 17:30:03 2015 +0530
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Fri Aug 14 17:24:48 2015 -0700
----------------------------------------------------------------------
.../apache/ranger/plugin/store/TagStore.java | 4 +-
.../ranger/plugin/store/file/TagFileStore.java | 51 +++--
.../java/org/apache/ranger/biz/TagDBStore.java | 190 +++++++++++++++++--
.../java/org/apache/ranger/db/XXTagDefDao.java | 19 ++
.../java/org/apache/ranger/rest/TagREST.java | 32 ++--
.../ranger/service/RangerBaseModelService.java | 32 +++-
.../ranger/service/RangerTagDefService.java | 13 ++
.../ranger/service/RangerTagDefServiceBase.java | 23 +++
.../service/RangerTaggedResourceService.java | 8 +
.../RangerTaggedResourceServiceBase.java | 17 ++
.../resources/META-INF/jpa_named_queries.xml | 4 +
11 files changed, 338 insertions(+), 55 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
index d909e56..3e61f92 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/TagStore.java
@@ -42,7 +42,9 @@ public interface TagStore {
void deleteTagDef(String name) throws Exception;
- RangerTagDef getTagDef(String name) throws Exception;
+ void deleteTagDefById(Long id) throws Exception;
+
+ List<RangerTagDef> getTagDef(String name) throws Exception;
RangerTagDef getTagDefById(Long id) throws Exception;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
index 24a49bd..6538060 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/file/TagFileStore.java
@@ -115,10 +115,10 @@ public class TagFileStore extends AbstractTagStore {
LOG.debug("==> TagFileStore.createTagDef(" + tagDef + ")");
}
- RangerTagDef existing = getTagDef(tagDef.getName());
+ List<RangerTagDef> existing = getTagDef(tagDef.getName());
- if (existing != null) {
- throw new Exception(tagDef.getName() + ": tag-def already exists (id=" + existing.getId() + ")");
+ if (CollectionUtils.isNotEmpty(existing)) {
+ throw new Exception(tagDef.getName() + ": tag-def already exists (id=" + existing.get(0).getId() + ")");
}
RangerTagDef ret;
@@ -150,12 +150,23 @@ public class TagFileStore extends AbstractTagStore {
LOG.debug("==> TagFileStore.updateTagDef(" + tagDef + ")");
}
- RangerTagDef existing = getTagDef(tagDef.getName());
+ RangerTagDef existing = null;
- if (existing == null) {
- throw new Exception(tagDef.getName() + ": tag-def does not exist (id=" + tagDef.getId() + ")");
+ if(tagDef.getId() == null) {
+ List<RangerTagDef> existingDefs = getTagDef(tagDef.getName());
+
+ if (CollectionUtils.isEmpty(existingDefs)) {
+ throw new Exception("tag-def does not exist: name=" + tagDef.getName());
+ }
+ } else {
+ existing = this.getTagDefById(tagDef.getId());
+
+ if (existing == null) {
+ throw new Exception("tag-def does not exist: id=" + tagDef.getId());
+ }
}
+
RangerTagDef ret;
try {
@@ -186,20 +197,22 @@ public class TagFileStore extends AbstractTagStore {
LOG.debug("==> TagFileStore.deleteTagDef(" + name + ")");
}
- RangerTagDef existing = getTagDef(name);
+ List<RangerTagDef> existingDefs = getTagDef(name);
- if (existing == null) {
- throw new Exception("no tag-def exists with ID=" + name);
+ if (CollectionUtils.isEmpty(existingDefs)) {
+ throw new Exception("no tag-def exists with name=" + name);
}
try {
- Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_DEF, existing.getId()));
+ for(RangerTagDef existing : existingDefs) {
+ Path filePath = new Path(fileStoreUtil.getDataFile(FILE_PREFIX_TAG_DEF, existing.getId()));
- preDelete(existing);
+ preDelete(existing);
- fileStoreUtil.deleteFile(filePath);
+ fileStoreUtil.deleteFile(filePath);
- postDelete(existing);
+ postDelete(existing);
+ }
} catch (Exception excp) {
throw new Exception("failed to delete tag-def with ID=" + name, excp);
}
@@ -211,19 +224,19 @@ public class TagFileStore extends AbstractTagStore {
}
@Override
- public RangerTagDef getTagDef(String name) throws Exception {
+ public List<RangerTagDef> getTagDef(String name) throws Exception {
if (LOG.isDebugEnabled()) {
LOG.debug("==> TagFileStore.getTagDef(" + name + ")");
}
- RangerTagDef ret;
+ List<RangerTagDef> ret;
if (StringUtils.isNotBlank(name)) {
SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
List<RangerTagDef> tagDefs = getTagDefs(filter);
- ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs.get(0);
+ ret = CollectionUtils.isEmpty(tagDefs) ? null : tagDefs;
} else {
ret = null;
}
@@ -725,5 +738,11 @@ public class TagFileStore extends AbstractTagStore {
return matchedTagList;
}
+
+ @Override
+ public void deleteTagDefById(Long id) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
index c424425..922c86c 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
@@ -22,6 +22,7 @@ package org.apache.ranger.biz;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -42,6 +43,7 @@ import org.apache.ranger.entity.XXService;
import org.apache.ranger.entity.XXServiceDef;
import org.apache.ranger.entity.XXTag;
import org.apache.ranger.entity.XXTagAttribute;
+import org.apache.ranger.entity.XXTagAttributeDef;
import org.apache.ranger.entity.XXTagResourceMap;
import org.apache.ranger.entity.XXTaggedResource;
import org.apache.ranger.entity.XXTaggedResourceValue;
@@ -51,6 +53,7 @@ import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerTagDef;
import org.apache.ranger.plugin.model.RangerTaggedResource;
+import org.apache.ranger.plugin.model.RangerTagDef.RangerTagAttributeDef;
import org.apache.ranger.plugin.model.RangerTaggedResource.RangerResourceTag;
import org.apache.ranger.plugin.model.RangerTaggedResourceKey;
import org.apache.ranger.plugin.policyresourcematcher.RangerDefaultPolicyResourceMatcher;
@@ -102,44 +105,168 @@ public class TagDBStore implements TagStore {
@Override
public RangerTagDef createTagDef(RangerTagDef tagDef) throws Exception {
- // TODO Auto-generated method stub
- return null;
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.createTagDef(" + tagDef + ")");
+ }
+
+ RangerTagDef ret;
+
+ try {
+ ret = rangerTagDefService.create(tagDef);
+
+ createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs());
+
+ ret = rangerTagDefService.read(ret.getId());
+
+ } catch (Exception e) {
+ throw errorUtil.createRESTException("failed to save tag-def [" + tagDef.getName() + "]", MessageEnums.ERROR_CREATING_OBJECT);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== TagDBStore.createTagDef(" + tagDef + ")");
+ }
+
+ return ret;
}
@Override
- public RangerTagDef updateTagDef(RangerTagDef TagDef) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ public RangerTagDef updateTagDef(RangerTagDef tagDef) throws Exception {
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> TagDBStore.updateTagDef(" + tagDef + ")");
+ }
+
+ RangerTagDef existing = rangerTagDefService.read(tagDef.getId());
+ RangerTagDef ret = null;
+ if (existing == null) {
+ throw errorUtil.createRESTException("failed to update tag-def [" + tagDef.getName() + "], Reason: No TagDef found with id: [" + tagDef.getId() + "]",
+ MessageEnums.DATA_NOT_UPDATABLE);
+ }
+
+ if (StringUtils.isEmpty(tagDef.getCreatedBy())) {
+ tagDef.setCreatedBy(existing.getCreatedBy());
+ }
+ if (tagDef.getCreateTime() == null) {
+ tagDef.setCreateTime(existing.getCreateTime());
+ }
+ if (StringUtils.isEmpty(tagDef.getGuid())) {
+ tagDef.setGuid(existing.getGuid());
+ }
+
+ ret = rangerTagDefService.update(tagDef);
+
+ deleteTagAttributeDefs(ret.getId());
+
+ createTagAttributeDefs(ret.getId(), tagDef.getAttributeDefs());
+
+ return rangerTagDefService.read(ret.getId());
+ }
+
+ private List<XXTagAttributeDef> createTagAttributeDefs(Long tagDefId, List<RangerTagAttributeDef> tagAttrDefList) {
+
+ if (tagDefId == null) {
+ throw errorUtil.createRESTException("TagDBStore.createTagAttributeDefs(): Error creating tag-attr def. tagDefId can not be null.", MessageEnums.ERROR_CREATING_OBJECT);
+ }
+
+ if (CollectionUtils.isEmpty(tagAttrDefList)) {
+ return null;
+ }
+
+ List<XXTagAttributeDef> xTagAttrDefList = new ArrayList<XXTagAttributeDef>();
+ for (RangerTagDef.RangerTagAttributeDef attrDef : tagAttrDefList) {
+ XXTagAttributeDef xAttrDef = new XXTagAttributeDef();
+
+ xAttrDef.setGuid(guidUtil.genGUID());
+ xAttrDef.setTagDefId(tagDefId);
+ xAttrDef.setName(attrDef.getName());
+ xAttrDef.setType(attrDef.getType());
+ xAttrDef = (XXTagAttributeDef) rangerAuditFields.populateAuditFieldsForCreate(xAttrDef);
+
+ xAttrDef = daoManager.getXXTagAttributeDef().create(xAttrDef);
+
+ xTagAttrDefList.add(xAttrDef);
+ }
+ return xTagAttrDefList;
+ }
+
+ private void deleteTagAttributeDefs(Long tagDefId) {
+ if (tagDefId == null) {
+ return;
+ }
+ List<XXTagAttributeDef> tagAttrDefList = daoManager.getXXTagAttributeDef().findByTagDefId(tagDefId);
+
+ if (CollectionUtils.isEmpty(tagAttrDefList)) {
+ return;
+ }
+
+ for (XXTagAttributeDef xAttrDef : tagAttrDefList) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Deleting tag-attribute def [" + xAttrDef.getName() + "]");
+ }
+ daoManager.getXXTagAttributeDef().remove(xAttrDef);
+ }
}
@Override
public void deleteTagDef(String name) throws Exception {
- // TODO Auto-generated method stub
+ if (StringUtils.isNotBlank(name)) {
+ return;
+ }
+
+ List<RangerTagDef> ret;
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Deleting all tag-defs with name [" + name + "]");
+ }
+
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
+ ret = getTagDefs(filter);
+
+ for (RangerTagDef tagDef : ret) {
+ LOG.info("Deleting tag-def with name [" + name + "]");
+ rangerTagDefService.delete(tagDef);
+ }
}
@Override
- public RangerTagDef getTagDef(String name) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ public void deleteTagDefById(Long id) throws Exception {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Deleting tag-def [" + id + "]");
+ }
+
+ RangerTagDef tagDef = rangerTagDefService.read(id);
+
+ rangerTagDefService.delete(tagDef);
+ }
+
+ @Override
+ public List<RangerTagDef> getTagDef(String name) throws Exception {
+
+ List<RangerTagDef> ret;
+ if (StringUtils.isNotBlank(name)) {
+ SearchFilter filter = new SearchFilter(SearchFilter.TAG_DEF_NAME, name);
+ ret = getTagDefs(filter);
+ } else {
+ ret = null;
+ }
+ return ret;
}
@Override
public RangerTagDef getTagDefById(Long id) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ return rangerTagDefService.read(id);
}
@Override
public List<RangerTagDef> getTagDefs(SearchFilter filter) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ return getPaginatedTagDefs(filter).getList();
}
@Override
public PList<RangerTagDef> getPaginatedTagDefs(SearchFilter filter) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ return rangerTagDefService.searchRangerTagDefs(filter);
}
@Override
@@ -319,6 +446,9 @@ public class TagDBStore implements TagStore {
if (resource.getCreateTime() == null) {
resource.setCreateTime(existing.getCreateTime());
}
+ if (StringUtils.isEmpty(resource.getGuid())) {
+ resource.setGuid(existing.getGuid());
+ }
ret = rangerTaggedResourceService.update(resource);
ret.setTags(resource.getTags());
@@ -410,20 +540,38 @@ public class TagDBStore implements TagStore {
@Override
public TagServiceResources getResources(String serviceName, Long lastTimestamp) throws Exception {
- // TODO Auto-generated method stub
- return null;
+
+ List<RangerTaggedResource> taggedResources;
+
+ SearchFilter filter = new SearchFilter();
+
+ if (StringUtils.isNotBlank(serviceName)) {
+ filter.setParam(SearchFilter.TAG_RESOURCE_SERVICE_NAME, serviceName);
+ }
+
+ if (lastTimestamp != null) {
+ filter.setParam(SearchFilter.TAG_RESOURCE_TIMESTAMP, Long.toString(lastTimestamp.longValue()));
+ }
+
+ taggedResources = getResources(filter);
+
+ TagServiceResources ret = new TagServiceResources();
+ ret.setTaggedResources(taggedResources);
+ // TBD
+ ret.setLastUpdateTime(new Date());
+ ret.setVersion(1L);
+
+ return ret;
}
@Override
public List<RangerTaggedResource> getResources(SearchFilter filter) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ return getPaginatedResources(filter).getList();
}
@Override
public PList<RangerTaggedResource> getPaginatedResources(SearchFilter filter) throws Exception {
- // TODO Auto-generated method stub
- return null;
+ return rangerTaggedResourceService.searchRangerTaggedResources(filter);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
index f4c00da..971b589 100644
--- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
+++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java
@@ -19,6 +19,12 @@
package org.apache.ranger.db;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.NoResultException;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.ranger.common.db.BaseDao;
import org.apache.ranger.entity.XXTagDef;
@@ -28,4 +34,17 @@ public class XXTagDefDao extends BaseDao<XXTagDef> {
super(daoManager);
}
+ public List<XXTagDef> findByName(String name) {
+ if (StringUtils.isEmpty(name)) {
+ return new ArrayList<XXTagDef>();
+ }
+
+ try {
+ return getEntityManager().createNamedQuery("XXTagDef.findByName", tClass)
+ .setParameter("name", name).getResultList();
+ } catch (NoResultException e) {
+ return new ArrayList<XXTagDef>();
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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 0837290..5af0b66 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
@@ -100,18 +100,18 @@ public class TagREST {
}
@PUT
- @Path(TagRESTConstants.TAG_RESOURCE + "/{name}")
+ @Path(TagRESTConstants.TAG_RESOURCE + "/{id}")
@Produces({ "application/json", "application/xml" })
//@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public RangerTagDef updateTagDef(@PathParam("name") String name, RangerTagDef tagDef) {
+ public RangerTagDef updateTagDef(@PathParam("id") Long id, RangerTagDef tagDef) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.updateTagDef(" + name + ")");
+ LOG.debug("==> TagREST.updateTagDef(" + id + ")");
}
- if (tagDef.getName() == null) {
- tagDef.setName(name);
- } else if (!tagDef.getName().equals(name)) {
+ if (tagDef.getId() == null) {
+ tagDef.setId(id);
+ } else if (!tagDef.getId().equals(id)) {
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST , "tag name mismatch", true);
}
@@ -120,49 +120,49 @@ public class TagREST {
try {
ret = tagStore.updateTagDef(tagDef);
} catch (Exception excp) {
- LOG.error("updateTagDef(" + name + ") failed", excp);
+ LOG.error("updateTagDef(" + id + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.updateTagDef(" + name + ")");
+ LOG.debug("<== TagREST.updateTagDef(" + id + ")");
}
return ret;
}
@DELETE
- @Path(TagRESTConstants.TAG_RESOURCE + "/{name}")
+ @Path(TagRESTConstants.TAG_RESOURCE + "/{id}")
@Produces({ "application/json", "application/xml" })
//@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
- public void deleteTagDef(@PathParam("name") String name) {
+ public void deleteTagDef(@PathParam("id") Long id) {
if(LOG.isDebugEnabled()) {
- LOG.debug("==> TagREST.deleteTagDef(" + name + ")");
+ LOG.debug("==> TagREST.deleteTagDef(" + id + ")");
}
try {
//RangerTagDefValidator validator = validatorFactory.getTagDefValidator(tagStore);
//validator.validate(guid, Action.DELETE);
- tagStore.deleteTagDef(name);
+ tagStore.deleteTagDefById(id);
} catch(Exception excp) {
- LOG.error("deleteTagDef(" + name + ") failed", excp);
+ LOG.error("deleteTagDef(" + id + ") failed", excp);
throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true);
}
if(LOG.isDebugEnabled()) {
- LOG.debug("<== TagREST.deleteTagDef(" + name + ")");
+ LOG.debug("<== TagREST.deleteTagDef(" + id + ")");
}
}
@GET
@Path(TagRESTConstants.TAG_RESOURCE+"/{name}")
@Produces({ "application/json", "application/xml" })
- public RangerTagDef getTagDefByName(@PathParam("name") String name) {
+ public List<RangerTagDef> getTagDefByName(@PathParam("name") String name) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> TagREST.getTagDefByName(" + name + ")");
}
- RangerTagDef ret;
+ List<RangerTagDef> ret;
try {
ret = tagStore.getTagDef(name);
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java
index ee1b589..9ecd77e 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerBaseModelService.java
@@ -44,6 +44,7 @@ import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.XXDBBase;
import org.apache.ranger.entity.XXPortalUser;
import org.apache.ranger.plugin.model.RangerBaseModelObject;
+import org.apache.ranger.plugin.store.PList;
import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.beans.factory.annotation.Autowired;
@@ -400,7 +401,36 @@ public abstract class RangerBaseModelService<T extends XXDBBase, V extends Range
}
return resultList;
}
-
+
+ protected List<T> searchRangerObjects(SearchFilter searchCriteria, List<SearchField> searchFieldList, List<SortField> sortFieldList, PList<V> pList) {
+
+ // Get total count of the rows which meet the search criteria
+ long count = -1;
+ if (searchCriteria.isGetCount()) {
+ count = getCountForSearchQuery(searchCriteria, searchFieldList);
+ if (count == 0) {
+ return Collections.emptyList();
+ }
+ }
+
+ String sortClause = searchUtil.constructSortClause(searchCriteria, sortFieldList);
+
+ String q = queryStr;
+ Query query = createQuery(q, sortClause, searchCriteria, searchFieldList, false);
+
+ List<T> resultList = getDao().executeQueryInSecurityContext(tEntityClass, query);
+
+ if (pList != null) {
+ pList.setResultSize(resultList.size());
+ pList.setPageSize(query.getMaxResults());
+ pList.setSortBy(searchCriteria.getSortBy());
+ pList.setSortType(searchCriteria.getSortType());
+ pList.setStartIndex(query.getFirstResult());
+ pList.setTotalCount(count);
+ }
+ return resultList;
+ }
+
protected long getCountForSearchQuery(SearchFilter searchCriteria, List<SearchField> searchFieldList) {
String q = countQueryStr;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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 25fc278..9ed70b3 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,13 +19,22 @@
package org.apache.ranger.service;
+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.plugin.model.RangerTagDef;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.stereotype.Service;
@Service
public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, RangerTagDef> {
+ 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_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL));
+ }
+
@Override
protected void validateForCreate(RangerTagDef vObj) {
@@ -36,4 +45,8 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range
}
+ public RangerTagDef getPopulatedViewObjject(XXTagDef xObj) {
+ return populateViewBean(xObj);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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
index 8b2d8a9..1b4aa26 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
@@ -24,11 +24,14 @@ import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.ranger.common.GUIDUtil;
+import org.apache.ranger.common.RangerConfigUtil;
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.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.beans.factory.annotation.Autowired;
public abstract class RangerTagDefServiceBase<T extends XXTagDef, V extends RangerTagDef> extends
@@ -39,6 +42,9 @@ public abstract class RangerTagDefServiceBase<T extends XXTagDef, V extends Rang
@Autowired
RangerAuditFields<XXDBBase> rangerAuditFields;
+
+ @Autowired
+ RangerConfigUtil configUtil;
@Override
@SuppressWarnings("unchecked")
@@ -112,4 +118,21 @@ public abstract class RangerTagDefServiceBase<T extends XXTagDef, V extends Rang
xTagAttrDef.setType(attrDef.getType());
return xTagAttrDef;
}
+
+ @SuppressWarnings("unchecked")
+ public PList<RangerTagDef> searchRangerTagDefs(SearchFilter searchFilter) {
+ PList<RangerTagDef> retList = new PList<RangerTagDef>();
+ List<RangerTagDef> tagDefList = new ArrayList<RangerTagDef>();
+
+ List<XXTagDef> xTagDefList = (List<XXTagDef>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+
+ for (XXTagDef xTagDef : xTagDefList) {
+ RangerTagDef tagDef = populateViewBean((T) xTagDef);
+ tagDefList.add(tagDef);
+ }
+
+ retList.setList(tagDefList);
+
+ return retList;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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
index 67efcad..a0e7997 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceService.java
@@ -19,13 +19,21 @@
package org.apache.ranger.service;
+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.XXTaggedResource;
import org.apache.ranger.plugin.model.RangerTaggedResource;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.stereotype.Service;
@Service
public class RangerTaggedResourceService extends RangerTaggedResourceServiceBase<XXTaggedResource, RangerTaggedResource> {
+ public RangerTaggedResourceService() {
+ searchFields.add(new SearchField(SearchFilter.TAG_RESOURCE_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL));
+ }
+
@Override
protected void validateForCreate(RangerTaggedResource vObj) {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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
index c50c1fd..f673466 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTaggedResourceServiceBase.java
@@ -38,6 +38,8 @@ 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.apache.ranger.plugin.store.PList;
+import org.apache.ranger.plugin.util.SearchFilter;
import org.springframework.beans.factory.annotation.Autowired;
public abstract class RangerTaggedResourceServiceBase<T extends XXTaggedResource, V extends RangerTaggedResource> extends RangerBaseModelService<T, V> {
@@ -144,4 +146,19 @@ public abstract class RangerTaggedResourceServiceBase<T extends XXTaggedResource
return key;
}
+ @SuppressWarnings("unchecked")
+ public PList<RangerTaggedResource> searchRangerTaggedResources(SearchFilter searchFilter) {
+ PList<RangerTaggedResource> retList = new PList<RangerTaggedResource>();
+ List<RangerTaggedResource> taggedResList = new ArrayList<RangerTaggedResource>();
+
+ List<XXTaggedResource> xTaggedResList = (List<XXTaggedResource>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+
+ for (XXTaggedResource xTaggedRes : xTaggedResList) {
+ RangerTaggedResource taggedRes = populateViewBean((T) xTaggedRes);
+ taggedResList.add(taggedRes);
+ }
+ retList.setList(taggedResList);
+ return retList;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/532e2e04/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 090b70c..555dfb0 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
@@ -576,6 +576,10 @@
<named-query name="XXTag.findTagsByExternalId">
<query>select obj from XXTag obj where obj.externalId = :externalId</query>
</named-query>
+
+ <named-query name="XXTagDef.findByName">
+ <query>select obj from XXTagDef obj where obj.name = :name</query>
+ </named-query>
<!-- End <== JPA Queries for Tag Based Policies -->