Author: woonsan
Date: Thu Apr 8 18:04:55 2010
New Revision: 932038
URL: http://svn.apache.org/viewvc?rev=932038&view=rev
Log:
JS2-1180: Adding geronimo-javamail_1.4_provider because we cannot send an email
without it.
FYI, to replace the javamail by geronimo-javamail, we need both
geronimo-javamail_1.4_spec and geronimo-javamail_1.4_provider.
Also, improve the test case to verify this.
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/pom.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/administration/TestPortalAdministrationImpl.java
portals/jetspeed-2/portal/trunk/pom.xml
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/pom.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/pom.xml?rev=932038&r1=932037&r2=932038&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/pom.xml
(original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/pom.xml Thu Apr
8 18:04:55 2010
@@ -132,6 +132,10 @@
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.javamail</groupId>
+ <artifactId>geronimo-javamail_1.4_provider</artifactId>
+ </dependency>
+ <dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
</dependency>
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java?rev=932038&r1=932037&r2=932038&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
Thu Apr 8 18:04:55 2010
@@ -442,7 +442,7 @@ public class PortalAdministrationImpl im
catch (MailException ex)
{
throw new AdministrationEmailException(
- "Failed to send forgotten password email to user with
email address because "+ex.getMessage()
+ "Failed to send forgotten password email to user with
email address because "+ex.getMessage(), ex
); //+ user.getEmail());
}
}
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/administration/TestPortalAdministrationImpl.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/administration/TestPortalAdministrationImpl.java?rev=932038&r1=932037&r2=932038&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/administration/TestPortalAdministrationImpl.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/administration/TestPortalAdministrationImpl.java
Thu Apr 8 18:04:55 2010
@@ -16,23 +16,39 @@
*/
package org.apache.jetspeed.administration;
+import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.mail.Address;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.NoSuchProviderException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.URLName;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.jetspeed.aggregator.TestWorkerMonitor;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
-
+/**
+ * TestPortalAdministrationImpl
+ *
+ * @version $Id$
+ */
public class TestPortalAdministrationImpl extends TestCase
-
{
-
+ private String smtpHost;
public static void main(String args[])
{
@@ -43,8 +59,11 @@ public class TestPortalAdministrationImp
{
super.setUp();
-
-
+ // If the following sys property is provided (e.g.
'-DTestPortalAdministrationImpl.smtp.host=localhost')
+ // and if the destination smtp server is provided, then
+ // this test case will send message to the target server.
+ // Otherwise, by default, this test case uses a mock object.
+ smtpHost =
System.getProperty("TestPortalAdministrationImpl.smtp.host");
}
public static Test suite()
@@ -62,10 +81,52 @@ public class TestPortalAdministrationImp
}
- public void xtestSendEmail() throws Exception {
- PortalAdministrationImpl pai = new
PortalAdministrationImpl(null,null,null,null,null,null,null,null);
- pai.sendEmail("[email protected]","this is a
unittest","[email protected]","this is the content of the message");
+ public void testSendEmail() throws Exception
+ {
+ JavaMailSenderImpl javaMailSender = null;
+ if (smtpHost != null)
+ {
+ javaMailSender = new JavaMailSenderImpl();
+ javaMailSender.setHost(smtpHost);
+ }
+ else
+ {
+ javaMailSender = new MockJavaMailSender();
+ javaMailSender.setHost("mocksmtpserver");
+ }
+
+ PortalAdministrationImpl pai = new
PortalAdministrationImpl(null,null,null,null,null,null,javaMailSender,null);
+ pai.sendEmail("[email protected]","this is a
unittest","[email protected]","this is the content of the message");
+
+ if (javaMailSender instanceof MockJavaMailSender)
+ {
+ MockJavaMailSender mockJavaMailSender = (MockJavaMailSender)
javaMailSender;
+
+ assertTrue(mockJavaMailSender.transport.isCloseCalled());
+
+ assertEquals(1,
mockJavaMailSender.transport.getSentMessages().size());
+
+ MimeMessage sentMessage =
mockJavaMailSender.transport.getSentMessage(0);
+
+ List<Address> froms = Arrays.asList(sentMessage.getFrom());
+ assertEquals(1, froms.size());
+ assertEquals("[email protected]", ((InternetAddress)
froms.get(0)).getAddress());
+
+ List<Address> tos =
Arrays.asList(sentMessage.getRecipients(Message.RecipientType.TO));
+ assertEquals(1, tos.size());
+ assertEquals("[email protected]", ((InternetAddress)
tos.get(0)).getAddress());
+
+ assertEquals("this is a unittest", sentMessage.getSubject());
+
+ assertEquals("this is the content of the message",
sentMessage.getContent());
+
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+ sentMessage.writeTo(output);
+ String payload = new String(output.toByteArray());
+
+ System.out.println("Mail message payload:\n\n" + payload + "\n");
+ }
}
// this needs too much init to test easily right now
@@ -88,5 +149,103 @@ public class TestPortalAdministrationImp
}
+ private static class MockJavaMailSender extends JavaMailSenderImpl
+ {
+ private MockTransport transport;
+ @Override
+ protected Transport getTransport(Session session) throws
NoSuchProviderException
+ {
+ this.transport = new MockTransport(session, null);
+ return transport;
+ }
+ }
+
+ private static class MockTransport extends Transport
+ {
+ private String connectedHost = null;
+ private int connectedPort = -2;
+ private String connectedUsername = null;
+ private String connectedPassword = null;
+ private boolean closeCalled = false;
+ private List<Message> sentMessages = new ArrayList<Message>();
+
+ private MockTransport(Session session, URLName urlName)
+ {
+ super(session, urlName);
+ }
+
+ public String getConnectedHost()
+ {
+ return connectedHost;
+ }
+
+ public int getConnectedPort()
+ {
+ return connectedPort;
+ }
+
+ public String getConnectedUsername()
+ {
+ return connectedUsername;
+ }
+
+ public String getConnectedPassword()
+ {
+ return connectedPassword;
+ }
+
+ public boolean isCloseCalled()
+ {
+ return closeCalled;
+ }
+
+ public List<Message> getSentMessages()
+ {
+ return sentMessages;
+ }
+
+ public MimeMessage getSentMessage(int index)
+ {
+ return (MimeMessage) this.sentMessages.get(index);
+ }
+
+ @Override
+ public void connect(String host, int port, String username, String
password) throws MessagingException
+ {
+ if (host == null)
+ {
+ throw new MessagingException("no host");
+ }
+
+ this.connectedHost = host;
+ this.connectedPort = port;
+ this.connectedUsername = username;
+ this.connectedPassword = password;
+ }
+
+ @Override
+ public synchronized void close() throws MessagingException
+ {
+ this.closeCalled = true;
+ }
+
+ @Override
+ public void sendMessage(Message message, Address[] addresses) throws
MessagingException
+ {
+ List<Address> addr1 = Arrays.asList(message.getAllRecipients());
+ List<Address> addr2 = Arrays.asList(addresses);
+
+ if (!addr1.equals(addr2))
+ {
+ throw new MessagingException("addresses not correct");
+ }
+
+ if (message.getSentDate() == null) {
+ throw new MessagingException("No sentDate specified");
+ }
+
+ this.sentMessages.add(message);
+ }
+ }
}
Modified: portals/jetspeed-2/portal/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/pom.xml?rev=932038&r1=932037&r2=932038&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/pom.xml (original)
+++ portals/jetspeed-2/portal/trunk/pom.xml Thu Apr 8 18:04:55 2010
@@ -263,6 +263,7 @@
<hsqldb.version>1.8.0.2</hsqldb.version>
<javolution.version>4.0.2</javolution.version>
<geronimo-javamail_1.4_spec.version>1.6</geronimo-javamail_1.4_spec.version>
+
<geronimo-javamail_1.4_provider.version>1.7</geronimo-javamail_1.4_provider.version>
<javax.activation.version>1.1</javax.activation.version>
<javax.servlet.jstl.version>1.1.2</javax.servlet.jstl.version>
<geronimo-servlet_2.4_spec.version>1.1.1</geronimo-servlet_2.4_spec.version>
@@ -1233,6 +1234,11 @@
<version>${geronimo-javamail_1.4_spec.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.javamail</groupId>
+ <artifactId>geronimo-javamail_1.4_provider</artifactId>
+ <version>${geronimo-javamail_1.4_provider.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
<version>${geronimo-activation_1.1_spec.version}</version>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]