[jboss-svn-commits] JBL Code SVN: r18613 - in labs/jbosslabs/labs-3.0-build: core/core-api/src/main/java/org/jboss/labs/events and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Feb 28 09:50:46 EST 2008


Author: wrzep
Date: 2008-02-28 09:50:46 -0500 (Thu, 28 Feb 2008)
New Revision: 18613

Added:
   labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/LabsRollbackException.java
   labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListener.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/promoteToLead.xhtml
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/events/ProjectEvents.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/service/ProjectEventsGenerator.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/events-service/src/main/java/org/jboss/labs/events/ProjectEventsConsumer.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/events/ProjectEventsGeneratorBean.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/Pages.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/UserManager.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml
Log:
JBLAB-930 event service integration


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-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/core/service/ProjectService.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -25,10 +25,14 @@
 
 import org.jboss.labs.core.model.Project;
 import org.jboss.labs.core.model.ContributorAgreement;
+import org.jboss.labs.core.model.Username;
 import org.jboss.labs.core.model.admin.ProjectRequest;
 import org.jboss.labs.core.model.admin.JoinRequest;
 import org.jboss.labs.exception.admin.CreateProjectException;
 import org.jboss.labs.exception.admin.ProjectNotFoundException;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import org.jboss.labs.exception.auth.NoSuchUserRoleException;
+import org.jboss.labs.exception.LabsRollbackException;
 
 import javax.ejb.Local;
 import java.util.List;
@@ -42,13 +46,15 @@
 
     public Project getProject(String projectId) throws ProjectNotFoundException;
 
-    void createProject(ProjectRequest projectRequest) throws CreateProjectException;
+    Project merge(Project project);
 
+    void createProject(ProjectRequest projectRequest) throws CreateProjectException, LabsRollbackException;
+
     boolean canJoin(String name, Project project);
 
     List<ContributorAgreement> getCAsRequiredToJoin(String name, Project project);
 
-    void addUserToProject(JoinRequest joinRequest) throws ProjectNotFoundException;
+    void addUserToProject(JoinRequest joinRequest) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException;
 
-    Project merge(Project project);
+    void promoteToLead(String projectId, Username contributor) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException;
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/ProjectEvents.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/ProjectEvents.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/ProjectEvents.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -37,8 +37,11 @@
 @Producer
 public interface ProjectEvents extends EventListener {
 
-    public void created ( String projectId );
+    public void projectCreated( String projectId );
 
+    public void projectLeadAdded( String username, String projectId);
+
     public void updated ( Class clazz , Integer id );
 
+    public void projectContributorAdded(String username, String projectId);
 }

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/service/ProjectEventsGenerator.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/service/ProjectEventsGenerator.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/service/ProjectEventsGenerator.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -36,6 +36,9 @@
 
      public void send () throws Exception;
 
-     public void sendCreated (String projectId) throws NamingException, JMSException;
+     public void projectCreated(String projectId) throws NamingException, JMSException;
 
+     public void projectLeadAdded(String username, String projectId) throws NamingException, JMSException;
+
+     public void contributorAdded(String username, String projectId) throws NamingException, JMSException;
 }
\ No newline at end of file

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-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -334,6 +334,8 @@
         if (getContributors().contains(username)) {
             contributors.remove(username);
             addProjectLead(username);
+        } else {
+            throw new IllegalStateException();
         }
     }
 }

Added: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/LabsRollbackException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/LabsRollbackException.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/LabsRollbackException.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -0,0 +1,44 @@
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ * 
+ * Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+ * 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ * 
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik, 
+ * 	Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+package org.jboss.labs.exception;
+
+import javax.ejb.ApplicationException;
+
+ at ApplicationException(rollback = true)
+public class LabsRollbackException extends LabsException {
+
+    private static final long serialVersionUID = -2775067099734306273L;
+
+    public LabsRollbackException() {
+		super();
+	}
+
+	public LabsRollbackException(String msg) {
+		super(msg);
+	}
+
+	public LabsRollbackException(Throwable t) {
+		super(t);
+	}
+
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/ProjectEventsConsumer.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/ProjectEventsConsumer.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/ProjectEventsConsumer.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -49,13 +49,20 @@
     public ProjectEventsConsumer() {
     }
 
-    public void created(String projectId) {
+    public void projectCreated(String projectId) {
         List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
             for ( ProjectEvents listener : list ) {
-                listener.created( projectId );
+                listener.projectCreated( projectId );
             }
     }
 
+    public void projectLeadAdded(String username, String projectId) {
+    List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
+            for ( ProjectEvents listener : list ) {
+                listener.projectLeadAdded( username, projectId );
+            }
+    }
+
     public void updated(Class clazz, Integer id) {
         List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
         for ( ProjectEvents listener : list ) {
@@ -63,4 +70,11 @@
         }
     }
 
+    public void projectContributorAdded(String username, String projectId) {
+        List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
+        for ( ProjectEvents listener : list ) {
+            listener.projectContributorAdded(username, projectId);
+        }
+    }
+
 }

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-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -6,7 +6,8 @@
 import org.jboss.labs.core.service.ProjectService;
 import org.jboss.labs.exception.admin.CreateProjectException;
 import org.jboss.labs.exception.admin.ProjectNotFoundException;
-import org.jboss.labs.events.ProjectEventsGeneratorBean;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import org.jboss.labs.exception.LabsRollbackException;
 import org.jboss.labs.events.service.ProjectEventsGenerator;
 import org.jboss.labs.injection.ejb3.LabsInjectionInterceptor;
 
@@ -36,7 +37,7 @@
     public ProjectServiceBean() {
     }
 
-    public void createProject(ProjectRequest projectRequest) throws CreateProjectException {
+    public void createProject(ProjectRequest projectRequest) throws CreateProjectException, LabsRollbackException {
          
         String projectId = projectRequest.getProjectId();
 
@@ -65,6 +66,7 @@
         leadUsername.addLeadProject(p);
         p.addProjectLead(leadUsername);
 
+      
         if (projectRequest.isRepository()) {
             p.setAnonymusRepository("http://anonsvn.jboss.org/" + projectId);
             p.setCommiterRepository("https://svn.jboss.org/" + projectId);
@@ -81,12 +83,15 @@
         em.persist(p);
 
         try {
-            projectEventsGenerator.sendCreated(p.getProjectId());
+            projectEventsGenerator.projectCreated(projectId);
+            projectEventsGenerator.projectLeadAdded(leadUsername.getUsername(), projectId);
         } catch (NamingException e) {
-            e.printStackTrace();
+            throw new LabsRollbackException(e);
         } catch (JMSException e) {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+            throw new LabsRollbackException(e);
+            
         }
+
     }
 
     public boolean canJoin(String username, Project project) {
@@ -179,19 +184,47 @@
 
     }
 
-    public void addUserToProject(JoinRequest joinRequest) throws ProjectNotFoundException {
+    public Project merge(Project project) {
 
-        Project p = getProject(joinRequest.getProjectId()); // Yes, we don't need EJB3 call here
+        Project p = em.merge(project);
 
+        return p;
+    }
+
+    public void addUserToProject(JoinRequest joinRequest)
+            throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
+
+        final String projectId = joinRequest.getProjectId();
+        
+        Project p = getProject(projectId); // Yes, we don't need EJB3 call here
+
         Username u = getUsername(joinRequest.getUsername());
 
         p.getContributors().add(u);
+
+         try {
+            projectEventsGenerator.contributorAdded(u.getUsername(), projectId);
+        } catch (NamingException e) {
+            throw new LabsRollbackException(e);
+        } catch (JMSException e) {
+            throw new LabsRollbackException(e);
+
+        }
     }
 
-    public Project merge(Project project) {
+    public void promoteToLead(String projectId, Username contributor)
+            throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
 
-        Project p = em.merge(project);
+         Project p = getProject(projectId); // Yes, we don't need EJB3 call here
 
-        return p;
+         p.promoteToLead(contributor);
+
+         try {
+             projectEventsGenerator.projectLeadAdded(contributor.getUsername(), projectId);
+         } catch (NamingException e) {
+             throw new LabsRollbackException(e);
+         } catch (JMSException e) {
+            throw new LabsRollbackException(e);
+         }
     }
 }

Added: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListener.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListener.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListener.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -0,0 +1,30 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.core.service.impl;
+
+public interface ProjectServiceEventListener {
+
+    public void start() throws Exception;
+    public void stop() throws Exception;
+}
\ No newline at end of file

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceEventListenerBean.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -0,0 +1,98 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.core.service.impl;
+
+import org.jboss.labs.auth.RoleBinderService;
+import org.jboss.labs.auth.UserService;
+import org.jboss.labs.events.service.EventsService;
+import org.jboss.labs.events.ProjectEvents;
+import org.jboss.annotation.ejb.Management;
+import org.jboss.annotation.ejb.Service;
+import org.jboss.logging.Logger;
+
+import javax.ejb.EJB;
+import java.io.Serializable;
+
+ at Service
+ at Management(ProjectServiceEventListener.class)
+public class ProjectServiceEventListenerBean implements
+           ProjectServiceEventListener, Serializable {
+
+    private static final long serialVersionUID = -6781199680538883076L;
+
+    @EJB private EventsService eventsService;
+
+    @EJB private RoleBinderService roleBinderService;
+
+    @EJB private UserService userService;
+
+    private static Logger log = Logger.getLogger(ProjectServiceEventListener.class);    
+
+    private ProjectEventListener listener;
+
+    public ProjectServiceEventListenerBean() {
+    }
+
+    public void start() throws Exception {
+        listener = new ProjectEventListener();
+        eventsService.addEventsListener(ProjectEvents.class, listener);
+        log.info("ProjectServiceEventListener started");
+    }
+
+    public void stop() throws Exception {
+        eventsService.removeEventListener(listener);
+        log.info("ProjectServiceEventListener stopped");
+    }
+
+    class ProjectEventListener implements ProjectEvents, Serializable {
+        private static final long serialVersionUID = -2472280200806077548L;
+
+        public void projectCreated(String projectId) {
+            log.debug("Project projectCreated: " + projectId);
+        }
+
+        public void projectLeadAdded(String username, String projectId) {
+            log.debug("Added project lead: " + username + " project: " + projectId);
+
+//            try {
+//                  roleBinderService.grantUserProjectSuperrole(
+//                           userService.getUserByLogin(username),
+//                           projectId);
+//            } catch (NoSuchUserException e) {
+//                  // shouldn't happen
+//                  throw new IllegalStateException(e);
+//            }
+//            log.debug("Project superrole granted: " + username + " project: " + projectId);
+        }
+
+        public void projectContributorAdded(String username, String projectId) {
+            log.debug("Project contributor added: " + username + " project: " + projectId);
+        }
+
+        public void updated(Class clazz, Integer id) {
+        }
+    }
+
+
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/events/ProjectEventsGeneratorBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/events/ProjectEventsGeneratorBean.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/events/ProjectEventsGeneratorBean.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -68,7 +68,7 @@
         }
     }
 
-    public void sendCreated (String projectId) throws NamingException, JMSException {
+    public void projectCreated(String projectId) throws NamingException, JMSException {
 
         InitialContext ctx = new InitialContext();
         ProjectEvents projectEvents = (ProjectEvents)ctx.lookup(ProjectEvents.class.getName());
@@ -79,7 +79,7 @@
         manager.connect(); // internally create a JMS connection
         try
         {
-            projectEvents.created(projectId);
+            projectEvents.projectCreated(projectId);
         }
         finally
         {
@@ -87,4 +87,44 @@
         }
     }
 
+    public void projectLeadAdded(String username, String projectId) throws NamingException, JMSException {
+
+        InitialContext ctx = new InitialContext();
+        ProjectEvents projectEvents = (ProjectEvents)ctx.lookup(ProjectEvents.class.getName());
+
+        ProducerObject po = (ProducerObject)projectEvents;
+        ProducerManager manager = po.getProducerManager();
+
+        manager.connect(); // internally create a JMS connection
+        try
+        {
+            projectEvents.projectLeadAdded(username, projectId);
+        }
+        finally
+        {
+            manager.close(); // clean up the JMS connection
+        }
+
+    }
+
+    public void contributorAdded(String username, String projectId) throws NamingException, JMSException {
+
+        InitialContext ctx = new InitialContext();
+        ProjectEvents projectEvents = (ProjectEvents)ctx.lookup(ProjectEvents.class.getName());
+
+        ProducerObject po = (ProducerObject)projectEvents;
+        ProducerManager manager = po.getProducerManager();
+
+        manager.connect(); // internally create a JMS connection
+        try
+        {
+            projectEvents.projectContributorAdded(username, projectId);
+        }
+        finally
+        {
+            manager.close(); // clean up the JMS connection
+        }
+
+    }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/Pages.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/Pages.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/Pages.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -39,8 +39,12 @@
     public static final String CREATE_PROJECT_PAGE   = PROJECT_PREFIX + "/createProject.seam";
     public static final String TICKET_PAGE       = PROJECT_PREFIX + "/ticket.seam";
     public static final String PROJECT_PAGE      = PROJECT_PREFIX + "/project.seam";
-    public static final String PROJECTS_PAGE      = PROJECT_PREFIX + "/projects.seam";                                                                      
+    public static final String PROJECTS_PAGE      = PROJECT_PREFIX + "/projects.seam";
 
+    public static final String PROJECT_OVERVIEW_PAGE = PROJECT_PREFIX + "/overview.seam";
+    public static final String MEMEBERS_PAGE      = PROJECT_PREFIX + "/members.seam";
+    public static final String PROMOTE_TO_LEAD_PAGE  = PROJECT_PREFIX + "/promoteToLead.seam";
+
     public static final String JOIN_PROJECT_PAGE = USER_PREFIX + "/joinProject.seam";
     public static final String SIGN_CA_FIRST_PAGE = USER_PREFIX+ "/signCAfirst.seam";
     public static final String JOIN_TICKET_PAGE  = USER_PREFIX + "/joinTicket.seam";
@@ -48,6 +52,4 @@
     public static final String EMAIL_JIRA_REQUEST = EMAIL_PREFIX + "/jiraRequest.xhtml";
     
     public static final String NOTIFICATIONS_PAGE = "/notifications.seam";
-    
-    public static final String PROJECT_OVERVIEW_PAGE = PROJECT_PREFIX + "/overview.seam";
 }

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/MembersManager.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -0,0 +1,76 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.admin.action.project;
+
+import org.jboss.labs.core.model.Link;
+import org.jboss.labs.core.model.Project;
+import org.jboss.labs.core.model.Username;
+import org.jboss.labs.core.service.ProjectService;
+import org.jboss.labs.admin.Pages;
+import org.jboss.labs.injection.seam.Guice;
+import org.jboss.labs.exception.admin.ProjectNotFoundException;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import org.jboss.labs.exception.LabsRollbackException;
+import org.jboss.seam.annotations.*;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.faces.FacesMessages;
+
+import java.io.Serializable;
+
+import com.google.inject.Inject;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+ at Name("membersManager")
+ at Guice
+public class MembersManager implements Serializable {
+
+    private static final long serialVersionUID = 1769748495880658315L;
+
+    @In private Project project;
+
+    @Out(scope = ScopeType.CONVERSATION) private Username contributor;
+
+    @Inject private ProjectService projectService;
+
+    @In private FacesMessages facesMessages;
+
+    public String confirmPromote(Username contributor) {
+
+        this.contributor = contributor;        
+
+        return Pages.PROMOTE_TO_LEAD_PAGE;
+    }
+
+    public String promoteToLead(Username contributor) throws ProjectNotFoundException, NoSuchUserException, LabsRollbackException {
+
+        projectService.promoteToLead(project.getProjectId(), contributor);
+
+        facesMessages.add("User " + contributor.getUsername()
+                                  + " has been promoted to project lead.");
+
+        return Pages.MEMEBERS_PAGE;
+    }
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/UserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/UserManager.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/user/UserManager.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -24,8 +24,6 @@
 package org.jboss.labs.admin.action.user;
 
 import com.google.inject.Inject;
-import org.jboss.labs.core.model.Project;
-import org.jboss.labs.core.model.admin.ProjectRequest;
 import org.jboss.labs.core.model.admin.JoinRequest;
 import org.jboss.labs.core.service.ProjectService;
 import org.jboss.labs.injection.seam.Guice;
@@ -35,9 +33,7 @@
 import org.jboss.seam.annotations.Name;
 import org.jboss.seam.log.Log;
 
-import java.util.List;
 
-
 @Name("userManager")
 @Guice
 public class UserManager {
@@ -55,6 +51,8 @@
         } catch (ProjectNotFoundException e) {
             log.warn(e);
             return false;
+        } catch (Exception e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
 
         return true;

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java	2008-02-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java	2008-02-28 14:50:46 UTC (rev 18613)
@@ -75,7 +75,7 @@
 
         if (user == null) {
             try {
-            user = userService.getUserByLogin(login);
+                user = userService.getUserByLogin(login);
             } catch (NoSuchUserException e) {
                 user = new User(); //TODO get rid of this 2 lines
                 user.setName(actor.getId());

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-28 13:55:06 UTC (rev 18612)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/members.xhtml	2008-02-28 14:50:46 UTC (rev 18613)
@@ -42,7 +42,6 @@
                     <h:commandLink action="#{joinProject.join}" value="Join!"
                                    rendered="#{project.canJoin(user.name)}"/>
         <br/>
-        <ui:include src="saveButtons.xhtml"/>
     </h:form>
 
 </ui:define> 

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/promoteToLead.xhtml	2008-02-28 14:50:46 UTC (rev 18613)
@@ -0,0 +1,24 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<ui:composition 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">
+
+<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>
+    
+</ui:define> 
+</ui:composition>




More information about the jboss-svn-commits mailing list