Repository: ambari
Updated Branches:
  refs/heads/branch-1.7.0 dd3f5d19a -> 1e34ff260


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/1e34ff26
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1e34ff26
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1e34ff26

Branch: refs/heads/branch-1.7.0
Commit: 1e34ff2607b8c3d6f2d9139a0bd2815cc5333fae
Parents: dd3f5d1
Author: tbeerbower <[email protected]>
Authored: Wed Oct 15 17:11:42 2014 -0400
Committer: tbeerbower <[email protected]>
Committed: Wed Oct 15 17:11:42 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/1e34ff26/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/1e34ff26/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/1e34ff26/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 4063acd..cf15ef1 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;
@@ -561,7 +562,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);
@@ -836,7 +837,7 @@ public class ViewRegistry {
 
     ViewExternalSubResourceProvider viewExternalSubResourceProvider =
         new ViewExternalSubResourceProvider(externalResourceType, 
viewDefinition);
-    viewDefinition.addResourceProvider(externalResourceType, 
viewExternalSubResourceProvider );
+    viewDefinition.addResourceProvider(externalResourceType, 
viewExternalSubResourceProvider);
 
     resourceProviders.put(externalResourceType, 
viewExternalSubResourceProvider);
 
@@ -1192,6 +1193,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/1e34ff26/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/1e34ff26/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 c765946..071f5af 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
@@ -61,6 +61,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;
@@ -816,6 +817,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);
@@ -823,7 +832,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);
@@ -833,7 +842,7 @@ public class ViewRegistryTest {
 
     Assert.assertEquals(0, viewInstanceDefinitions.size());
 
-    verify(viewInstanceDAO, privilegeDAO, handlerList);
+    verify(viewInstanceDAO, privilegeDAO, handlerList, privilege1, privilege2, 
principalEntity);
   }
 
   @Test

Reply via email to