Repository: ambari Updated Branches: refs/heads/trunk 3befc557a -> 06f8f87d2
AMBARI-7776 - Admin View: Users page empty after delete view Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/06f8f87d Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/06f8f87d Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/06f8f87d Branch: refs/heads/trunk Commit: 06f8f87d2e09b08d386b58d3bb3415b86e830a74 Parents: 3befc55 Author: tbeerbower <[email protected]> Authored: Wed Oct 15 17:01:12 2014 -0400 Committer: tbeerbower <[email protected]> Committed: Wed Oct 15 17:01:40 2014 -0400 ---------------------------------------------------------------------- .../ambari/server/api/services/UserService.java | 10 +++++ .../server/orm/entities/PrincipalEntity.java | 8 ++++ .../apache/ambari/server/view/ViewRegistry.java | 16 +++++++- .../orm/entities/PrincipalEntityTest.java | 43 ++++++++++++++++++++ .../ambari/server/view/ViewRegistryTest.java | 13 +++++- 5 files changed, 86 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/06f8f87d/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java index 87cb3ba..00be99c 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/UserService.java @@ -129,6 +129,16 @@ public class UserService extends BaseService { } /** + * Gets the user privilege service + */ + @Path("{userName}/privileges") + public PrivilegeService getPrivilegeService(@Context javax.ws.rs.core.Request request, + @PathParam ("userName") String userName) { + + return new UserPrivilegeService(userName); + } + + /** * Create a user resource instance. * * @param userName user name http://git-wip-us.apache.org/repos/asf/ambari/blob/06f8f87d/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalEntity.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalEntity.java b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalEntity.java index 4b826df..601a7d1 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalEntity.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/orm/entities/PrincipalEntity.java @@ -125,6 +125,14 @@ public class PrincipalEntity { this.privileges = privileges; } + /** + * Remove a privilege. + * + * @param privilege the privilege entity + */ + public void removePrivilege(PrivilegeEntity privilege) { + privileges.remove(privilege); + } // ----- Object overrides -------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/06f8f87d/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java index cddbe2d..f5dc8b9 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java @@ -40,6 +40,7 @@ import org.apache.ambari.server.orm.dao.ViewInstanceDAO; import org.apache.ambari.server.orm.entities.GroupEntity; import org.apache.ambari.server.orm.entities.MemberEntity; import org.apache.ambari.server.orm.entities.PermissionEntity; +import org.apache.ambari.server.orm.entities.PrincipalEntity; import org.apache.ambari.server.orm.entities.PrivilegeEntity; import org.apache.ambari.server.orm.entities.ResourceEntity; import org.apache.ambari.server.orm.entities.ResourceTypeEntity; @@ -547,7 +548,7 @@ public class ViewRegistry { } List<PrivilegeEntity> instancePrivileges = privilegeDAO.findByResourceId(instanceEntity.getResource().getId()); for (PrivilegeEntity privilegeEntity : instancePrivileges) { - privilegeDAO.remove(privilegeEntity); + removePrivilegeEntity(privilegeEntity); } instanceDAO.remove(instanceEntity); viewEntity.removeInstanceDefinition(instanceName); @@ -825,7 +826,7 @@ public class ViewRegistry { ViewExternalSubResourceProvider viewExternalSubResourceProvider = new ViewExternalSubResourceProvider(externalResourceType, viewDefinition); - viewDefinition.addResourceProvider(externalResourceType, viewExternalSubResourceProvider ); + viewDefinition.addResourceProvider(externalResourceType, viewExternalSubResourceProvider); resourceProviders.put(externalResourceType, viewExternalSubResourceProvider); @@ -1187,6 +1188,17 @@ public class ViewRegistry { } } + // remove a privilege entity. + private void removePrivilegeEntity(PrivilegeEntity privilegeEntity) { + + PrincipalEntity principalEntity = privilegeEntity.getPrincipal(); + if (principalEntity != null) { + principalEntity.removePrivilege(privilegeEntity); + } + + privilegeDAO.remove(privilegeEntity); + } + // read the view archives. private void readViewArchives(boolean systemOnly, boolean useExecutor, String viewNameRegExp, boolean removeUndeployed) { http://git-wip-us.apache.org/repos/asf/ambari/blob/06f8f87d/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/PrincipalEntityTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/PrincipalEntityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/PrincipalEntityTest.java index e1e90fe..d9e0540 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/PrincipalEntityTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/entities/PrincipalEntityTest.java @@ -21,6 +21,9 @@ package org.apache.ambari.server.orm.entities; import org.junit.Assert; import org.junit.Test; +import java.util.HashSet; +import java.util.Set; + /** * PrincipalEntity tests. */ @@ -44,4 +47,44 @@ public class PrincipalEntityTest { entity.setPrincipalType(typeEntity); Assert.assertEquals(typeEntity, entity.getPrincipalType()); } + + @Test + public void testSetGetPrivileges() throws Exception { + + Set<PrivilegeEntity> privileges = new HashSet<PrivilegeEntity>(); + PrivilegeEntity privilegeEntity = new PrivilegeEntity(); + privilegeEntity.setId(1); + privileges.add(privilegeEntity); + privilegeEntity = new PrivilegeEntity(); + privilegeEntity.setId(2); + privileges.add(privilegeEntity); + + PrincipalEntity entity = new PrincipalEntity(); + + entity.setPrivileges(privileges); + Assert.assertEquals(privileges, entity.getPrivileges()); + } + + @Test + public void testRemovePrivilege() throws Exception { + + Set<PrivilegeEntity> privileges = new HashSet<PrivilegeEntity>(); + PrivilegeEntity privilegeEntity1 = new PrivilegeEntity(); + privilegeEntity1.setId(1); + privileges.add(privilegeEntity1); + PrivilegeEntity privilegeEntity2 = new PrivilegeEntity(); + privilegeEntity2.setId(2); + privileges.add(privilegeEntity2); + + PrincipalEntity entity = new PrincipalEntity(); + + entity.setPrivileges(privileges); + + entity.removePrivilege(privilegeEntity2); + + privileges = entity.getPrivileges(); + Assert.assertEquals(1, privileges.size()); + + privileges.contains(privilegeEntity1); + } } http://git-wip-us.apache.org/repos/asf/ambari/blob/06f8f87d/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java index a3e0caf..ffcac6b 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java @@ -62,6 +62,7 @@ import org.apache.ambari.server.orm.dao.UserDAO; import org.apache.ambari.server.orm.dao.ViewDAO; import org.apache.ambari.server.orm.dao.ViewInstanceDAO; import org.apache.ambari.server.orm.entities.PermissionEntity; +import org.apache.ambari.server.orm.entities.PrincipalEntity; import org.apache.ambari.server.orm.entities.PrivilegeEntity; import org.apache.ambari.server.orm.entities.ResourceEntity; import org.apache.ambari.server.orm.entities.ResourceTypeEntity; @@ -822,6 +823,14 @@ public class ViewRegistryTest { PrivilegeEntity privilege2 = createNiceMock(PrivilegeEntity.class); List<PrivilegeEntity> privileges = Arrays.asList(privilege1, privilege2); + PrincipalEntity principalEntity = createNiceMock(PrincipalEntity.class); + + expect(privilege1.getPrincipal()).andReturn(principalEntity); + expect(privilege2.getPrincipal()).andReturn(principalEntity); + + principalEntity.removePrivilege(privilege1); + principalEntity.removePrivilege(privilege2); + expect(privilegeDAO.findByResourceId(3L)).andReturn(privileges); privilegeDAO.remove(privilege1); privilegeDAO.remove(privilege2); @@ -829,7 +838,7 @@ public class ViewRegistryTest { handlerList.removeViewInstance(viewInstanceEntity); - replay(viewInstanceDAO, privilegeDAO, handlerList); + replay(viewInstanceDAO, privilegeDAO, handlerList, privilege1, privilege2, principalEntity); registry.addDefinition(viewEntity); registry.addInstanceDefinition(viewEntity, viewInstanceEntity); @@ -839,7 +848,7 @@ public class ViewRegistryTest { Assert.assertEquals(0, viewInstanceDefinitions.size()); - verify(viewInstanceDAO, privilegeDAO, handlerList); + verify(viewInstanceDAO, privilegeDAO, handlerList, privilege1, privilege2, principalEntity); } @Test
