[jboss-svn-commits] JBL Code SVN: r18652 - in labs/jbosslabs/labs-3.0-build/services: email-service and 16 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Mar 1 15:36:53 EST 2008
Author: unibrew
Date: 2008-03-01 15:36:53 -0500 (Sat, 01 Mar 2008)
New Revision: 18652
Added:
labs/jbosslabs/labs-3.0-build/services/email-service/
labs/jbosslabs/labs-3.0-build/services/email-service/pom.xml
labs/jbosslabs/labs-3.0-build/services/email-service/src/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/EmailSenderServiceInterface.java
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailSenderService.java
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailServiceImpl.java
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/META-INF/
labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/META-INF/persistence.xml
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/labs/
labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/labs/AppTest.java
Log:
[JBLAB-912] Email notification service itself.
Added: labs/jbosslabs/labs-3.0-build/services/email-service/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/pom.xml (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/pom.xml 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?><project>
+ <parent>
+ <artifactId>services</artifactId>
+ <groupId>org.jboss.labs</groupId>
+ <version>1.0</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.labs</groupId>
+ <artifactId>email-service</artifactId>
+ <name>JBoss Labs service</name>
+ <version>1.0-SNAPSHOT</version>
+ <url>http://maven.apache.org</url>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.jboss.labs</groupId>
+ <artifactId>maven-labs-plugin</artifactId>
+ <configuration>
+ <fileFinalName>${project.build.finalName}.ejb3</fileFinalName>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jbossall-client</artifactId>
+ <version>4.2.2.GA</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
+
Added: labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/EmailSenderServiceInterface.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/EmailSenderServiceInterface.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/EmailSenderServiceInterface.java 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,40 @@
+/*
+* 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.email.service;
+
+/**
+ *
+ * This interface describes an email sending service.
+ *
+ * @author <a href="ryszard.kozmik at jboss.com">Ryszard Kozmik</a>
+ *
+ */
+public interface EmailSenderServiceInterface
+{
+
+ void start () throws Exception;
+ void stop ();
+ void test();
+
+}
Added: labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailSenderService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailSenderService.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailSenderService.java 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,114 @@
+/*
+* 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.email.service.impl;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.Local;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.Message.RecipientType;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+import org.jboss.annotation.ejb.Depends;
+import org.jboss.annotation.ejb.Management;
+import org.jboss.annotation.ejb.Service;
+import org.jboss.labs.auth.UserService;
+import org.jboss.labs.core.model.auth.User;
+import org.jboss.labs.email.service.EmailSenderServiceInterface;
+import org.jboss.labs.email.service.EmailService;
+import org.jboss.labs.events.EmailEvents;
+import org.jboss.labs.events.service.EventsService;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+
+/**
+ * This MBean service consumes JMS EmailEvents and sends emails to users.
+ *
+ * @author <a href="ryszard.kozmik at jboss.com">Ryszard Kozmik</a>
+ *
+ */
+ at Service
+ at Local(EmailSenderServiceInterface.class)
+ at Management(EmailSenderServiceInterface.class)
+ at Depends("jboss.j2ee:jar=events-service-1.0-SNAPSHOT.ejb3,name=EventsServiceBean,service=EJB3")
+public class EmailSenderService implements EmailSenderServiceInterface
+{
+
+ @EJB EventsService eventsService;
+ @EJB UserService userService;
+ @EJB EmailService emailService;
+ @Resource(mappedName="java:Mail") Session session;
+
+ private EmailEvents emailEventsListener;
+
+ public void start () throws Exception
+ {
+ emailEventsListener = new EmailEvents() {
+
+ public void emailUser(User user, String subject, String message)
+ {
+ if (user.getEmail()==null || user.getEmail().trim().length()==0)
+ return;
+ try {
+ MimeMessage m = new MimeMessage(session);
+ m.setSubject(subject);
+ m.setContent(message,"text/html; charset=\"UTF-8\"");
+ m.setSentDate(new Date());
+ InternetAddress[] to = new InternetAddress[] { new InternetAddress(user.getEmail()) };
+ m.setRecipients(RecipientType.TO, to);
+ Transport.send(m);
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+
+ };
+ eventsService.addEventsListener(this.getClass(),emailEventsListener);
+ }
+
+ public void test () {
+ try {
+ User user = userService.getUserByLogin("admin");
+ Set<User> users = new HashSet<User>();
+ users.add(user);
+ emailService.sendEmailToUsers(users, "ELO", "SHEEESH");
+ } catch (NoSuchUserException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void stop ()
+ {
+ eventsService.removeEventListener(emailEventsListener);
+ }
+
+}
Added: labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailServiceImpl.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/src/main/java/org/jboss/labs/email/service/impl/EmailServiceImpl.java 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,88 @@
+/*
+* 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.email.service.impl;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.ejb.Local;
+import javax.naming.InitialContext;
+
+import org.jboss.annotation.ejb.Service;
+import org.jboss.ejb3.mdb.ProducerManager;
+import org.jboss.ejb3.mdb.ProducerObject;
+import org.jboss.labs.core.model.auth.User;
+import org.jboss.labs.email.service.EmailService;
+import org.jboss.labs.events.EmailEvents;
+
+/**
+ * This is a Stateless Session Bean that enables other services to register/unregister
+ * event listeners for different types of event types.
+ *
+ * @author <a href="mailto:rkozmik at redhat.com">Ryszard Kozmik</a>
+ */
+ at Service
+ at Local(EmailService.class)
+public class EmailServiceImpl implements EmailService
+{
+
+ /**
+ * This method sends an email with a given message and subject to all users in a given Set.
+ *
+ * @param users a Set of users to which email will be sent
+ * @param subject a subject of the email
+ * @param message a text content of the email
+ *
+ * @throws Exception - if something will go wrong with JMS EventService an Exception will be thrown
+ *
+ */
+ public void sendEmailToUsers(Set<User> users, String subject, String message) throws Exception
+ {
+ ProducerManager manager = null;
+ try
+ {
+ InitialContext ctx = new InitialContext();
+ EmailEvents producer = (EmailEvents)ctx.lookup(EmailEvents.class.getName());
+
+ ProducerObject po = (ProducerObject)producer;
+ manager = po.getProducerManager();
+
+ manager.connect(); // internally create a JMS connection
+
+ for (Iterator iter = users.iterator(); iter.hasNext();)
+ {
+ User user = (User) iter.next();
+ producer.emailUser(user, subject, message);
+ }
+ } catch (Exception e) {
+ throw new Exception("I could not email users due to problem with JMS Events Service.",e);
+ }
+ finally
+ {
+ manager.close(); // clean up the JMS connection
+ }
+
+ }
+
+}
Added: labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/src/main/resources/META-INF/persistence.xml 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence>
+ <persistence-unit name="email-service_model">
+ <jta-data-source>java:/LabsDS</jta-data-source>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
+ <property name="hibernate.hbm2ddl.auto" value="update" />
+ </properties>
+ <!-- SPECIFY ENTITY CLASSES -->
+
+ <!-- <class>org.jboss.labs.foo.FooEntity</class> -->
+ </persistence-unit>
+</persistence>
+
Added: labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/labs/AppTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/labs/AppTest.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/services/email-service/src/test/java/org/jboss/labs/AppTest.java 2008-03-01 20:36:53 UTC (rev 18652)
@@ -0,0 +1,38 @@
+package org.jboss.labs;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+ extends TestCase
+{
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ /**
+ * @return the suite of tests being tested
+ */
+ public static Test suite()
+ {
+ return new TestSuite( AppTest.class );
+ }
+
+ /**
+ * Rigourous Test :-)
+ */
+ public void testApp()
+ {
+ assertTrue( true );
+ }
+}
More information about the jboss-svn-commits
mailing list