Repository: incubator-ranger Updated Branches: refs/heads/tag-policy f8bea62bc -> da8327114
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/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 08a632c..ca15f98 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 @@ -148,22 +148,21 @@ public class TagDBStore extends AbstractTagStore { } @Override - public void deleteTagDef(String name) throws Exception { + public void deleteTagDefByName(String name) throws Exception { if (LOG.isDebugEnabled()) { LOG.debug("==> TagDBStore.deleteTagDef(" + name + ")"); } if (StringUtils.isNotBlank(name)) { - List<RangerTagDef> tagDefs = getTagDefsByName(name); + RangerTagDef tagDef = getTagDefByName(name); - if(CollectionUtils.isNotEmpty(tagDefs)) { - for (RangerTagDef tagDef : tagDefs) { - if(LOG.isDebugEnabled()) { - LOG.debug("Deleting tag-def [name=" + name + "; id=" + tagDef.getId() + "]"); - } - - rangerTagDefService.delete(tagDef); + if(tagDef != null) { + if(LOG.isDebugEnabled()) { + LOG.debug("Deleting tag-def [name=" + name + "; id=" + tagDef.getId() + "]"); } + + deleteTagAttributeDefs(tagDef.getId()); + rangerTagDefService.delete(tagDef); } } @@ -173,34 +172,35 @@ public class TagDBStore extends AbstractTagStore { } @Override - public void deleteTagDefById(Long id) throws Exception { + public void deleteTagDef(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.deleteTagDefById(" + id + ")"); + LOG.debug("==> TagDBStore.deleteTagDef(" + id + ")"); } if(id != null) { RangerTagDef tagDef = rangerTagDefService.read(id); if(tagDef != null) { + deleteTagAttributeDefs(tagDef.getId()); rangerTagDefService.delete(tagDef); } } if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.deleteTagDefById(" + id + ")"); + LOG.debug("<== TagDBStore.deleteTagDef(" + id + ")"); } } @Override - public RangerTagDef getTagDefById(Long id) throws Exception { + public RangerTagDef getTagDef(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getTagDefById(" + id + ")"); + LOG.debug("==> TagDBStore.getTagDef(" + id + ")"); } RangerTagDef ret = rangerTagDefService.read(id); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getTagDefById(" + id + "): " + ret); + LOG.debug("<== TagDBStore.getTagDef(" + id + "): " + ret); } return ret; @@ -222,19 +222,19 @@ public class TagDBStore extends AbstractTagStore { } @Override - public List<RangerTagDef> getTagDefsByName(String name) throws Exception { + public RangerTagDef getTagDefByName(String name) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getTagDefsByName(" + name + ")"); + LOG.debug("==> TagDBStore.getTagDefByName(" + name + ")"); } - List<RangerTagDef> ret = null; + RangerTagDef ret = null; if (StringUtils.isNotBlank(name)) { - ret = rangerTagDefService.getTagDefsByName(name); + ret = rangerTagDefService.getTagDefByName(name); } if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getTagDefsByName(" + name + "): count=" + (ret == null ? 0 : ret.size())); + LOG.debug("<== TagDBStore.getTagDefByName(" + name + "): " + ret); } return ret; @@ -279,7 +279,7 @@ public class TagDBStore extends AbstractTagStore { RangerTag ret = rangerTagService.create(tag); - createTagAttributes(ret.getId(), tag.getAttributeValues()); + createTagAttributes(ret.getId(), tag.getAttributes()); ret = rangerTagService.read(ret.getId()); @@ -299,7 +299,7 @@ public class TagDBStore extends AbstractTagStore { RangerTag existing = rangerTagService.read(tag.getId()); if (existing == null) { - throw errorUtil.createRESTException("failed to update tag [" + tag.getName() + "], Reason: No Tag found with id: [" + tag.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE); + throw errorUtil.createRESTException("failed to update tag [" + tag.getType() + "], Reason: No Tag found with id: [" + tag.getId() + "]", MessageEnums.DATA_NOT_UPDATABLE); } if (StringUtils.isEmpty(tag.getCreatedBy())) { @@ -317,7 +317,7 @@ public class TagDBStore extends AbstractTagStore { RangerTag ret = rangerTagService.update(tag); deleteTagAttributes(existing.getId()); - createTagAttributes(existing.getId(), tag.getAttributeValues()); + createTagAttributes(existing.getId(), tag.getAttributes()); ret = rangerTagService.read(ret.getId()); @@ -329,9 +329,9 @@ public class TagDBStore extends AbstractTagStore { } @Override - public void deleteTagById(Long id) throws Exception { + public void deleteTag(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.deleteTagById(" + id + ")"); + LOG.debug("==> TagDBStore.deleteTag(" + id + ")"); } RangerTag tag = rangerTagService.read(id); @@ -341,20 +341,20 @@ public class TagDBStore extends AbstractTagStore { rangerTagService.delete(tag); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.deleteTagById(" + id + ")"); + LOG.debug("<== TagDBStore.deleteTag(" + id + ")"); } } @Override - public RangerTag getTagById(Long id) throws Exception { + public RangerTag getTag(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getTagById(" + id + ")"); + LOG.debug("==> TagDBStore.getTag(" + id + ")"); } RangerTag ret = rangerTagService.read(id); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getTagById(" + id + "): " + ret); + LOG.debug("<== TagDBStore.getTag(" + id + "): " + ret); } return ret; @@ -376,19 +376,19 @@ public class TagDBStore extends AbstractTagStore { } @Override - public List<RangerTag> getTagsByName(String name) throws Exception { + public List<RangerTag> getTagsByType(String type) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getTagsByName(" + name + ")"); + LOG.debug("==> TagDBStore.getTagsByType(" + type + ")"); } List<RangerTag> ret = null; - if (StringUtils.isNotBlank(name)) { - ret = rangerTagService.getTagsByName(name); + if (StringUtils.isNotBlank(type)) { + ret = rangerTagService.getTagsByType(type); } if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getTagsByName(" + name + "): count=" + (ret == null ? 0 : ret.size())); + LOG.debug("<== TagDBStore.getTagsByType(" + type + "): count=" + (ret == null ? 0 : ret.size())); } return ret; @@ -469,10 +469,9 @@ public class TagDBStore extends AbstractTagStore { LOG.debug("==> TagDBStore.createServiceResource(" + resource + ")"); } - // TODO: update resource signature RangerServiceResource ret = rangerServiceResourceService.create(resource); - createResourceSpecForResource(ret.getId(), resource); + createResourceForServiceResource(ret.getId(), resource); ret = rangerServiceResourceService.read(ret.getId()); @@ -507,10 +506,9 @@ public class TagDBStore extends AbstractTagStore { resource.setGuid(existing.getGuid()); } - // TODO: update resource signature rangerServiceResourceService.update(resource); - deleteResourceSpecForResource(existing.getId()); - createResourceSpecForResource(existing.getId(), resource); + deleteResourceForServiceResource(existing.getId()); + createResourceForServiceResource(existing.getId(), resource); RangerServiceResource ret = rangerServiceResourceService.read(existing.getId()); @@ -522,33 +520,33 @@ public class TagDBStore extends AbstractTagStore { } @Override - public void deleteServiceResourceById(Long id) throws Exception { + public void deleteServiceResource(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.deleteServiceResourceById(" + id + ")"); + LOG.debug("==> TagDBStore.deleteServiceResource(" + id + ")"); } - RangerServiceResource resource = getServiceResourceById(id); + RangerServiceResource resource = getServiceResource(id); if(resource != null) { - deleteResourceSpecForResource(resource.getId()); + deleteResourceForServiceResource(resource.getId()); rangerServiceResourceService.delete(resource); } if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.deleteServiceResourceById(" + id + ")"); + LOG.debug("<== TagDBStore.deleteServiceResource(" + id + ")"); } } @Override - public RangerServiceResource getServiceResourceById(Long id) throws Exception { + public RangerServiceResource getServiceResource(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getServiceResourceById(" + id + ")"); + LOG.debug("==> TagDBStore.getServiceResource(" + id + ")"); } RangerServiceResource ret = rangerServiceResourceService.read(id); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getServiceResourceById(" + id + "): " + ret); + LOG.debug("<== TagDBStore.getServiceResource(" + id + "): " + ret); } return ret; @@ -570,9 +568,39 @@ public class TagDBStore extends AbstractTagStore { } @Override - public List<RangerServiceResource> getServiceResourcesByServiceAndResourceSpec(String serviceName, Map<String, RangerPolicyResource> resourceSpec) throws Exception { - // TODO Auto-generated method stub - return null; + public List<RangerServiceResource> getServiceResourcesByService(String serviceName) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceResourcesByService(" + serviceName + ")"); + } + + List<RangerServiceResource> ret = null; + + XXService service = daoManager.getXXService().findByName(serviceName); + + if (service != null) { + ret = rangerServiceResourceService.getByServiceId(service.getId()); + } + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceResourcesByService(" + serviceName + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + @Override + public RangerServiceResource getServiceResourceByResourceSignature(String resourceSignature) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getServiceResourceByResourceSignature(" + resourceSignature + ")"); + } + + RangerServiceResource ret = rangerServiceResourceService.getByResourceSignature(resourceSignature); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getServiceResourceByResourceSignature(" + resourceSignature + "): " + ret); + } + + return ret; } @Override @@ -622,9 +650,9 @@ public class TagDBStore extends AbstractTagStore { } @Override - public void deleteTagResourceMapById(Long id) throws Exception { + public void deleteTagResourceMap(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.deleteTagResourceMapById(" + id + ")"); + LOG.debug("==> TagDBStore.deleteTagResourceMap(" + id + ")"); } RangerTagResourceMap tagResourceMap = rangerTagResourceMapService.read(id); @@ -632,20 +660,35 @@ public class TagDBStore extends AbstractTagStore { rangerTagResourceMapService.delete(tagResourceMap); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.deleteTagResourceMapById(" + id + ")"); + LOG.debug("<== TagDBStore.deleteTagResourceMap(" + id + ")"); } } @Override - public RangerTagResourceMap getTagResourceMapById(Long id) throws Exception { + public RangerTagResourceMap getTagResourceMap(Long id) throws Exception { if (LOG.isDebugEnabled()) { - LOG.debug("==> TagDBStore.getTagResourceMapById(" + id + ")"); + LOG.debug("==> TagDBStore.getTagResourceMap(" + id + ")"); } RangerTagResourceMap ret = rangerTagResourceMapService.read(id); if (LOG.isDebugEnabled()) { - LOG.debug("<== TagDBStore.getTagResourceMapById(" + id + ")"); + LOG.debug("<== TagDBStore.getTagResourceMap(" + id + ")"); + } + + return ret; + } + + @Override + public RangerTagResourceMap getTagResourceMapByGuid(String guid) throws Exception { + if (LOG.isDebugEnabled()) { + LOG.debug("==> TagDBStore.getTagResourceMapByGuid(" + guid + ")"); + } + + RangerTagResourceMap ret = rangerTagResourceMapService.getByGuid(guid); + + if (LOG.isDebugEnabled()) { + LOG.debug("<== TagDBStore.getTagResourceMapByGuid(" + guid + ")"); } return ret; @@ -855,12 +898,12 @@ public class TagDBStore extends AbstractTagStore { } @Override - public List<String> getTags(String serviceName) throws Exception { + public List<String> getTagTypes(String serviceName) throws Exception { throw new Exception("Not implemented"); } @Override - public List<String> lookupTags(String serviceName, String tagNamePattern) throws Exception { + public List<String> lookupTagTypes(String serviceName, String pattern) throws Exception { throw new Exception("Not implemented"); } @@ -921,11 +964,11 @@ public class TagDBStore extends AbstractTagStore { } } - private List<XXTagAttribute> createTagAttributes(Long tagId, Map<String, String> attributeValues) { + private List<XXTagAttribute> createTagAttributes(Long tagId, Map<String, String> attributes) { List<XXTagAttribute> ret = new ArrayList<XXTagAttribute>(); - if(MapUtils.isNotEmpty(attributeValues)) { - for (Map.Entry<String, String> attr : attributeValues.entrySet()) { + if(MapUtils.isNotEmpty(attributes)) { + for (Map.Entry<String, String> attr : attributes.entrySet()) { XXTagAttribute xTagAttr = new XXTagAttribute(); xTagAttr.setTagId(tagId); @@ -950,7 +993,7 @@ public class TagDBStore extends AbstractTagStore { } } - private void deleteResourceSpecForResource(Long resourceId) { + private void deleteResourceForServiceResource(Long resourceId) { List<XXServiceResourceElement> resElements = daoManager.getXXServiceResourceElement().findByResourceId(resourceId); if(CollectionUtils.isNotEmpty(resElements)) { @@ -968,8 +1011,8 @@ public class TagDBStore extends AbstractTagStore { } } - private void createResourceSpecForResource(Long resourceId, RangerServiceResource resource) { - String serviceName = resource.getServiceName(); + private void createResourceForServiceResource(Long resourceId, RangerServiceResource serviceResource) { + String serviceName = serviceResource.getServiceName(); XXService xService = daoManager.getXXService().findByName(serviceName); @@ -983,17 +1026,17 @@ public class TagDBStore extends AbstractTagStore { throw errorUtil.createRESTException("No Service-Def found with ID: " + xService.getType(), MessageEnums.ERROR_CREATING_OBJECT); } - Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = resource.getResourceSpec(); + Map<String, RangerPolicy.RangerPolicyResource> resElements = serviceResource.getResourceElements(); - for (Map.Entry<String, RangerPolicyResource> resSpec : resourceSpec.entrySet()) { - XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resSpec.getKey(), xServiceDef.getId()); + for (Map.Entry<String, RangerPolicyResource> resElement : resElements.entrySet()) { + XXResourceDef xResDef = daoManager.getXXResourceDef().findByNameAndServiceDefId(resElement.getKey(), xServiceDef.getId()); if (xResDef == null) { - LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resSpec.getKey() + "]"); - throw errorUtil.createRESTException("Resource Type is not valid [" + resSpec.getKey() + "]", MessageEnums.DATA_NOT_FOUND); + LOG.error("TagDBStore.createResource: ResourceType is not valid [" + resElement.getKey() + "]"); + throw errorUtil.createRESTException("Resource Type is not valid [" + resElement.getKey() + "]", MessageEnums.DATA_NOT_FOUND); } - RangerPolicyResource policyRes = resSpec.getValue(); + RangerPolicyResource policyRes = resElement.getValue(); XXServiceResourceElement resourceElement = new XXServiceResourceElement(); resourceElement.setIsExcludes(policyRes.getIsExcludes()); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java index 7e29e36..8e6bb02 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java @@ -25,6 +25,7 @@ import java.util.List; import javax.persistence.NoResultException; +import org.apache.commons.lang.StringUtils; import org.apache.ranger.authorization.utils.StringUtil; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXServiceResource; @@ -59,13 +60,12 @@ public class XXServiceResourceDao extends BaseDao<XXServiceResource> { } } - public XXServiceResource findByServiceIdAndResourceSignature(Long serviceId, String resourceSignature) { - if (serviceId == null || StringUtil.isEmpty(resourceSignature)) { + public XXServiceResource findByResourceSignature(String resourceSignature) { + if (StringUtils.isBlank(resourceSignature)) { return null; } try { - return getEntityManager().createNamedQuery("XXServiceResource.findByServiceIdAndResourceSignature", tClass) - .setParameter("serviceId", serviceId) + return getEntityManager().createNamedQuery("XXServiceResource.findByResourceSignature", tClass) .setParameter("resourceSignature", resourceSignature).getSingleResult(); } catch (NoResultException e) { return null; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java index e5b5bb2..38cfc94 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java @@ -49,12 +49,12 @@ public class XXTagDao extends BaseDao<XXTag> { } @SuppressWarnings("unchecked") - public List<String> findTagNamesByServiceId(Long serviceId) { + public List<String> findTagTypesByServiceId(Long serviceId) { if (serviceId == null) { return new ArrayList<String>(); } try { - return getEntityManager().createNamedQuery("XXTag.findTagNamesByServiceId") + return getEntityManager().createNamedQuery("XXTag.findTagTypesByServiceId") .setParameter("serviceId", serviceId).getResultList(); } catch (NoResultException e) { return new ArrayList<String>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/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 f18fea8..97b53fd 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 @@ -48,16 +48,16 @@ public class XXTagDefDao extends BaseDao<XXTagDef> { } } - public List<XXTagDef> findByName(String name) { + public XXTagDef findByName(String name) { if (StringUtils.isEmpty(name)) { - return new ArrayList<XXTagDef>(); + return null; } try { return getEntityManager().createNamedQuery("XXTagDef.findByName", tClass) - .setParameter("name", name).getResultList(); + .setParameter("name", name).getSingleResult(); } catch (NoResultException e) { - return new ArrayList<XXTagDef>(); + return null; } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java index 75d04ae..0cac1ef 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagResourceMapDao.java @@ -34,6 +34,18 @@ public class XXTagResourceMapDao extends BaseDao<XXTagResourceMap> { super(daoManager); } + public XXTagResourceMap findByGuid(String resourceGuid) { + if (StringUtil.isEmpty(resourceGuid)) { + return null; + } + try { + return getEntityManager().createNamedQuery("XXTagResourceMap.findByGuid", tClass) + .setParameter("guid", resourceGuid).getSingleResult(); + } catch (NoResultException e) { + return null; + } + } + public List<XXTagResourceMap> findByResourceId(Long resourceId) { if (resourceId == null) { return new ArrayList<XXTagResourceMap>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java index 1d8493a..dd154b9 100644 --- a/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java +++ b/security-admin/src/main/java/org/apache/ranger/entity/XXTag.java @@ -49,8 +49,8 @@ public class XXTag extends XXDBBase implements Serializable { @Column(name = "guid", unique = true, nullable = false, length = 512) protected String guid; - @Column(name = "name") - protected String name; + @Column(name = "type") + protected Long type; @Override public void setId(Long id) { @@ -78,18 +78,18 @@ public class XXTag extends XXDBBase implements Serializable { } /** - * @return the name + * @return the type */ - public String getName() { - return name; + public Long getType() { + return type; } /** - * @param name - * the name to set + * @param type + * the type to set */ - public void setName(String name) { - this.name = name; + public void setType(Long type) { + this.type = type; } @Override @@ -108,7 +108,7 @@ public class XXTag extends XXDBBase implements Serializable { int result = 1; result = prime * result + ((guid == null) ? 0 : guid.hashCode()); result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); return result; } @@ -136,10 +136,10 @@ public class XXTag extends XXDBBase implements Serializable { return false; } else if (!id.equals(other.id)) return false; - if (name == null) { - if (other.name != null) + if (type == null) { + if (other.type != null) return false; - } else if (!name.equals(other.name)) + } else if (!type.equals(other.type)) return false; return true; } @@ -161,7 +161,7 @@ public class XXTag extends XXDBBase implements Serializable { sb.append(super.toString() + "} "); sb.append("id={").append(id).append("} "); sb.append("guid={").append(guid).append("} "); - sb.append("name={").append(name).append("} "); + sb.append("type={").append(type).append("} "); sb.append(" }"); return sb; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/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 b06f5cc..c0241b2 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 @@ -102,7 +102,7 @@ public class TagREST { } @PUT - @Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}") + @Path(TagRESTConstants.TAGDEF_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") public RangerTagDef updateTagDef(@PathParam("id") Long id, RangerTagDef tagDef) { @@ -132,7 +132,7 @@ public class TagREST { } @DELETE - @Path(TagRESTConstants.TAGDEF_RESOURCE + "/{id}") + @Path(TagRESTConstants.TAGDEF_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") public void deleteTagDef(@PathParam("id") Long id) { @@ -141,7 +141,7 @@ public class TagREST { } try { - tagStore.deleteTagDefById(id); + tagStore.deleteTagDef(id); } catch(Exception excp) { LOG.error("deleteTagDef(" + id + ") failed", excp); @@ -153,19 +153,102 @@ public class TagREST { } } + @DELETE + @Path(TagRESTConstants.TAGDEF_RESOURCE + "guid/{guid}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public void deleteTagDefByGuid(@PathParam("guid") String guid) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.deleteTagDefByGuid(" + guid + ")"); + } + + try { + RangerTagDef exist = tagStore.getTagDefByGuid(guid); + tagStore.deleteTagDef(exist.getId()); + } catch(Exception excp) { + LOG.error("deleteTagDef(" + guid + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.deleteTagDefByGuid(" + guid + ")"); + } + } + + @GET + @Path(TagRESTConstants.TAGDEF_RESOURCE + "{id}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public RangerTagDef getTagDef(@PathParam("id") Long id) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagDef(" + id + ")"); + } + + RangerTagDef ret; + + try { + ret = tagStore.getTagDef(id); + } catch(Exception excp) { + LOG.error("getTagDef(" + id + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(ret == null) { + throw restErrorUtil.createRESTException(HttpServletResponse.SC_NOT_FOUND, "Not found", true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getTagDef(" + id + "): " + ret); + } + + return ret; + } + + @GET + @Path(TagRESTConstants.TAGDEF_RESOURCE + "guid/{guid}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public RangerTagDef getTagDefByGuid(@PathParam("guid") String guid) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagDefByGuid(" + guid + ")"); + } + + RangerTagDef ret; + + try { + ret = tagStore.getTagDefByGuid(guid); + } catch(Exception excp) { + LOG.error("getTagDefByGuid(" + guid + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(ret == null) { + throw restErrorUtil.createRESTException(HttpServletResponse.SC_NOT_FOUND, "Not found", true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getTagDefByGuid(" + guid + "): " + ret); + } + + return ret; + } + @GET - @Path(TagRESTConstants.TAGDEF_RESOURCE+"/{name}") + @Path(TagRESTConstants.TAGDEF_RESOURCE + "name/{name}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public List<RangerTagDef> getTagDefByName(@PathParam("name") String name) { + public RangerTagDef getTagDefByName(@PathParam("name") String name) { if(LOG.isDebugEnabled()) { LOG.debug("==> TagREST.getTagDefByName(" + name + ")"); } - List<RangerTagDef> ret; + RangerTagDef ret; try { - ret = tagStore.getTagDefsByName(name); + ret = tagStore.getTagDefByName(name); } catch(Exception excp) { LOG.error("getTagDefByName(" + name + ") failed", excp); @@ -187,9 +270,9 @@ public class TagREST { @Path(TagRESTConstants.TAGDEFS_RESOURCE) @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public List<RangerTagDef> getTagDefs() { + public List<RangerTagDef> getAllTagDefs() { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getTagDefs()"); + LOG.debug("==> TagREST.getAllTagDefs()"); } List<RangerTagDef> ret; @@ -197,7 +280,7 @@ public class TagREST { try { ret = tagStore.getTagDefs(new SearchFilter()); } catch(Exception excp) { - LOG.error("getTagDefByName() failed", excp); + LOG.error("getAllTagDefs() failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } @@ -207,7 +290,7 @@ public class TagREST { } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getTagDefs()"); + LOG.debug("<== TagREST.getAllTagDefs()"); } return ret; @@ -244,19 +327,19 @@ public class TagREST { @Path(TagRESTConstants.TAG_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerTag updateTagById(@PathParam("id") Long id, RangerTag tag) { + public RangerTag updateTag(@PathParam("id") Long id, RangerTag tag) { RangerTag ret; try { - validator.preUpdateTagById(id, tag); + validator.preUpdateTag(id, tag); ret = tagStore.updateTag(tag); } catch (Exception excp) { - LOG.error("updateTag() failed", excp); + LOG.error("updateTag(" + id + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.updateTag(): " + ret); + LOG.debug("<== TagREST.updateTag(" + id + "): " + ret); } return ret; @@ -288,51 +371,25 @@ public class TagREST { return ret; } - @PUT - @Path(TagRESTConstants.TAG_RESOURCE + "name/{name}") - @Produces({ "application/json", "application/xml" }) - @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerTag updateTagByName(@PathParam("name") String name, RangerTag tag) { - - if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.updateTagByName(" + name + ")"); - } - - RangerTag ret; - - try { - validator.preUpdateTagByName(name, tag); - ret = tagStore.updateTag(tag); - } catch (Exception excp) { - LOG.error("updateTagByName(" + name + ") failed", excp); - throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); - } - if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.updateTagByName(" + name + "): " + ret); - } - - return ret; - } - @DELETE @Path(TagRESTConstants.TAG_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public void deleteTagById(@PathParam("id") Long id) { + public void deleteTag(@PathParam("id") Long id) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.deleteTagById(" + id +")"); + LOG.debug("==> TagREST.deleteTag(" + id +")"); } try { - validator.preDeleteTagById(id); - tagStore.deleteTagById(id); + validator.preDeleteTag(id); + tagStore.deleteTag(id); } catch(Exception excp) { - LOG.error("deleteTag() failed", excp); + LOG.error("deleteTag(" + id + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.deleteTag()"); + LOG.debug("<== TagREST.deleteTag(" + id + ")"); } } @@ -347,7 +404,7 @@ public class TagREST { try { RangerTag exist = validator.preDeleteTagByGuid(guid); - tagStore.deleteTagById(exist.getId()); + tagStore.deleteTag(exist.getId()); } catch(Exception excp) { LOG.error("deleteTagByGuid(" + guid + ") failed", excp); @@ -359,56 +416,33 @@ public class TagREST { } } - @DELETE - @Path(TagRESTConstants.TAG_RESOURCE + "name/{name}") - @Produces({ "application/json", "application/xml" }) - @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public void deleteTagByName(@PathParam("name") String name) { - if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.deleteTagByName(" + name + ")"); - } - - try { - RangerTag exist = validator.preDeleteTagByName(name); - tagStore.deleteTagById(exist.getId()); - } catch(Exception excp) { - LOG.error("deleteTagByName(" + name + ") failed", excp); - - throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); - } - - if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.deleteTagByName(" + name + ")"); - } - } - @GET - @Path(TagRESTConstants.TAGS_RESOURCE + "{id}") + @Path(TagRESTConstants.TAG_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerTag getTagById(@PathParam("id") Long id) { + public RangerTag getTag(@PathParam("id") Long id) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getTagById(" + id + ")"); + LOG.debug("==> TagREST.getTag(" + id + ")"); } RangerTag ret; try { - ret = tagStore.getTagById(id); + ret = tagStore.getTag(id); } catch(Exception excp) { - LOG.error("getTagById(" + id + ") failed", excp); + LOG.error("getTag(" + id + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getTagById(" + id + "): " + ret); + LOG.debug("<== TagREST.getTag(" + id + "): " + ret); } return ret; } @GET - @Path(TagRESTConstants.TAGS_RESOURCE + "guid/{guid}") + @Path(TagRESTConstants.TAG_RESOURCE + "guid/{guid}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") public RangerTag getTagByGuid(@PathParam("guid") String guid) { @@ -433,25 +467,25 @@ public class TagREST { } @GET - @Path(TagRESTConstants.TAGS_RESOURCE + "name/{name}") + @Path(TagRESTConstants.TAGS_RESOURCE + "type/{type}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public List<RangerTag> getTagsByName(@PathParam("name") String name) { + public List<RangerTag> getTagsByType(@PathParam("type") String type) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getTagsByName(" + name + ")"); + LOG.debug("==> TagREST.getTagsByType(" + type + ")"); } List<RangerTag> ret; try { - ret = tagStore.getTagsByName(name); + ret = tagStore.getTagsByType(type); } catch(Exception excp) { - LOG.error("getTagsByName(" + name + ") failed", excp); + LOG.error("getTagsByType(" + type + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getTagsByName(" + name + "): " + ret); + LOG.debug("<== TagREST.getTagsByType(" + type + "): " + ret); } return ret; @@ -519,23 +553,23 @@ public class TagREST { @Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerServiceResource updateServiceResourceById(@PathParam("id") Long id, RangerServiceResource resource) { + public RangerServiceResource updateServiceResource(@PathParam("id") Long id, RangerServiceResource resource) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.updateServiceResourceById(" + id + ")"); + LOG.debug("==> TagREST.updateServiceResource(" + id + ")"); } RangerServiceResource ret; try { - validator.preUpdateServiceResourceById(id, resource); + validator.preUpdateServiceResource(id, resource); ret = tagStore.updateServiceResource(resource); } catch(Exception excp) { - LOG.error("updateServiceResourceById(" + resource + ") failed", excp); + LOG.error("updateServiceResource(" + resource + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.updateServiceResourceById(" + id + "): " + ret); + LOG.debug("<== TagREST.updateServiceResource(" + id + "): " + ret); } return ret; } @@ -567,21 +601,21 @@ public class TagREST { @Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public void deleteServiceResourceById(@PathParam("id") Long id) { + public void deleteServiceResource(@PathParam("id") Long id) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.deleteServiceResourceById(" + id + ")"); + LOG.debug("==> TagREST.deleteServiceResource(" + id + ")"); } try { - validator.preDeleteServiceResourceById(id); - tagStore.deleteServiceResourceById(id); + validator.preDeleteServiceResource(id); + tagStore.deleteServiceResource(id); } catch (Exception excp) { - LOG.error("deleteServiceResourceById() failed", excp); + LOG.error("deleteServiceResource() failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.deleteServiceResourceById(" + id + ")"); + LOG.debug("<== TagREST.deleteServiceResource(" + id + ")"); } } @@ -596,7 +630,7 @@ public class TagREST { try { RangerServiceResource exist = validator.preDeleteServiceResourceByGuid(guid); - tagStore.deleteServiceResourceById(exist.getId()); + tagStore.deleteServiceResource(exist.getId()); } catch(Exception excp) { LOG.error("deleteServiceResourceByGuid(" + guid + ") failed", excp); @@ -609,29 +643,29 @@ public class TagREST { } @GET - @Path(TagRESTConstants.RESOURCES_RESOURCE + "{id}") + @Path(TagRESTConstants.RESOURCE_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerServiceResource getServiceResourceById(@PathParam("id") Long id) { + public RangerServiceResource getServiceResource(@PathParam("id") Long id) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getServiceResourceById(" + id + ")"); + LOG.debug("==> TagREST.getServiceResource(" + id + ")"); } RangerServiceResource ret; try { - ret = tagStore.getServiceResourceById(id); + ret = tagStore.getServiceResource(id); } catch(Exception excp) { - LOG.error("getServiceResourceById(" + id + ") failed", excp); + LOG.error("getServiceResource(" + id + ") failed", excp); throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getServiceResourceById(" + id + "): " + ret); + LOG.debug("<== TagREST.getServiceResource(" + id + "): " + ret); } return ret; } @GET - @Path(TagRESTConstants.RESOURCES_RESOURCE + "guid/{guid}") + @Path(TagRESTConstants.RESOURCE_RESOURCE + "guid/{guid}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") public RangerServiceResource getServiceResourceByGuid(@PathParam("guid") String guid) { @@ -652,11 +686,94 @@ public class TagREST { return ret; } + @GET + @Path(TagRESTConstants.RESOURCES_RESOURCE + "service/{serviceName}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public List<RangerServiceResource> getServiceResourcesByService(@PathParam("serviceName") String serviceName) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getServiceResourcesByService(" + serviceName + ")"); + } + + List<RangerServiceResource> ret = null; + + try { + ret = tagStore.getServiceResourcesByService(serviceName); + } catch(Exception excp) { + LOG.error("getServiceResourcesByService(" + serviceName + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if (CollectionUtils.isEmpty(ret)) { + if (LOG.isDebugEnabled()) { + LOG.debug("getServiceResourcesByService(" + serviceName + ") - No service-resources found"); + } + } + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getServiceResourcesByService(" + serviceName + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + @GET + @Path(TagRESTConstants.RESOURCE_RESOURCE + "signature/{resourceSignature}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public RangerServiceResource getServiceResourceByResourceSignature(@PathParam("resourceSignature") String resourceSignature) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getServiceResourceByResourceSignature(" + resourceSignature + ")"); + } + + RangerServiceResource ret = null; + + try { + ret = tagStore.getServiceResourceByResourceSignature(resourceSignature); + } catch(Exception excp) { + LOG.error("getServiceResourceByResourceSignature(" + resourceSignature + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getServiceResourceByResourceSignature(" + resourceSignature + "): " + ret); + } + + return ret; + } + + @GET + @Path(TagRESTConstants.RESOURCES_RESOURCE) + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public List<RangerServiceResource> getAllServiceResources() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getAllServiceResources()"); + } + + List<RangerServiceResource> ret; + + try { + ret = tagStore.getServiceResources(new SearchFilter()); + } catch(Exception excp) { + LOG.error("getAllServiceResources() failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getAllServiceResources(): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + @POST @Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE) @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public RangerTagResourceMap createTagResourceMap(@QueryParam("tagGuid") String tagGuid, @QueryParam("resourceGuid") String resourceGuid) { + public RangerTagResourceMap createTagResourceMap(@QueryParam("tag-guid") String tagGuid, @QueryParam("resource-guid") String resourceGuid) { if(LOG.isDebugEnabled()) { LOG.debug("==> TagREST.createTagResourceMap(" + tagGuid + ", " + resourceGuid + ")"); } @@ -680,17 +797,62 @@ public class TagREST { } @DELETE + @Path(TagRESTConstants.TAGRESOURCEMAP_RESOURCE + "{id}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public void deleteTagResourceMap(@PathParam("id") Long id) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.deleteTagResourceMap(" + id + ")"); + } + try { + validator.preDeleteTagResourceMap(id); + tagStore.deleteTagResourceMap(id); + } catch (Exception excp) { + LOG.error("deleteTagResourceMap() failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.deleteTagResourceMap(" + id + ")"); + } + } + + @DELETE + @Path(TagRESTConstants.TAGRESOURCEMAP_RESOURCE + "guid/{guid}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public void deleteTagResourceMapByGuid(@PathParam("guid") String guid) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.deleteTagResourceMapByGuid(" + guid + ")"); + } + + try { + RangerTagResourceMap exist = validator.preDeleteTagResourceMapByGuid(guid); + tagStore.deleteServiceResource(exist.getId()); + } catch(Exception excp) { + LOG.error("deleteTagResourceMapByGuid(" + guid + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.deleteTagResourceMapByGuid(" + guid + ")"); + } + } + + @DELETE @Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE) @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public void deleteTagResourceMap(@QueryParam("tagGuid") String tagGuid, @QueryParam("resourceGuid") String resourceGuid) { + public void deleteTagResourceMap(@QueryParam("tag-guid") String tagGuid, @QueryParam("resource-guid") String resourceGuid) { if(LOG.isDebugEnabled()) { LOG.debug("==> TagREST.deleteTagResourceMap(" + tagGuid + ", " + resourceGuid + ")"); } try { RangerTagResourceMap exist = validator.preDeleteTagResourceMap(tagGuid, resourceGuid); - tagStore.deleteTagResourceMapById(exist.getId()); + tagStore.deleteTagResourceMap(exist.getId()); } catch(Exception excp) { LOG.error("deleteTagResourceMap(" + tagGuid + ", " + resourceGuid + ") failed", excp); @@ -702,34 +864,115 @@ public class TagREST { } } - /* - This leads to a WARNING in catalina.out - - WARNING: The following warnings have been detected with resource and/or provider classes: - WARNING: A HTTP GET method, public java.util.List org.apache.ranger.rest.TagREST.getServiceResources(org.apache.ranger.plugin.model.RangerServiceResource) throws java.lang.Exception, should not consume any entity. - Hence commented out.. - */ - /* @GET - @Path(TagRESTConstants.RESOURCES_RESOURCE) + @Path(TagRESTConstants.TAGRESOURCEMAP_RESOURCE + "{id}") @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public List<RangerServiceResource> getServiceResources(RangerServiceResource resource) throws Exception { + public RangerTagResourceMap getTagResourceMap(@PathParam("id") Long id) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagResourceMap(" + id + ")"); + } + RangerTagResourceMap ret; - List<RangerServiceResource> ret = null; + try { + ret = tagStore.getTagResourceMap(id); + } catch(Exception excp) { + LOG.error("getTagResourceMap(" + id + ") failed", excp); - if (LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getServiceResources(" + resource + ")"); + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); } - ret = tagStore.getServiceResourcesByServiceAndResourceSpec(resource.getServiceName(), resource.getResourceSpec()); - if (LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getServiceResources(" + resource + ")"); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getTagResourceMap(" + id + "): " + ret); } + return ret; } - */ - // This API is typically used by plug-in to get selected tagged resources from RangerAdmin + @GET + @Path(TagRESTConstants.TAGRESOURCEMAP_RESOURCE + "guid/{guid}") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public RangerTagResourceMap getTagResourceMapByGuid(@PathParam("guid") String guid) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagResourceMapByGuid(" + guid + ")"); + } + RangerTagResourceMap ret; + + try { + ret = tagStore.getTagResourceMapByGuid(guid); + } catch(Exception excp) { + LOG.error("getTagResourceMapByGuid(" + guid + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getTagResourceMapByGuid(" + guid + "): " + ret); + } + + return ret; + } + + @GET + @Path(TagRESTConstants.TAGRESOURCEMAP_RESOURCE + "tag-resource-guid") + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public RangerTagResourceMap getTagResourceMap(@QueryParam("tagGuid") String tagGuid, @QueryParam("resourceGuid") String resourceGuid) { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagResourceMap(" + tagGuid + ", " + resourceGuid + ")"); + } + + RangerTagResourceMap ret = null; + + try { + ret = tagStore.getTagResourceMapForTagAndResourceGuid(tagGuid, resourceGuid); + } catch(Exception excp) { + LOG.error("getTagResourceMap(" + tagGuid + ", " + resourceGuid + ") failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getTagResourceMap(" + tagGuid + ", " + resourceGuid + ")"); + } + + return ret; + } + + @GET + @Path(TagRESTConstants.TAGRESOURCEMAPS_RESOURCE) + @Produces({ "application/json", "application/xml" }) + @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") + public List<RangerTagResourceMap> getAllTagResourceMaps() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> TagREST.getAllTagResourceMaps()"); + } + + List<RangerTagResourceMap> ret; + + try { + ret = tagStore.getTagResourceMaps(new SearchFilter()); + } catch(Exception excp) { + LOG.error("getAllTagResourceMaps() failed", excp); + + throw restErrorUtil.createRESTException(HttpServletResponse.SC_BAD_REQUEST, excp.getMessage(), true); + } + if (CollectionUtils.isEmpty(ret)) { + if (LOG.isDebugEnabled()) { + LOG.debug("getAllTagResourceMaps() - No tag-resource-maps found"); + } + } + if(LOG.isDebugEnabled()) { + LOG.debug("<== TagREST.getAllTagResourceMaps(): " + ret); + } + + return ret; + } + + + // This API is typically used by plug-in to get selected tagged resources from RangerAdmin @GET @Path(TagRESTConstants.TAGS_DOWNLOAD + "{serviceName}") @Produces({ "application/json", "application/xml" }) @@ -759,18 +1002,18 @@ public class TagREST { // This API is typically used by GUI to get all available tags from RangerAdmin @GET - @Path(TagRESTConstants.TAGNAMES_RESOURCE) + @Path(TagRESTConstants.TAGTYPES_RESOURCE) @Produces({ "application/json", "application/xml" }) @PreAuthorize("hasRole('ROLE_SYS_ADMIN')") - public List<String> getTagNames(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String serviceName) { + public List<String> getTagTypes(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String serviceName) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.getTagNames(" + serviceName + ")"); + LOG.debug("==> TagREST.getTagTypes(" + serviceName + ")"); } - List<String> tagNames = null; + List<String> tagTypes = null; try { - tagNames = tagStore.getTags(serviceName); + tagTypes = tagStore.getTagTypes(serviceName); } catch(Exception excp) { LOG.error("getTags(" + serviceName + ") failed", excp); @@ -778,26 +1021,26 @@ public class TagREST { } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.getTagNames(" + serviceName + ")"); + LOG.debug("<== TagREST.getTagTypes(" + serviceName + ")"); } - return tagNames; + return tagTypes; } // This API is typically used by GUI to help lookup available tags from RangerAdmin to help tag-policy writer. It // may also be used to validate configuration parameters of a tag-service @GET - @Path(TagRESTConstants.LOOKUP_TAGS_RESOURCE) + @Path(TagRESTConstants.TAGTYPES_LOOKUP_RESOURCE) @Produces({ "application/json", "application/xml" }) - public List<String> lookupTags(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String serviceName, - @DefaultValue(".*") @QueryParam(TagRESTConstants.PATTERN_PARAM) String tagNamePattern) { + public List<String> lookupTagTypes(@QueryParam(TagRESTConstants.SERVICE_NAME_PARAM) String serviceName, + @DefaultValue(".*") @QueryParam(TagRESTConstants.PATTERN_PARAM) String pattern) { if(LOG.isDebugEnabled()) { - LOG.debug("==> TagREST.lookupTags(" + serviceName + ", " + tagNamePattern + ")"); + LOG.debug("==> TagREST.lookupTagTypes(" + serviceName + ", " + pattern + ")"); } - List<String> matchingTagNames = null; + List<String> matchingTagTypes = null; try { - matchingTagNames = tagStore.lookupTags(serviceName, tagNamePattern); + matchingTagTypes = tagStore.lookupTagTypes(serviceName, pattern); } catch(Exception excp) { LOG.error("lookupTags(" + serviceName + ") failed", excp); @@ -805,9 +1048,9 @@ public class TagREST { } if(LOG.isDebugEnabled()) { - LOG.debug("<== TagREST.lookupTags(" + serviceName + ")"); + LOG.debug("<== TagREST.lookupTagTypes(" + serviceName + ")"); } - return matchingTagNames; + return matchingTagTypes; } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java index 91525df..977e487 100644 --- a/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java +++ b/security-admin/src/main/java/org/apache/ranger/rest/TagRESTConstants.java @@ -29,8 +29,9 @@ public class TagRESTConstants { static final String RESOURCES_RESOURCE = "/resources/"; static final String RESOURCE_RESOURCE = "/resource/"; static final String TAGRESOURCEMAPS_RESOURCE = "/tagresourcemaps/"; - static final String TAGNAMES_RESOURCE = "/names/"; - static final String LOOKUP_TAGS_RESOURCE = "/lookup/"; + static final String TAGRESOURCEMAP_RESOURCE = "/tagresourcemap/"; + static final String TAGTYPES_RESOURCE = "/types/"; + static final String TAGTYPES_LOOKUP_RESOURCE = "/types/lookup/"; static final String TAGS_DOWNLOAD = "/download/"; public static final String SERVICE_NAME_PARAM = "serviceName"; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java index a81b981..ffbae18 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java @@ -75,10 +75,26 @@ public class RangerServiceResourceService extends RangerServiceResourceServiceBa return ret; } - public RangerServiceResource getServiceResourceByServiceIdAndResourceSignature(Long serviceId, String resourceSignature) { + public List<RangerServiceResource> getByServiceId(Long serviceId) { + List<RangerServiceResource> ret = new ArrayList<RangerServiceResource>(); + + List<XXServiceResource> xxServiceResources = daoMgr.getXXServiceResource().findByServiceId(serviceId); + + if(CollectionUtils.isNotEmpty(xxServiceResources)) { + for(XXServiceResource xxServiceResource : xxServiceResources) { + RangerServiceResource serviceResource = populateViewBean(xxServiceResource); + + ret.add(serviceResource); + } + } + + return ret; + } + + public RangerServiceResource getByResourceSignature(String resourceSignature) { RangerServiceResource ret = null; - XXServiceResource xxServiceResource = daoMgr.getXXServiceResource().findByServiceIdAndResourceSignature(serviceId, resourceSignature); + XXServiceResource xxServiceResource = daoMgr.getXXServiceResource().findByResourceSignature(resourceSignature); if(xxServiceResource != null) { ret = populateViewBean(xxServiceResource); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java index 1510ffa..c421be0 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java @@ -76,7 +76,7 @@ public abstract class RangerServiceResourceServiceBase<T extends XXServiceResour vObj.setServiceName(xService.getName()); List<XXServiceResourceElement> resElementList = daoMgr.getXXServiceResourceElement().findByResourceId(xObj.getId()); - Map<String, RangerPolicy.RangerPolicyResource> resourceSpec = new HashMap<String, RangerPolicy.RangerPolicyResource>(); + Map<String, RangerPolicy.RangerPolicyResource> resourceElements = new HashMap<String, RangerPolicy.RangerPolicyResource>(); for (XXServiceResourceElement resElement : resElementList) { List<String> resValueMapList = daoMgr.getXXServiceResourceElementValue().findValuesByResElementId(resElement.getId()); @@ -88,10 +88,10 @@ public abstract class RangerServiceResourceServiceBase<T extends XXServiceResour policyRes.setIsRecursive(resElement.getIsRecursive()); policyRes.setValues(resValueMapList); - resourceSpec.put(xResDef.getName(), policyRes); + resourceElements.put(xResDef.getName(), policyRes); } - vObj.setResourceSpec(resourceSpec); + vObj.setResourceElements(resourceElements); return vObj; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/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 462b781..b049f71 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 @@ -27,9 +27,7 @@ import org.apache.ranger.common.SearchField; import org.apache.ranger.common.SearchField.DATA_TYPE; import org.apache.ranger.common.SearchField.SEARCH_TYPE; import org.apache.ranger.entity.XXTagDef; -import org.apache.ranger.entity.XXTagResourceMap; import org.apache.ranger.plugin.model.RangerTagDef; -import org.apache.ranger.plugin.model.RangerTagResourceMap; import org.apache.ranger.plugin.util.SearchFilter; import org.springframework.stereotype.Service; @@ -39,7 +37,7 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range public RangerTagDefService() { searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, "obj.id", DATA_TYPE.INTEGER, SEARCH_TYPE.FULL)); searchFields.add(new SearchField(SearchFilter.TAG_DEF_GUID, "obj.guid", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.TAG_DEF_NAME, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.TAG_TYPE, "obj.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL)); } @Override @@ -77,17 +75,13 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range return ret; } - public List<RangerTagDef> getTagDefsByName(String name) { - List<RangerTagDef> ret = new ArrayList<RangerTagDef>(); + public RangerTagDef getTagDefByName(String name) { + RangerTagDef ret = null; - List<XXTagDef> xxTagDefs = daoMgr.getXXTagDef().findByName(name); + XXTagDef xxTagDef = daoMgr.getXXTagDef().findByName(name); - if(CollectionUtils.isNotEmpty(xxTagDefs)) { - for(XXTagDef xxTagDef : xxTagDefs) { - RangerTagDef tagDef = populateViewBean(xxTagDef); - - ret.add(tagDef); - } + if(xxTagDef != null) { + ret = populateViewBean(xxTagDef); } return ret; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java index 6894e4e..d50a937 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java @@ -148,6 +148,18 @@ public class RangerTagResourceMapService extends RangerTagResourceMapServiceBase return ret; } + public RangerTagResourceMap getByGuid(String guid) { + RangerTagResourceMap ret = null; + + XXTagResourceMap xxTagResourceMap = daoMgr.getXXTagResourceMap().findByGuid(guid); + + if(xxTagResourceMap != null) { + ret = populateViewBean(xxTagResourceMap); + } + + return ret; + } + public RangerTagResourceMap getByTagAndResourceId(Long tagId, Long resourceId) { RangerTagResourceMap ret = null; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java index 3d7ea24..cab6a4a 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java @@ -5,10 +5,10 @@ import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.ranger.common.SearchField; +import org.apache.ranger.common.SearchField.DATA_TYPE; +import org.apache.ranger.common.SearchField.SEARCH_TYPE; import org.apache.ranger.entity.XXTag; -import org.apache.ranger.entity.XXTagDef; import org.apache.ranger.plugin.model.RangerTag; -import org.apache.ranger.plugin.model.RangerTagDef; import org.apache.ranger.plugin.util.SearchFilter; import org.springframework.stereotype.Service; @@ -18,7 +18,8 @@ public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> { public RangerTagService() { searchFields.add(new SearchField(SearchFilter.TAG_ID, "obj.id", SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL)); - searchFields.add(new SearchField(SearchFilter.TAG_NAME, "obj.name", SearchField.DATA_TYPE.STRING, SearchField.SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.TAG_DEF_ID, "obj.type", SearchField.DATA_TYPE.INTEGER, SearchField.SEARCH_TYPE.FULL)); + searchFields.add(new SearchField(SearchFilter.TAG_TYPE, "tagDef.name", DATA_TYPE.STRING, SEARCH_TYPE.FULL, "XXTagDef tagDef", "obj.type = tagDef.id")); } @Override @@ -56,7 +57,7 @@ public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> { return ret; } - public List<RangerTag> getTagsByName(String name) { + public List<RangerTag> getTagsByType(String name) { List<RangerTag> ret = new ArrayList<RangerTag>(); List<XXTag> xxTags = daoMgr.getXXTag().findByName(name); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java index 359e7ae..25c4853 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java @@ -27,10 +27,12 @@ import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.ranger.common.GUIDUtil; +import org.apache.ranger.common.MessageEnums; import org.apache.ranger.common.RangerConfigUtil; import org.apache.ranger.entity.XXDBBase; import org.apache.ranger.entity.XXTagAttribute; import org.apache.ranger.entity.XXTag; +import org.apache.ranger.entity.XXTagDef; import org.apache.ranger.plugin.model.RangerTag; import org.apache.ranger.plugin.store.PList; import org.apache.ranger.plugin.util.SearchFilter; @@ -53,25 +55,38 @@ public abstract class RangerTagServiceBase<T extends XXTag, V extends RangerTag> protected XXTag mapViewToEntityBean(RangerTag vObj, XXTag xObj, int OPERATION_CONTEXT) { String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid(); + XXTagDef xTagDef = daoMgr.getXXTagDef().findByName(vObj.getType()); + if(xTagDef == null) { + throw restErrorUtil.createRESTException( + "No TagDefinition found with name :" + vObj.getType(), + MessageEnums.INVALID_INPUT_DATA); + } + xObj.setGuid(guid); - xObj.setName(vObj.getName()); + xObj.setType(xTagDef.getId()); return xObj; } @Override @SuppressWarnings("unchecked") protected RangerTag mapEntityToViewBean(RangerTag vObj, XXTag xObj) { + XXTagDef xTagDef = daoMgr.getXXTagDef().getById(xObj.getType()); + if(xTagDef == null) { + throw restErrorUtil.createRESTException( + "No TagDefinition found with name :" + xObj.getType(), + MessageEnums.INVALID_INPUT_DATA); + } vObj.setGuid(xObj.getGuid()); - vObj.setName(xObj.getName()); + vObj.setType(xTagDef.getName()); - Map<String, String> attributeValues = getAttributeValuesForTag(xObj); - vObj.setAttributeValues(attributeValues); + Map<String, String> attributes = getAttributesForTag(xObj); + vObj.setAttributes(attributes); return vObj; } - public Map<String, String> getAttributeValuesForTag(XXTag xtag) { + public Map<String, String> getAttributesForTag(XXTag xtag) { List<XXTagAttribute> tagAttrList = daoMgr.getXXTagAttribute().findByTagId(xtag.getId()); Map<String, String> ret = new HashMap<String, String>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/da832711/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 a05e0bd..f3fe4c4 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 @@ -547,6 +547,10 @@ <query>select obj.value from XXServiceResourceElementValue obj where obj.resElementId = :resElementId</query> </named-query> + <named-query name="XXTagResourceMap.findByGuid"> + <query>select obj from XXTagResourceMap obj where obj.guid = :guid</query> + </named-query> + <named-query name="XXTagResourceMap.findByResourceId"> <query>select obj from XXTagResourceMap obj where obj.resourceId = :resourceId</query> </named-query> @@ -586,14 +590,14 @@ </named-query> <named-query name="XXTagDef.findByServiceId"> - <query>select obj from XXTagDef obj where obj.name in - (select tag.name from XXTag tag, XXTagResourceMap tagRes, XXServiceResource resource where tag.id = tagRes.tagId and tagRes.resourceId = resource.id and resource.serviceId = :serviceId)</query> + <query>select obj from XXTagDef obj where obj.id in + (select tag.type from XXTag tag, XXTagResourceMap tagRes, XXServiceResource resource where tag.id = tagRes.tagId and tagRes.resourceId = resource.id and resource.serviceId = :serviceId)</query> </named-query> <named-query name="XXTagDef.updateTagVersionInService"> <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime - where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag, XXTagDef tagDef - where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.name = tagDef.name and tagDef.id = :tagDefId)</query> + where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag + where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.type = :tagDefId)</query> </named-query> <named-query name="XXTagAttributeDef.findByTagDefId"> @@ -606,7 +610,7 @@ </named-query> <named-query name="XXTag.findByName"> - <query>select obj from XXTag obj where obj.name = :name</query> + <query>select obj from XXTag obj, XXTagDef tagDef where obj.type = tagDef.id and tagDef.name = :name</query> </named-query> <named-query name="XXTag.findByResourceId"> @@ -617,9 +621,9 @@ <query>select obj from XXTag obj, XXTagResourceMap tagRes, XXServiceResource res where res.guid = :resourceGuid and res.id = tagRes.resourceId and tagRes.tagId = obj.id</query> </named-query> - <named-query name="XXTag.findTagNamesByServiceId"> - <query>select obj.name from XXTag obj, XXServiceResource tRes, XXTagResourceMap tResMap where - tRes.serviceId = :serviceId and obj.id = tResMap.tagId and tRes.id = tResMap.resourceId </query> + <named-query name="XXTag.findTagTypesByServiceId"> + <query>select obj.name from XXTagDef obj, XXTag tag, XXServiceResource resource, XXTagResourceMap tagRes + where obj.id = tag.type and tag.id = tagRes.tagId and tagRes.resourceId = resource.id and resource.serviceId = :serviceId</query> </named-query> <named-query name="XXTag.findByServiceId"> @@ -651,8 +655,8 @@ (select tagResMap.resourceId from XXTagResourceMap tagResMap)</query> </named-query> - <named-query name="XXServiceResource.findByServiceIdAndResourceSignature"> - <query>select obj from XXServiceResource obj where obj.serviceId = :serviceId and obj.resourceSignature = :resourceSignature</query> + <named-query name="XXServiceResource.findByResourceSignature"> + <query>select obj from XXServiceResource obj where obj.resourceSignature = :resourceSignature</query> </named-query> <named-query name="XXServiceResource.updateTagVersionInService">
