You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by lh...@apache.org on 2008/09/10 12:48:07 UTC
svn commit: r693780 - in
/servicemix/components/bindings/servicemix-mail/trunk/src:
main/java/org/apache/servicemix/mail/
main/java/org/apache/servicemix/mail/marshaler/
test/java/org/apache/servicemix/mail/
Author: lhein
Date: Wed Sep 10 03:48:06 2008
New Revision: 693780
URL: http://svn.apache.org/viewvc?rev=693780&view=rev
Log:
applied patch for the following issues:
- SM-1568
- SM-1569
thanks to Ivan Pryvalov for the help
Modified:
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/DefaultMailMarshaler.java
servicemix/components/bindings/servicemix-mail/trunk/src/test/java/org/apache/servicemix/mail/DefaultMailMarshalerTest.java
Modified: servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java?rev=693780&r1=693779&r2=693780&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java (original)
+++ servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/MailSenderEndpoint.java Wed Sep 10 03:48:06 2008
@@ -101,6 +101,14 @@
// debug the session
session.setDebug(this.debugMode);
+ // get the transport from session
+ Transport transport = session.getTransport(config.getProtocol());
+
+ // Connect only once here
+ // Transport.send() disconnects after each send
+ // Usually, no username and password is required for SMTP
+ transport.connect(config.getHost(), config.getPort(), config.getUsername(), config.getPassword());
+
// Define message
MimeMessage msg = new MimeMessage(session);
@@ -108,13 +116,16 @@
this.marshaler.convertJBIToMail(msg, exchange, in, this.sender, this.receiver);
// Send message
- Transport.send(msg);
+ transport.sendMessage(msg, msg.getAllRecipients());
+
+ // close transport
+ transport.close();
} catch (MessagingException mex) {
logger.error("Error sending mail...", mex);
throw mex;
} finally {
// delete all temporary allocated resources
- this.marshaler.cleanUpResources();
+ this.marshaler.cleanUpResources(exchange.getExchangeId());
}
}
}
@@ -150,6 +161,14 @@
// debug the session
session.setDebug(this.debugMode);
+ // get the transport from session
+ Transport transport = session.getTransport(config.getProtocol());
+
+ // Connect only once here
+ // Transport.send() disconnects after each send
+ // Usually, no username and password is required for SMTP
+ transport.connect(config.getHost(), config.getPort(), config.getUsername(), config.getPassword());
+
// Define message
MimeMessage msg = new MimeMessage(session);
@@ -157,7 +176,10 @@
this.marshaler.convertJBIToMail(msg, exchange, in, this.sender, this.receiver);
// Send message
- Transport.send(msg);
+ transport.sendMessage(msg, msg.getAllRecipients());
+
+ // close transport
+ transport.close();
// quit the exchange
out.setContent(new StringSource("<ack />"));
@@ -166,7 +188,7 @@
throw mex;
} finally {
// delete all temporary allocated resources
- this.marshaler.cleanUpResources();
+ this.marshaler.cleanUpResources(exchange.getExchangeId());
}
}
}
Modified: servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java?rev=693780&r1=693779&r2=693780&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java (original)
+++ servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/AbstractMailMarshaler.java Wed Sep 10 03:48:06 2008
@@ -18,6 +18,7 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -165,7 +166,7 @@
*/
public static final String DUMMY_CONTENT = "no content";
- private List<File> temporaryFiles = new ArrayList<File>();
+ private Map< String, List<File> > temporaryFilesMap = Collections.synchronizedMap(new HashMap<String, List<File> >());
/**
* This method is used to convert a mime mail message received via an
@@ -234,21 +235,31 @@
}
/**
- * adds a temporary file resource to the list
+ * adds a temporary file resource to the list of to be cleaned up resources
*
- * @param tmpFile the temporary file to delete after sending mail
+ * @param id the id of the message exchange
+ * @param tmpFile the temp resource
*/
- protected final void addTemporaryResource(File tmpFile) {
- this.temporaryFiles.add(tmpFile);
- }
-
+ protected final void addTemporaryResource(String id, File tmpFile) {
+ if (!this.temporaryFilesMap.containsKey(id)) {
+ this.temporaryFilesMap.put(id, new ArrayList<File>());
+ }
+ this.temporaryFilesMap.get(id).add(tmpFile);
+ }
+
/**
- * deletes all temporary resources
+ * deletes all temporary resources of a given exchange id
+ *
+ * @param id the exchange id
*/
- public final void cleanUpResources() {
- for (File f : this.temporaryFiles) {
- f.delete();
+ public final void cleanUpResources(String id) {
+ List<File> list = this.temporaryFilesMap.get(id);
+ if (list != null) {
+ for (File f : list) {
+ f.delete();
+ }
+ list.clear();
+ this.temporaryFilesMap.remove(id);
}
- this.temporaryFiles.clear();
}
}
Modified: servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/DefaultMailMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/DefaultMailMarshaler.java?rev=693780&r1=693779&r2=693780&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/DefaultMailMarshaler.java (original)
+++ servicemix/components/bindings/servicemix-mail/trunk/src/main/java/org/apache/servicemix/mail/marshaler/DefaultMailMarshaler.java Wed Sep 10 03:48:06 2008
@@ -37,11 +37,11 @@
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
-import javax.mail.util.ByteArrayDataSource;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
+import javax.mail.util.ByteArrayDataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -143,7 +143,7 @@
log.debug("Saved temp file: " + f.getName() + " with length: " + f.length());
// add the file to the temporary resources list
- addTemporaryResource(f);
+ addTemporaryResource(exchange.getExchangeId(), f);
// Create another body part
messageBodyPart = new MimeBodyPart();
// Set the data handler to the attachment
Modified: servicemix/components/bindings/servicemix-mail/trunk/src/test/java/org/apache/servicemix/mail/DefaultMailMarshalerTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-mail/trunk/src/test/java/org/apache/servicemix/mail/DefaultMailMarshalerTest.java?rev=693780&r1=693779&r2=693780&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-mail/trunk/src/test/java/org/apache/servicemix/mail/DefaultMailMarshalerTest.java (original)
+++ servicemix/components/bindings/servicemix-mail/trunk/src/test/java/org/apache/servicemix/mail/DefaultMailMarshalerTest.java Wed Sep 10 03:48:06 2008
@@ -109,7 +109,7 @@
MimeMessage mail = prepareTextMail(false);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -132,7 +132,7 @@
MimeMessage mail = prepareHTMLMail(false);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -155,7 +155,7 @@
MimeMessage mail = prepareBothMail(false);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -180,7 +180,7 @@
MimeMessage mail = prepareTextMail(true);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -216,7 +216,7 @@
MimeMessage mail = prepareHTMLMail(true);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -253,7 +253,7 @@
MimeMessage mail = prepareBothMail(true);
// prepare the jbi objects
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// do conversion
@@ -287,7 +287,7 @@
*/
public void testJbiToPlainText() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -325,7 +325,7 @@
*/
public void testJbiToHTML() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -364,7 +364,7 @@
*/
public void testJbiToBoth() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -407,7 +407,7 @@
*/
public void testRawTextToMail() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -445,7 +445,7 @@
*/
public void testRawHTMLToMail() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -483,7 +483,7 @@
*/
public void testJbiWithAttachmentsToPlainText() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -533,7 +533,7 @@
*/
public void testJbiWithAttachmentsToHTML() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -583,7 +583,7 @@
*/
public void testJbiWithAttachmentsToBoth() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -637,7 +637,7 @@
*/
public void testRawTextWithAttachmentsToMail() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers
@@ -687,7 +687,7 @@
*/
public void testRawHTMLWithAttachmentsToMail() throws Exception {
MimeMessage mail = new MimeMessage(session);
- InOnly exchange = new InOnlyImpl();
+ InOnly exchange = new InOnlyImpl("id");
NormalizedMessage nmsg = exchange.createMessage();
// prepare headers