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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 27 05:55:02 EST 2008


Author: wrzep
Date: 2008-02-27 05:55:02 -0500 (Wed, 27 Feb 2008)
New Revision: 18602

Added:
   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/services/project-service/src/main/java/org/jboss/labs/events/ProjectEventsGeneratorBean.java
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml
   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-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/exception/admin/CreateProjectException.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/events-service/src/main/java/org/jboss/labs/events/service/impl/EventListenersStorageService.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/views/admin/src/main/java/org/jboss/labs/admin/action/project/RequestProject.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/ShowView.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/overview.xhtml
Log:
JBLAB-929 create project -> send JMS event


Modified: labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml	2008-02-27 10:55:02 UTC (rev 18602)
@@ -30,7 +30,13 @@
 			<version>2.3</version>
 			<scope>provided</scope>
 		</dependency>
-		<dependency>
+        <dependency>
+			<groupId>javax.jms</groupId>
+			<artifactId>jms</artifactId>
+			<version>1.1</version>
+			<scope>provided</scope>
+		</dependency>
+        <dependency>
 			<groupId>javax.faces</groupId>
 			<artifactId>jsf-api</artifactId>
 			<version>1.1_02</version>

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-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/ProjectEvents.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -32,10 +32,13 @@
  * raise events informing about changes in project's structure.
  * 
  * @author <a href="mailto:rkozmik at redhat.com">Ryszard Kozmik</a>
+ * @author Pawel Wrzeszcz
  */
 @Producer
 public interface ProjectEvents extends EventListener {
 
+    public void created ( String projectId );
+
     public void updated ( Class clazz , Integer id );
 
 }

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/events/service/ProjectEventsGenerator.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -0,0 +1,41 @@
+/*
+* 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.events.service;
+
+import javax.ejb.Local;
+import javax.naming.NamingException;
+import javax.jms.JMSException;
+import java.util.EventListener;
+
+/**
+ * @author Pawel Wrzeszcz
+ */
+ at Local
+public interface ProjectEventsGenerator {
+
+     public void send () throws Exception;
+
+     public void sendCreated (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-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/Project.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -23,14 +23,14 @@
 
 package org.jboss.labs.core.model;
 
-import org.jboss.labs.core.model.auth.User;
-
 import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 import java.util.ArrayList;
 
+import static javax.persistence.CascadeType.*;
+
 @Entity
 public class Project implements Serializable {
     
@@ -50,28 +50,28 @@
     private String anonymusRepository;
     private String commiterRepository;
     private RepositoryType repositoryType;
-    @OneToOne(cascade = CascadeType.PERSIST)
+    @OneToOne(cascade = PERSIST)
     private IssueTracker issueTracker;
-    @ManyToMany(cascade = CascadeType.PERSIST)
+    @ManyToMany(cascade = PERSIST)
     private List<License> licenseList;
-    @ManyToMany(cascade = CascadeType.PERSIST)
+    @ManyToMany(cascade = PERSIST)
     private List<ContributorAgreement> requiredContributorAgreementList;
-    @OneToMany(cascade = CascadeType.PERSIST)
+    @OneToMany(cascade = {PERSIST, MERGE})
     private List<Link> linkList;
-    @OneToMany(mappedBy = "project", cascade = CascadeType.PERSIST)
+    @OneToMany(mappedBy = "project", cascade = PERSIST)
     private List<Blog> blogList;
-    @OneToMany(mappedBy = "project", cascade = CascadeType.PERSIST)
+    @OneToMany(mappedBy = "project", cascade = PERSIST)
     private List<Release> releaseList;
-    @OneToOne(cascade = CascadeType.PERSIST)
+    @OneToOne(cascade = PERSIST)
     private Forum devForum;
-    @OneToOne(cascade = CascadeType.PERSIST)
+    @OneToOne(cascade = PERSIST)
     private Forum userForum;
-    @OneToOne(cascade = CascadeType.PERSIST)
+    @OneToOne(cascade = PERSIST)
     private Blog mainBlog;
-    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
+    @ManyToMany(cascade = {PERSIST, MERGE})
     @JoinTable(name = "Project_Contributor")
     private List<Username> contributors;
-    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
+    @ManyToMany(cascade = {PERSIST, MERGE})
     @JoinTable(name = "Project_ProjectLead")
     private List<Username> projectLeads;
 

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/CreateProjectException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/CreateProjectException.java	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/admin/CreateProjectException.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -25,9 +25,12 @@
 
 import org.jboss.labs.exception.LabsException;
 
+import javax.ejb.ApplicationException;
+
 /**
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
+ at ApplicationException(rollback = true)
 public class CreateProjectException extends LabsException {
 
     private static final long serialVersionUID = -2581633483286436366L;

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-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/ProjectEventsConsumer.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -49,6 +49,13 @@
     public ProjectEventsConsumer() {
     }
 
+    public void created(String projectId) {
+        List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
+            for ( ProjectEvents listener : list ) {
+                listener.created( projectId );
+            }
+    }
+
     public void updated(Class clazz, Integer id) {
         List<ProjectEvents> list = storage.findAllListeners (((ProjectEvents)this).getClass());
         for ( ProjectEvents listener : list ) {

Modified: labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/service/impl/EventListenersStorageService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/service/impl/EventListenersStorageService.java	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/services/events-service/src/main/java/org/jboss/labs/events/service/impl/EventListenersStorageService.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -23,10 +23,7 @@
 
 package org.jboss.labs.events.service.impl;
 
-import java.util.EventListener;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import javax.ejb.Remote;
 
@@ -41,7 +38,7 @@
 @Remote(EventListenersStorageServiceRemote.class)
 public class EventListenersStorageService implements EventListenersStorageServiceRemote {
 
-    private Set<Entry> listeners;
+    private Set<Entry> listeners = new HashSet<Entry>();
 
     public EventListenersStorageService() {
     }

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-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/core/service/impl/ProjectServiceBean.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -6,24 +6,33 @@
 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.events.service.ProjectEventsGenerator;
+import org.jboss.labs.injection.ejb3.LabsInjectionInterceptor;
 
-import javax.ejb.Stateless;
 import javax.ejb.Stateful;
+import javax.ejb.EJB;
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.PersistenceContextType;
+import javax.interceptor.Interceptors;
+import javax.naming.NamingException;
+import javax.jms.JMSException;
 import java.util.*;
 
 @Stateful(name="ProjectService")
 @WebService(endpointInterface="org.jboss.labs.core.service.ProjectWebService")
+ at Interceptors({LabsInjectionInterceptor.class})
 public class ProjectServiceBean implements ProjectService {
                                          //  ProjectServiceWebService {
     
     @PersistenceContext(unitName = "core_model", type = PersistenceContextType.EXTENDED)
     private EntityManager em;
 
+    @EJB private ProjectEventsGenerator projectEventsGenerator;
+
     public ProjectServiceBean() {
     }
 
@@ -70,6 +79,14 @@
         // TODO forums
 
         em.persist(p);
+
+        try {
+            projectEventsGenerator.sendCreated(p.getProjectId());
+        } catch (NamingException e) {
+            e.printStackTrace();
+        } catch (JMSException e) {
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
     }
 
     public boolean canJoin(String username, Project project) {

Added: 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	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/src/main/java/org/jboss/labs/events/ProjectEventsGeneratorBean.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -0,0 +1,90 @@
+/*
+* 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.events;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.ejb.Stateless;
+import javax.jms.JMSException;
+
+import org.jboss.ejb3.mdb.ProducerObject;
+import org.jboss.ejb3.mdb.ProducerManager;
+import org.jboss.labs.events.service.ProjectEventsGenerator;
+
+
+/**
+ * This class generates project's events by executing asynchronous methods of ProjectEvents producer.
+ * 
+ * @author <a href="mailto:rkozmik at redhat.com">Ryszard Kozmik</a>
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+ at Stateless
+public class ProjectEventsGeneratorBean implements ProjectEventsGenerator {
+
+    /**
+     * Just an example of how to send an event.
+     * 
+     * TODO: This is just a dummy implementation for tests.
+     * 
+     * @throws Exception
+     */
+    public void send () throws Exception {
+    
+        InitialContext ctx = new InitialContext();
+        ProjectEvents tester = (ProjectEvents)ctx.lookup(ProjectEvents.class.getName());
+        
+        ProducerObject po = (ProducerObject)tester;
+        ProducerManager manager = po.getProducerManager();
+        
+        manager.connect(); // internally create a JMS connection
+        try
+        {
+            tester.updated( getClass() , new Integer(1));
+        }
+        finally
+        {
+            manager.close(); // clean up the JMS connection
+        }
+    }
+
+    public void sendCreated (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.created(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/action/project/RequestProject.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/RequestProject.java	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/RequestProject.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -37,7 +37,6 @@
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
 @Name("requestProject")
-//@Scope(ScopeType.CONVERSATION)
 public class RequestProject {
 
     @In private ProjectRequest req;
@@ -49,8 +48,6 @@
 
     @In(create = true) private EntityManager entityManager;
 
-    static int counter = 0;
-
     @End
     @CreateProcess(definition = "createProject")
     public String request() {
@@ -63,7 +60,7 @@
 
         projectRequestId = req.getId();
 
-        facesMessages.add("Your request has been sent to BMW. " + counter++);
+        facesMessages.add("Your request has been sent to BMW. ");
 
         return Pages.CONFIRMATION_PAGE;
     }

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/ShowView.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/ShowView.java	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/action/project/ShowView.java	2008-02-27 10:55:02 UTC (rev 18602)
@@ -41,11 +41,8 @@
 
     @In private Conversation conversation;
 
- //   @Begin(nested=true)
     public String show(String description) {
 
-   //     conversation.setDescription(description);
-
         String page = ((Character) description.charAt(0)).toString().toLowerCase()
                 .concat(description.substring(1));
 

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/overview.xhtml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/overview.xhtml	2008-02-26 21:36:07 UTC (rev 18601)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/project/overview.xhtml	2008-02-27 10:55:02 UTC (rev 18602)
@@ -80,9 +80,7 @@
         </table>
         <h:commandButton value="Save" action="#{saveProject.save('/project/project.seam')}"/>
         <h:commandButton value="Apply" action="#{saveProject.save('')}"/>
-        <h:commandButton value="Cancel" action="/project/project.seam">
-            <s:conversationPropagation type="end"/>
-        </h:commandButton>
+        <h:commandButton value="Cancel" action="/project/project.seam"/>
     </h:form>
 
 </ui:define> 




More information about the jboss-svn-commits mailing list