[jboss-svn-commits] JBL Code SVN: r19061 - in labs/jbosslabs/labs-3.0-build: core/core-model/src/main/java/org/jboss/labs/core/model and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 18 16:04:42 EDT 2008


Author: szimano
Date: 2008-03-18 16:04:42 -0400 (Tue, 18 Mar 2008)
New Revision: 19061

Added:
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/show_userrole.xhtml
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
   labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ProjectsManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_project.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml
   labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_project.xhtml
Log:
auth view project users JBLAB-901

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -23,12 +23,14 @@
 package org.jboss.labs.auth;
 
 import java.security.Principal;
+import java.util.Map;
 import java.util.Set;
 
 import javax.ejb.Local;
 
 import org.jboss.labs.auth.custom.CustomIDProvider;
 import org.jboss.labs.core.model.auth.AuthID;
+import org.jboss.labs.core.model.auth.Binding;
 import org.jboss.labs.core.model.auth.CustomID;
 import org.jboss.labs.core.model.auth.ProjectID;
 import org.jboss.labs.core.model.auth.Service;
@@ -407,4 +409,13 @@
 	 * @return Service Role or null if it doesn't exist
 	 */
 	public ServiceRole getServiceRole(String serviceRoleId);
+
+	/**
+	 * Gets bindings for given service role
+	 * 
+	 * @param sr
+	 *            Service role
+	 * @returns Map of bindings AuthID -> Set of user roles
+	 */
+	public Map<AuthID, Set<UserRole>> getBindingsForServiceRole(ServiceRole sr);
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -354,4 +354,20 @@
                     "User '" + username.getUsername() + "' is not project '" + projectId + "' contributor.");
         }
     }
+    
+    public boolean equals(Object o) {
+    	if (o == null) {
+    		return false;
+    	}
+    	
+    	if (o instanceof Project) {
+    		return id.equals(((Project)o).getId());
+    	}
+    	
+    	return false;
+    }
+    
+    public int hashCode() {
+    	return id.hashCode();
+    }
 }

Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -23,7 +23,10 @@
 package org.jboss.labs.auth.impl;
 
 import java.security.Principal;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
 
@@ -508,4 +511,28 @@
 		removeBindingWith(serviceRole, role, getProjectID(projectId));
 	}
 
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.jboss.labs.auth.RoleBinderService#getBindingsForServiceRole(org.jboss.labs.core.model.auth.ServiceRole)
+	 */
+	@SuppressWarnings("unchecked")
+	public Map<AuthID, Set<UserRole>> getBindingsForServiceRole(ServiceRole sr) {
+		List<Binding> bindings = manager.createQuery(
+				"SELECT b FROM Binding b where b.serviceRole = :serviceRole")
+				.setParameter("serviceRole", sr).getResultList();
+
+		Map<AuthID, Set<UserRole>> m = new HashMap<AuthID, Set<UserRole>>();
+
+		for (Binding b : bindings) {
+			if (!m.containsKey(b.getAuthId())) {
+				m.put(b.getAuthId(), new TreeSet<UserRole>());
+			}
+
+			m.get(b.getAuthId()).add(b.getUserRole());
+		}
+
+		return m;
+	}
+
 }

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ProjectsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ProjectsManager.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ProjectsManager.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -30,8 +30,10 @@
 import org.jboss.labs.core.service.ProjectService;
 import org.jboss.labs.injection.seam.Guice;
 import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Logger;
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.log.Log;
 
 import com.google.inject.Inject;
 
@@ -48,6 +50,9 @@
 	
 	private Project currentProject;
 	
+	@Logger
+	private Log log;
+	
 	public List<Project> getAllProjects() {
 		List<Project> prjs = projectsManager.getProjects();
 		
@@ -67,6 +72,8 @@
 	}
 
 	public void setCurrentProject(Project currentProject) {
+		log.info("project set to "+currentProject);
+		
 		this.currentProject = currentProject;
 	}
 }

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/ServiceManager.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -23,11 +23,15 @@
 package org.jboss.labs.view.auth.action;
 
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 import javax.faces.event.FacesEvent;
 
 import org.jboss.labs.auth.RoleBinderService;
+import org.jboss.labs.core.model.auth.AuthID;
+import org.jboss.labs.core.model.auth.Binding;
+import org.jboss.labs.core.model.auth.ProjectID;
 import org.jboss.labs.core.model.auth.Service;
 import org.jboss.labs.core.model.auth.ServiceRole;
 import org.jboss.labs.core.model.auth.UserRole;
@@ -64,6 +68,8 @@
 
 	private TreeNode globalRolesTree;
 
+	private TreeNode projectRolesTree;
+
 	@Logger
 	private Log log;
 
@@ -71,7 +77,7 @@
 		if (currentServiceRole != null) {
 			currentServiceRole = null;
 		}
-		
+
 		return currentService;
 	}
 
@@ -120,32 +126,81 @@
 
 				globalRolesTree.addChild(counter++, tmp);
 
-				addServiceRoles(tmp, s, counter);
+				addServiceRoles(tmp, s, counter, true);
 			}
 		}
 
 		return globalRolesTree;
 	}
 
+	public TreeNode getProjectRolesTree() {
+		if (projectRolesTree == null) {
+			int counter = 0;
+
+			projectRolesTree = new TreeNodeImpl();
+			projectRolesTree.setData("Services");
+
+			for (Service s : getAllServices()) {
+				TreeNode tmp = new TreeNodeImpl();
+				tmp.setData(s);
+
+				projectRolesTree.addChild(counter++, tmp);
+
+				addServiceRoles(tmp, s, counter, false);
+			}
+		}
+
+		return projectRolesTree;
+	}
+
 	/**
 	 * @param tmp
 	 * @param s
 	 * @param counter
 	 */
-	private void addServiceRoles(TreeNode node, Service s, int counter) {
+	private void addServiceRoles(TreeNode node, Service s, int counter,
+			boolean global) {
 		for (ServiceRole sr : s.getServiceRoles()) {
 			TreeNode tmp = new TreeNodeImpl();
 			tmp.setData(sr);
 
 			node.addChild(counter++, tmp);
 
-			addGlobalRoles(tmp, sr, counter);
+			if (global) {
+				addGlobalRoles(tmp, sr, counter);
+			} else {
+				addProjectRoles(tmp, sr, counter);
+			}
 		}
 	}
 
 	/**
 	 * @param tmp
 	 * @param sr
+	 */
+	private void addProjectRoles(TreeNode node, ServiceRole sr, int counter) {
+		Map<AuthID, Set<UserRole>> bindings = binderService.getBindingsForServiceRole(sr);
+		
+		for (AuthID id : bindings.keySet()) {
+			if (id instanceof ProjectID) {
+				TreeNode tmp = new TreeNodeImpl();
+				tmp.setData(id);
+
+				for (UserRole ur : bindings.get(id)) {
+					TreeNode tmp2 = new TreeNodeImpl();
+					tmp2.setData(ur);
+					
+					tmp.addChild(counter++, tmp2);
+				}
+				
+				node.addChild(counter++, tmp);
+			}
+		}
+	}
+
+	/**
+	 * @param tmp
+	 * @param sr
 	 * @param counter
 	 */
 	private void addGlobalRoles(TreeNode node, ServiceRole sr, int counter) {
@@ -160,7 +215,7 @@
 	public void setGlobalRolesTree(TreeNode globalRolesTree) {
 		this.globalRolesTree = globalRolesTree;
 	}
-	
+
 	@Observer(CLEAR_GLOBAL_ROLES)
 	public void cleanGlobalRoles() {
 		globalRolesTree = null;

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/java/org/jboss/labs/view/auth/action/UserManager.java	2008-03-18 20:04:42 UTC (rev 19061)
@@ -32,6 +32,7 @@
 
 import org.jboss.labs.auth.UserService;
 import org.jboss.labs.auth.ViewHelper;
+import org.jboss.labs.core.model.auth.ProjectID;
 import org.jboss.labs.core.model.auth.ServiceRole;
 import org.jboss.labs.core.model.auth.User;
 import org.jboss.labs.core.model.auth.UserRole;
@@ -116,17 +117,23 @@
 		this.usersInRole = usersInRole;
 	}
 
-	public void selectGlobalNode(NodeSelectedEvent event) {
+	public void selectUserRoleNode(NodeSelectedEvent event) {
 		UITree tree = (UITree) event.getComponent();
 		Object ob = tree.getRowData();
 
 		if (ob instanceof UserRole) {
 			currentRole = (UserRole) ob;
+			usersInRole = null;
 
 			// set current service role
 			if (tree.getTreeNode().getParent() != null) {
-				services.setCurrentServiceRole((ServiceRole) tree.getTreeNode()
-						.getParent().getData());
+				Object obj = tree.getTreeNode().getParent().getData();
+
+				if (obj instanceof ProjectID) {
+					obj = tree.getTreeNode().getParent().getParent().getData();
+				}
+
+				services.setCurrentServiceRole((ServiceRole) obj);
 			}
 		}
 	}

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_project.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_project.xhtml	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/choose_project.xhtml	2008-03-18 20:04:42 UTC (rev 19061)
@@ -11,7 +11,7 @@
 	<h:selectOneRadio id="projectList" value="#{projects.currentProject}">
 		<a4j:support event="onchange" reRender="buttons" />
 		<s:selectItems value="#{projects.allProjects}" var="project"
-			label="#{project.name}" itemValue="#{project.projectId}" />
+			label="#{project.name}" itemValue="#{project}" />
 		<f:converter converterId="serviceEntity" />
 	</h:selectOneRadio>
 </h:panelGroup>

Added: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/show_userrole.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/show_userrole.xhtml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/include/show_userrole.xhtml	2008-03-18 20:04:42 UTC (rev 19061)
@@ -0,0 +1,25 @@
+<h:panelGroup xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:s="http://jboss.com/products/seam/taglib"
+	xmlns:ui="http://java.sun.com/jsf/facelets"
+	xmlns:f="http://java.sun.com/jsf/core"
+	xmlns:h="http://java.sun.com/jsf/html"
+	xmlns:rich="http://richfaces.org/rich"
+	xmlns:a4j="http://richfaces.org/a4j" template="/layout/template.xhtml">
+
+	<a4j:outputPanel id="selectedRole">
+		<h:panelGroup layout="vertical"
+			rendered="#{users.currentRole != null}">
+			<h:panelGroup>
+				<h:outputText value="Role name:" />
+				<h:outputText value="#{users.currentRole.id}" />
+			</h:panelGroup>
+			<h:panelGroup>
+				<h:outputText value="Role description:" />
+				<h:outputText value="#{users.currentRole.description}" />
+			</h:panelGroup>
+			<rich:dataList var="user" value="#{users.usersInRole}">
+				<h:outputText value="#{user.name}" />
+			</rich:dataList>
+		</h:panelGroup>
+	</a4j:outputPanel>
+</h:panelGroup>

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_global.xhtml	2008-03-18 20:04:42 UTC (rev 19061)
@@ -31,7 +31,7 @@
 					<a4j:form>
 						<rich:tree switchType="ajax" value="#{services.globalRolesTree}"
 							var="item" id="globalRolesTree" ajaxSubmitSelection="true"
-							nodeSelectListener="#{users.selectGlobalNode}"
+							nodeSelectListener="#{users.selectUserRoleNode}"
 							reRender="selectedRole,buttons" nodeFace="#{item.class.name}">
 
 							<rich:treeNode type="org.jboss.labs.core.model.auth.Service">
@@ -59,13 +59,9 @@
 								reRender="globalRolesTree,buttons" />
 						</h:panelGroup>
 					</a4j:form>
-					<h:panelGroup layout="vertical" id="selectedRole">
-						<h:outputText value="#{users.currentRole.id}" />
-						<h:outputText value="#{users.currentRole.description}" />
-						<rich:dataList var="user" value="#{users.usersInRole}">
-							<h:outputText value="#{user.name}" />
-						</rich:dataList>
-					</h:panelGroup>
+					
+					<ui:include src="include/show_userrole.xhtml" />
+					
 				</h:panelGrid>
 			</rich:tab>
 		</rich:tabPanel>

Modified: labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_project.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_project.xhtml	2008-03-18 19:50:41 UTC (rev 19060)
+++ labs/jbosslabs/labs-3.0-build/views/auth/src/main/webapp/manage_project.xhtml	2008-03-18 20:04:42 UTC (rev 19061)
@@ -17,7 +17,7 @@
 					<ui:include src="include/choose_service_role.xhtml" />
 
 					<ui:include src="include/choose_project.xhtml" />
-					
+
 					<ui:include src="include/choose_user_role.xhtml" />
 
 					<h:panelGroup id="buttons">
@@ -31,10 +31,10 @@
 			<rich:tab label="View/Edit" name="view" id="viewtab">
 				<h:panelGrid columns="2">
 					<a4j:form>
-						<rich:tree switchType="ajax" value="#{services.globalRolesTree}"
-							var="item" id="globalRolesTree" ajaxSubmitSelection="true"
-							nodeSelectListener="#{users.selectGlobalNode}"
-							reRender="selectedRole,buttons" nodeFace="#{item.class.name}">
+						<rich:tree switchType="ajax" value="#{services.projectRolesTree}"
+							var="item" id="projectRolesTree" ajaxSubmitSelection="true"
+							reRender="selectedRole,buttons" nodeSelectListener="#{users.selectUserRoleNode}"
+							nodeFace="#{item.class.name}">
 
 							<rich:treeNode type="org.jboss.labs.core.model.auth.Service">
 								<h:outputText value="[Service] #{item.description}" />
@@ -47,6 +47,10 @@
 							<rich:treeNode type="org.jboss.labs.core.model.auth.UserRole">
 								<h:outputText value="[UserRole] #{item.id}" />
 							</rich:treeNode>
+							
+							<rich:treeNode type="org.jboss.labs.core.model.auth.ProjectID">
+								<h:outputText value="[Project] #{item.authId}" />
+							</rich:treeNode>
 						</rich:tree>
 						<rich:contextMenu event="oncontextmenu" attached="true"
 							submitMode="none">
@@ -61,13 +65,9 @@
 								reRender="globalRolesTree,buttons" />
 						</h:panelGroup>
 					</a4j:form>
-					<h:panelGroup layout="vertical" id="selectedRole">
-						<h:outputText value="#{users.currentRole.id}" />
-						<h:outputText value="#{users.currentRole.description}" />
-						<rich:dataList var="user" value="#{users.usersInRole}">
-							<h:outputText value="#{user.name}" />
-						</rich:dataList>
-					</h:panelGroup>
+					
+					<ui:include src="include/show_userrole.xhtml" />
+					
 				</h:panelGrid>
 			</rich:tab>
 		</rich:tabPanel>




More information about the jboss-svn-commits mailing list