[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