[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