[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