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 <[email protected]> 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 <[email protected]> Authored: Fri Aug 14 17:30:03 2015 +0530 Committer: Madhan Neethiraj <[email protected]> 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 -->
