[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