[jboss-svn-commits] JBL Code SVN: r18633 - 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
Fri Feb 29 06:31:59 EST 2008


Author: wrzep
Date: 2008-02-29 06:31:59 -0500 (Fri, 29 Feb 2008)
New Revision: 18633

Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.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/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java
   labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
   labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListenerBean.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/promoteToLead.xhtml
Log:
JBLAB-930 prj members management finished


Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -54,7 +54,7 @@
 
     List<ContributorAgreement> getCAsRequiredToJoin(String name, Project project);
 
-    void addUserToProject(JoinRequest joinRequest) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException;
+    void addUserToProject(JoinRequest joinRequest) throws NoSuchUserException, LabsRollbackException;
 
-    void promoteToLead(String projectId, Username contributor) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException;
+    Project promoteToLead(String projectId, String username) throws NoSuchUserException, LabsRollbackException;
 }

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-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -289,10 +289,10 @@
     }
 
      public void addContributor(Username contributor) {
-        if (projectLeads == null) {
-            setProjectLeads(Arrays.asList(contributor));
+        if (contributors == null) {
+            setContributors(Arrays.asList(contributor));
         } else {
-            projectLeads.add(contributor);
+            contributors.add(contributor);
         }
     }
 
@@ -335,7 +335,8 @@
             contributors.remove(username);
             addProjectLead(username);
         } else {
-            throw new IllegalStateException();
+            throw new IllegalStateException(
+                    "User '" + username.getUsername() + "' is not project '" + projectId + "' contributor.");
         }
     }
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Username.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -112,4 +112,28 @@
             leadProjects.add(project);
         }
     }
+
+    @Override
+    public String toString() {
+        return "Username(" + username + ")";
+    }
+
+    @Override
+    public int hashCode() {
+        if (username == null) {
+            return 0;
+        }
+        return username.hashCode();
+    }
+
+    public boolean equals(Object o) {
+
+        if (o instanceof Username) {
+            if (username == null) {
+                return (((Username) o).getUsername()) == null;         
+            }
+            return (username.equals(((Username) o).getUsername()));
+        }
+        return false;
+    }
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/ProjectNotFoundException.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -24,11 +24,15 @@
 package org.jboss.labs.exception.admin;
 
 import org.jboss.labs.exception.LabsException;
+import org.jboss.labs.exception.LabsRollbackException;
 
+import javax.ejb.ApplicationException;
+
 /**
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
-public class ProjectNotFoundException extends LabsException {
+ at ApplicationException(rollback = true)
+public class ProjectNotFoundException extends LabsRollbackException {
     
     private static final long serialVersionUID = 4183531789003701360L;
 

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -51,18 +51,8 @@
 
         String lu = projectRequest.getLeadUsername();
         Username leadUsername = null;
-        try {
-            leadUsername = getUsername(lu);
-        } catch (NoResultException e) {
-            // do nothing
-        }
+        leadUsername = getUsername(lu, true);
 
-        if (leadUsername == null) {
-
-            leadUsername = new Username(projectRequest.getLeadUsername());
-            em.persist(leadUsername);
-        }
-
         leadUsername.addLeadProject(p);
         p.addProjectLead(leadUsername);
 
@@ -163,11 +153,24 @@
         return em.createQuery("SELECT p FROM Project p").getResultList();
     }
 
-    private Username getUsername(String username) {
+    private Username getUsername(String username, boolean create) {
 
-        return (Username) em.createQuery("SELECT u FROM Username u WHERE u.username = :username")
-                                                .setParameter("username", username)
-                                                .getSingleResult();
+        Username u;
+
+        try {
+            u = (Username) em.createQuery("SELECT u FROM Username u WHERE u.username = :username")
+                                                    .setParameter("username", username)
+                                                    .getSingleResult();
+        } catch (NoResultException e) {
+            if (create) {
+                u = new Username(username);
+                em.persist(u);
+            } else {
+                throw new IllegalStateException(e);
+            }
+        }
+
+        return u;
     }
 
     public Project getProject(String projectId) throws ProjectNotFoundException {
@@ -192,15 +195,15 @@
     }
 
     public void addUserToProject(JoinRequest joinRequest)
-            throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
+            throws NoSuchUserException, LabsRollbackException {
 
         final String projectId = joinRequest.getProjectId();
         
         Project p = getProject(projectId); // Yes, we don't need EJB3 call here
 
-        Username u = getUsername(joinRequest.getUsername());
+        Username u = getUsername(joinRequest.getUsername(), true);
 
-        p.getContributors().add(u);
+        p.addContributor(u);
 
          try {
             projectEventsGenerator.contributorAdded(u.getUsername(), projectId);
@@ -212,19 +215,21 @@
         }
     }
 
-    public void promoteToLead(String projectId, Username contributor)
-            throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
+    public Project promoteToLead(String projectId, String username)
+            throws NoSuchUserException, LabsRollbackException {
 
          Project p = getProject(projectId); // Yes, we don't need EJB3 call here
+         Username u = getUsername(username, false);
+         p.promoteToLead(u);
 
-         p.promoteToLead(contributor);
-
          try {
-             projectEventsGenerator.projectLeadAdded(contributor.getUsername(), projectId);
+             projectEventsGenerator.projectLeadAdded(username, projectId);
          } catch (NamingException e) {
              throw new LabsRollbackException(e);
          } catch (JMSException e) {
             throw new LabsRollbackException(e);
          }
+
+        return p;
     }
 }

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListenerBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListenerBean.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListenerBean.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -27,6 +27,8 @@
 import org.jboss.labs.auth.UserService;
 import org.jboss.labs.events.service.EventsService;
 import org.jboss.labs.events.ProjectEvents;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import org.jboss.labs.exception.auth.NoSuchUserRoleException;
 import org.jboss.annotation.ejb.Management;
 import org.jboss.annotation.ejb.Service;
 import org.jboss.logging.Logger;
@@ -75,6 +77,7 @@
         public void projectLeadAdded(String username, String projectId) {
             log.debug("Added project lead: " + username + " project: " + projectId);
 
+            // TODO uncomment when auth start working properly
 //            try {
 //                  roleBinderService.grantUserProjectSuperrole(
 //                           userService.getUserByLogin(username),
@@ -88,6 +91,16 @@
 
         public void projectContributorAdded(String username, String projectId) {
             log.debug("Project contributor added: " + username + " project: " + projectId);
+            try {
+                userService.addUserRoleToUser(userService.getUserByLogin(username),
+                    userService.getCommonRoleForProject(projectId));
+            } catch (NoSuchUserException e) {
+                // shouldn't happen
+                throw new IllegalStateException(e);
+            } catch (NoSuchUserRoleException e) {
+                // shouldn't happen
+                throw new IllegalStateException(e);
+            }
         }
 
         public void updated(Class clazz, Integer id) {

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java	2008-02-29 11:31:59 UTC (rev 18633)
@@ -49,9 +49,9 @@
 
     private static final long serialVersionUID = 1769748495880658315L;
 
-    @In private Project project;
+    @In @Out(scope = ScopeType.CONVERSATION) private Project project;
 
-    @Out(scope = ScopeType.CONVERSATION) private Username contributor;
+    @Out(scope = ScopeType.CONVERSATION, required = false) private Username contributor;
 
     @Inject private ProjectService projectService;
 
@@ -64,9 +64,9 @@
         return Pages.PROMOTE_TO_LEAD_PAGE;
     }
 
-    public String promoteToLead(Username contributor) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
+    public String promoteToLead(Username contributor) throws NoSuchUserException, LabsRollbackException {
 
-        projectService.promoteToLead(project.getProjectId(), contributor);
+        project = projectService.promoteToLead(project.getProjectId(), contributor.getUsername());
 
         facesMessages.add("User " + contributor.getUsername()
                                   + " has been promoted to project lead.");

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml	2008-02-29 11:31:59 UTC (rev 18633)
@@ -30,18 +30,20 @@
                             <li>
                                 <h:outputText value="#{contributor.username} "/>
                                 <h:commandLink value="Promote to lead"
-                                               action="#{project.promoteToLead(contributor)}"/>
+                                               action="#{membersManager.confirmPromote(contributor)}"/>
                             </li>
                         </ui:repeat>
                     </ul>
                 </td>
             </tr>
         </table>
-        <h:outputText value="You are not a member of this project (TODO: move this to project page)."
+        <br/>
+        <h:outputText value="You are not a member of this project (TODO: move this to the project page)."
                                   rendered="#{project.canJoin(user.name)}"/>
                     <h:commandLink action="#{joinProject.join}" value="Join!"
                                    rendered="#{project.canJoin(user.name)}"/>
         <br/>
+        <s:button value="Back" action="/project/project.seam"/>
     </h:form>
 
 </ui:define> 

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/promoteToLead.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/promoteToLead.xhtml	2008-02-29 09:58:48 UTC (rev 18632)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/promoteToLead.xhtml	2008-02-29 11:31:59 UTC (rev 18633)
@@ -11,14 +11,12 @@
 
 <ui:define name="body">
     
-    <rich:panel>
-        <f:facet name="header">Join Project</f:facet>
-        <h:form id="mainForm" >
-            Do you want to apply to join project #{project.name}?
-            <h:commandButton value="Yes" action="#{joinProject.createRequest}"/>
-            <h:commandButton value="No" action="/project/project.seam"/>
-        </h:form>
-    </rich:panel>
+   <h2>Promote to lead</h2>
+   <h:form id="mainForm" >
+        Promote #{contributor.username} to project lead?
+        <h:commandButton value="Yes" action="#{membersManager.promoteToLead(contributor)}"/>
+        <h:commandButton value="No" action="/project/members.seam"/>
+   </h:form>
     
 </ui:define> 
 </ui:composition>




More information about the jboss-svn-commits mailing list