Repository: ambari Updated Branches: refs/heads/trunk 696c708b9 -> 892ea706b
AMBARI-6776. Add default permissions to view API. Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/892ea706 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/892ea706 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/892ea706 Branch: refs/heads/trunk Commit: 892ea706b87e21fa911536d05bec458cc5488e20 Parents: 696c708 Author: Siddharth Wagle <[email protected]> Authored: Thu Aug 7 10:28:50 2014 -0700 Committer: Siddharth Wagle <[email protected]> Committed: Thu Aug 7 10:28:50 2014 -0700 ---------------------------------------------------------------------- .../ViewPermissionResourceProvider.java | 20 +++++++++++---- .../ambari/server/orm/dao/PermissionDAO.java | 27 +++++++++++++++++++- .../server/orm/entities/ResourceTypeEntity.java | 6 +++++ 3 files changed, 47 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/892ea706/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java index 547692d..bcbc856 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ViewPermissionResourceProvider.java @@ -18,6 +18,11 @@ package org.apache.ambari.server.controller.internal; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + import org.apache.ambari.server.controller.spi.NoSuchParentResourceException; import org.apache.ambari.server.controller.spi.NoSuchResourceException; import org.apache.ambari.server.controller.spi.Predicate; @@ -33,11 +38,6 @@ import org.apache.ambari.server.orm.entities.ResourceTypeEntity; import org.apache.ambari.server.orm.entities.ViewEntity; import org.apache.ambari.server.view.ViewRegistry; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - /** * Resource provider for custom view permissions. */ @@ -119,6 +119,16 @@ public class ViewPermissionResourceProvider extends AbstractResourceProvider { Set<Resource> resources = new HashSet<Resource>(); Set<String> requestedIds = getRequestPropertyIds(request, predicate); + PermissionEntity viewUsePermission = permissionDAO.findViewUsePermission(); + for (Map<String, Object> propertyMap: getPropertyMaps(predicate)) { + Object viewName = propertyMap.get(VIEW_NAME_PROPERTY_ID); + Object viewVersion = propertyMap.get(VIEW_VERSION_PROPERTY_ID); + if (viewName != null && viewVersion != null) { + ViewEntity viewEntity = viewRegistry.getDefinition(viewName.toString(), viewVersion.toString()); + resources.add(toResource(viewUsePermission, viewEntity.getResourceType(), viewEntity, requestedIds)); + } + } + for(PermissionEntity permissionEntity : permissionDAO.findAll()){ ResourceTypeEntity resourceType = permissionEntity.getResourceType(); http://git-wip-us.apache.org/repos/asf/ambari/blob/892ea706/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/PermissionDAO.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/PermissionDAO.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/PermissionDAO.java index 0ab5af8..f88add3 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/PermissionDAO.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/dao/PermissionDAO.java @@ -33,11 +33,23 @@ import java.util.List; */ @Singleton public class PermissionDAO { + + /** + * Id of built-in VIEW.USE permission. + */ + private static int VIEW_USE_PERMISSION_ID = 4; + + /** + * Name of built-in VIEW.USE permission. + */ + private static String VIEW_USE_PERMISSION_NAME = "VIEW.USE"; + /** * JPA entity manager */ @Inject Provider<EntityManager> entityManagerProvider; + @Inject DaoUtils daoUtils; @@ -68,12 +80,25 @@ public class PermissionDAO { * @param name the permission name * @param resourceType the resource type * - * @return a matching permission entity or null + * @return a matching permission entity or null */ public PermissionEntity findPermissionByNameAndType(String name, ResourceTypeEntity resourceType) { + if (name.equals(VIEW_USE_PERMISSION_NAME)) { + // VIEW.USE permission should be available for any type of views + return findViewUsePermission(); + } TypedQuery<PermissionEntity> query = entityManagerProvider.get().createQuery("SELECT p FROM PermissionEntity p WHERE p.permissionName=:permissionname AND p.resourceType=:resourcetype", PermissionEntity.class); query.setParameter("permissionname", name); query.setParameter("resourcetype", resourceType); return daoUtils.selectSingle(query); } + + /** + * Find VIEW.USE permission. + * + * @return a matching permission entity or null + */ + public PermissionEntity findViewUsePermission() { + return findById(VIEW_USE_PERMISSION_ID); + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/892ea706/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ResourceTypeEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ResourceTypeEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ResourceTypeEntity.java index 1fdb737..0bcc6ab 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ResourceTypeEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ResourceTypeEntity.java @@ -120,5 +120,11 @@ public class ResourceTypeEntity { result = 31 * result + (name != null ? name.hashCode() : 0); return result; } + + @Override + public String toString() { + return "ResourceTypeEntity [id=" + id + ", name=" + name + "]"; + } + }
