Author: davsclaus
Date: Sat May 3 04:32:42 2008
New Revision: 653053
URL: http://svn.apache.org/viewvc?rev=653053&view=rev
Log:
CAMEL-335
- refactored camel-mail
- mail consumers will not under the covers change from smtp to pop3 protocol.
End-users need to change their URI to state correct protocol
- added better debug logging of minemessages
Added:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
(with props)
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailConnection.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailUtils.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderAccessException.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderNamesAccessException.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/RuntimeMailException.java
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProcessOnlyUnseenMessagesTest.java
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailSubjectTest.java
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MultipleDestinationConsumeTest.java
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailConnection.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailConnection.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailConnection.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/JavaMailConnection.java
Sat May 3 04:32:42 2008
@@ -26,7 +26,8 @@
/**
* An extension of Spring's [EMAIL PROTECTED] JavaMailSenderImpl} to provide
helper methods
* for listening for new mail
- *
+ *
+ * @deprecated use Spring [EMAIL PROTECTED] JavaMailSenderImpl} directly
* @version $Revision$
*/
public class JavaMailConnection extends JavaMailSenderImpl {
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailBinding.java
Sat May 3 04:32:42 2008
@@ -123,6 +123,8 @@
org.apache.camel.Message
camelMessage)
throws MessagingException {
+ // TODO: Use spring mail support to add the attachment
+
// Create a Multipart
MimeMultipart multipart = new MimeMultipart();
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
Sat May 3 04:32:42 2008
@@ -22,6 +22,7 @@
import javax.mail.Session;
import org.apache.camel.RuntimeCamelException;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
/**
* Represents the configuration data for communicating over email
@@ -93,8 +94,8 @@
}
}
- public JavaMailConnection createJavaMailConnection(MailEndpoint
mailEndpoint) {
- JavaMailConnection answer = new JavaMailConnection();
+ protected JavaMailSenderImpl createJavaMailSender() {
+ JavaMailSenderImpl answer = new JavaMailSenderImpl();
if (defaultEncoding != null) {
answer.setDefaultEncoding(defaultEncoding);
}
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
Sat May 3 04:32:42 2008
@@ -20,14 +20,15 @@
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
-import javax.mail.event.MessageCountEvent;
-import javax.mail.event.MessageCountListener;
+import javax.mail.Store;
+import javax.mail.FolderNotFoundException;
import javax.mail.search.FlagTerm;
import org.apache.camel.Processor;
import org.apache.camel.impl.ScheduledPollConsumer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
/**
* A [EMAIL PROTECTED] org.apache.camel.Consumer Consumer} which consumes
messages from JavaMail using a
@@ -35,61 +36,53 @@
*
* @version $Revision$
*/
-public class MailConsumer extends ScheduledPollConsumer<MailExchange>
implements MessageCountListener {
+public class MailConsumer extends ScheduledPollConsumer<MailExchange> {
private static final transient Log LOG =
LogFactory.getLog(MailConsumer.class);
private final MailEndpoint endpoint;
- private final Folder folder;
+ private final JavaMailSenderImpl sender;
+ private Folder folder;
+ private Store store;
- public MailConsumer(MailEndpoint endpoint, Processor processor, Folder
folder) {
+ public MailConsumer(MailEndpoint endpoint, Processor processor,
JavaMailSenderImpl sender) {
super(endpoint, processor);
this.endpoint = endpoint;
- this.folder = folder;
+ this.sender = sender;
}
@Override
protected void doStart() throws Exception {
super.doStart();
- folder.addMessageCountListener(this);
+
+ MailConfiguration config = endpoint.getConfiguration();
+ store = sender.getSession().getStore(config.getProtocol());
+ store.connect(config.getHost(), config.getPort(),
config.getUsername(), config.getPassword());
+
+ folder = store.getFolder(config.getFolderName());
+ if (folder == null || !folder.exists()) {
+ throw new FolderNotFoundException(folder, "Folder not found or
invalid: " + config.getFolderName());
+ }
}
@Override
protected void doStop() throws Exception {
- folder.removeMessageCountListener(this);
if (folder.isOpen()) {
folder.close(true);
}
- super.doStop();
- }
-
- public void messagesAdded(MessageCountEvent event) {
- Message[] messages = event.getMessages();
- for (Message message : messages) {
- try {
- if (!message.getFlags().contains(Flags.Flag.DELETED)) {
- processMessage(message);
- flagMessageProcessed(message);
- } else {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Skipping message as it was flagged as
DELETED: " + message);
- }
- }
- } catch (MessagingException e) {
- handleException(e);
- }
+ if (store.isConnected()) {
+ store.close();
}
- }
- public void messagesRemoved(MessageCountEvent event) {
- Message[] messages = event.getMessages();
- for (Message message : messages) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Removed message number " +
message.getMessageNumber());
- }
- }
+ super.doStop();
}
protected void poll() throws Exception {
- ensureFolderIsOpen();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Polling mailfolder " + folder.getFullName() + " at host
" + endpoint.getConfiguration().getHost());
+ }
+ // ensure folder is open
+ if (!folder.isOpen()) {
+ folder.open(Folder.READ_WRITE);
+ }
try {
int count = folder.getMessageCount();
@@ -103,8 +96,8 @@
messages = folder.getMessages();
}
- MessageCountEvent event = new MessageCountEvent(folder,
MessageCountEvent.ADDED, true, messages);
- messagesAdded(event);
+ processMessages(messages);
+
} else if (count == -1) {
throw new MessagingException("Folder: " + folder.getFullName()
+ " is closed");
}
@@ -116,24 +109,36 @@
}
}
- protected void processMessage(Message message) {
- try {
- MailExchange exchange = endpoint.createExchange(message);
- if (LOG.isDebugEnabled()) {
- LOG.debug("Processing message " + message);
+ /**
+ * Process all the messages
+ */
+ protected void processMessages(Message[] messages) throws Exception {
+ for (Message message : messages) {
+ if (!message.getFlags().contains(Flags.Flag.DELETED)) {
+ processMessage(message);
+ flagMessageProcessed(message);
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Skipping message as it was flagged as DELETED:
" + MailUtils.dumpMessage(message));
+ }
}
- getProcessor().process(exchange);
- } catch (Throwable e) {
- handleException(e);
}
}
- protected void ensureFolderIsOpen() throws MessagingException {
- if (!folder.isOpen()) {
- folder.open(Folder.READ_WRITE);
- }
+ /**
+ * Strategy to process the mail message.
+ */
+ protected void processMessage(Message message) throws Exception {
+ MailExchange exchange = endpoint.createExchange(message);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Processing message: " + MailUtils.dumpMessage(message));
+ }
+ getProcessor().process(exchange);
}
+ /**
+ * Strategy to flag the message after being processed.
+ */
protected void flagMessageProcessed(Message message) throws
MessagingException {
if (endpoint.getConfiguration().isDeleteProcessedMessages()) {
message.setFlag(Flags.Flag.DELETED, true);
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailEndpoint.java
Sat May 3 04:32:42 2008
@@ -16,7 +16,6 @@
*/
package org.apache.camel.component.mail;
-import javax.mail.Folder;
import javax.mail.Message;
import org.apache.camel.Consumer;
@@ -25,6 +24,7 @@
import org.apache.camel.Producer;
import org.apache.camel.impl.ScheduledPollEndpoint;
import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
/**
* @version $Revision:520964 $
@@ -39,7 +39,7 @@
}
public Producer<MailExchange> createProducer() throws Exception {
- JavaMailSender sender = configuration.createJavaMailConnection(this);
+ JavaMailSender sender = configuration.createJavaMailSender();
return createProducer(sender);
}
@@ -51,37 +51,20 @@
}
public Consumer<MailExchange> createConsumer(Processor processor) throws
Exception {
- JavaMailConnection connection =
configuration.createJavaMailConnection(this);
-
- String protocol = getConfiguration().getProtocol();
- // replace smtp with pop3 since we are creating a consumer and thus we
need to use pop3 as protocol
- // as stmp is only for sending
- if (protocol.equals("smtp")) {
- protocol = "pop3";
- }
- String folderName = getConfiguration().getFolderName();
- Folder folder = connection.getFolder(protocol, folderName);
- if (folder == null) {
- throw new IllegalArgumentException("No folder for protocol: " +
protocol + " and name: " + folderName);
- }
-
- return createConsumer(processor, folder);
+ JavaMailSenderImpl sender = configuration.createJavaMailSender();
+ return createConsumer(processor, sender);
}
/**
- * Creates a consumer using the given processor and transport
- *
- * @param processor the processor to use to process the messages
- * @param folder the JavaMail Folder to use for inbound messages
- * @return a newly created consumer
- * @throws Exception if the consumer cannot be created
+ * Creates a consumer using the given processor and sender
*/
- public Consumer<MailExchange> createConsumer(Processor processor, Folder
folder) throws Exception {
- MailConsumer answer = new MailConsumer(this, processor, folder);
+ public Consumer<MailExchange> createConsumer(Processor processor,
JavaMailSenderImpl sender) throws Exception {
+ MailConsumer answer = new MailConsumer(this, processor, sender);
configureConsumer(answer);
return answer;
}
+
@Override
public MailExchange createExchange(ExchangePattern pattern) {
return new MailExchange(getContext(), pattern, getBinding());
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailMessage.java
Sat May 3 04:32:42 2008
@@ -123,15 +123,12 @@
String name = header.getName();
CollectionHelper.appendValue(map, name, value);
}
- } catch (Throwable e) {
+ } catch (Exception e) {
throw new MessageHeaderNamesAccessException(e);
}
}
}
- /* (non-Javadoc)
- * @see
org.apache.camel.impl.DefaultMessage#populateInitialAttachments(java.util.Map)
- */
@Override
protected void populateInitialAttachments(Map<String, DataHandler> map) {
if (mailMessage != null) {
@@ -152,12 +149,13 @@
}
/**
- * parses the attachments of the mail message and puts them to the message
+ * Parses the attachments of the mail message and puts them to the message
*
* @param map the attachments map
* @throws javax.mail.MessagingException
*/
protected void extractAttachments(Map<String, DataHandler> map) throws
javax.mail.MessagingException {
+ // TODO: Reuse spring mail support to handle the attachment
// now convert the mail attachments and put it to the msg
Multipart mp;
Object content;
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailProducer.java
Sat May 3 04:32:42 2008
@@ -45,7 +45,7 @@
public void prepare(MimeMessage mimeMessage) throws Exception {
endpoint.getBinding().populateMailMessage(endpoint,
mimeMessage, exchange);
if (LOG.isDebugEnabled()) {
- LOG.debug("Sending MineMessage: MessageID=" +
mimeMessage.getMessageID());
+ LOG.debug("Sending MineMessage: " +
MailUtils.dumpMessage(mimeMessage));
}
}
});
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailUtils.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailUtils.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailUtils.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailUtils.java
Sat May 3 04:32:42 2008
@@ -16,6 +16,12 @@
*/
package org.apache.camel.component.mail;
+import java.text.DateFormat;
+import java.util.Date;
+import javax.mail.Address;
+import javax.mail.MessagingException;
+import javax.mail.Message;
+
/**
* Mail utility class.
* <p>
@@ -78,6 +84,50 @@
return port;
}
- // TODO: Add public method for aiding mail message logging
+ /**
+ * Gets a log dump of the given message that can be used for tracing etc.
+ *
+ * @param message the Mail message
+ * @return a log string with important fields dumped
+ * @throws MessagingException can be thrown by the Mail API
+ */
+ public static String dumpMessage(Message message) throws
MessagingException {
+ StringBuilder sb = new StringBuilder();
+
+ int number = message.getMessageNumber();
+ sb.append("messageNumber=[").append(number).append("]");
+
+ Address[] from = message.getFrom();
+ if (from != null) {
+ for (Address adr : from) {
+ sb.append(", from=[").append(adr).append("]");
+ }
+ }
+
+ Address[] to = message.getRecipients(Message.RecipientType.TO);
+ if (to != null) {
+ for (Address adr : to) {
+ sb.append(", to=[").append(adr).append("]");
+ }
+ }
+
+ // TODO: Maybe we need to get the subject from the header properties
+ String subject = message.getSubject();
+ if (subject != null) {
+ sb.append(", subject=[").append(subject).append("]");
+ }
+
+ Date sentDate = message.getSentDate();
+ if (sentDate != null) {
+ sb.append(",
sentDate=[").append(DateFormat.getDateTimeInstance().format(sentDate)).append("]");
+ }
+
+ Date receivedDate = message.getReceivedDate();
+ if (receivedDate != null) {
+ sb.append(",
receivedDate=[").append(DateFormat.getDateTimeInstance().format(receivedDate)).append("]");
+ }
+
+ return sb.toString();
+ }
}
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderAccessException.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderAccessException.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderAccessException.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderAccessException.java
Sat May 3 04:32:42 2008
@@ -19,6 +19,7 @@
import javax.mail.MessagingException;
/**
+ * @deprecated we should not use runtime exception for the attachment binding
* @version $Revision:520964 $
*/
public class MessageHeaderAccessException extends RuntimeMailException {
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderNamesAccessException.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderNamesAccessException.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderNamesAccessException.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MessageHeaderNamesAccessException.java
Sat May 3 04:32:42 2008
@@ -18,12 +18,13 @@
/**
+ * @deprecated we should not use runtime exception for the attachment binding
* @version $Revision:520964 $
*/
public class MessageHeaderNamesAccessException extends RuntimeMailException {
private static final long serialVersionUID = -6744171518099741324L;
public MessageHeaderNamesAccessException(Throwable e) {
- super("Failed to acess the Mail message property names", e);
+ super("Failed to access the Mail message property names", e);
}
}
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/RuntimeMailException.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/RuntimeMailException.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/RuntimeMailException.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/RuntimeMailException.java
Sat May 3 04:32:42 2008
@@ -17,6 +17,8 @@
package org.apache.camel.component.mail;
/**
+ *
+ * @deprecated we should not use runtime exception for the attachment binding
* @version $Revision:520964 $
*/
public class RuntimeMailException extends RuntimeException {
Added:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java?rev=653053&view=auto
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
(added)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
Sat May 3 04:32:42 2008
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.mail;
+
+import javax.mail.NoSuchProviderException;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Endpoint;
+import org.apache.camel.PollingConsumer;
+
+/**
+ * Unit test for various invalid configurations etc.
+ */
+public class InvalidConfigurationTest extends ContextTestSupport {
+
+ public void testSMTPCanNotBeUsedForConsumingMails() throws Exception {
+ Endpoint endpoint =
this.context.getEndpoint("smtp://localhost?username=james");
+ PollingConsumer consumer = endpoint.createPollingConsumer();
+ try {
+ consumer.start();
+ fail("Should have thrown NoSuchProviderException as stmp protocol
can not be used for consuming mails");
+ } catch (NoSuchProviderException e) {
+ // expected
+ }
+ }
+
+}
Propchange:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProcessOnlyUnseenMessagesTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProcessOnlyUnseenMessagesTest.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProcessOnlyUnseenMessagesTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailProcessOnlyUnseenMessagesTest.java
Sat May 3 04:32:42 2008
@@ -19,11 +19,13 @@
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
+import javax.mail.Store;
import javax.mail.internet.MimeMessage;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
/**
* Unit test for processOnlyUnseenMessages option.
@@ -39,23 +41,31 @@
mock.expectedMessageCount(1);
mock.expectedBodiesReceived("Message 3");
mock.assertIsSatisfied();
+
+ // reset mock so we can make new assertions
+ mock.reset();
+
+ // send a new message, now we should only receive this new massages as
all the others has been SEEN
+ sendBody("direct:a", "Message 4");
+ mock.expectedMessageCount(1);
+ mock.expectedBodiesReceived("Message 4");
+ mock.assertIsSatisfied();
}
private void prepareMailbox() throws Exception {
- JavaMailConnection connection = new JavaMailConnection();
- connection.setProtocol("pop3");
- connection.setHost("localhost");
- connection.setPort(25);
- connection.setUsername("claus");
+ // connect to mailbox
+ JavaMailSenderImpl sender = new JavaMailSenderImpl();
+ Store store = sender.getSession().getStore("imap");
+ store.connect("localhost", 25, "claus", "secret");
+ Folder folder = store.getFolder("INBOX");
+ folder.open(Folder.READ_WRITE);
// inserts two messages with the SEEN flag
- Folder folder = connection.getFolder("pop3", "INBOX");
- folder.open(Folder.READ_WRITE);
Message[] msg = new Message[2];
- msg[0] = new MimeMessage(connection.getSession());
+ msg[0] = new MimeMessage(sender.getSession());
msg[0].setText("Message 1");
msg[0].setFlag(Flags.Flag.SEEN, true);
- msg[1] = new MimeMessage(connection.getSession());
+ msg[1] = new MimeMessage(sender.getSession());
msg[1].setText("Message 2");
msg[1].setFlag(Flags.Flag.SEEN, true);
folder.appendMessages(msg);
@@ -67,12 +77,7 @@
public void configure() throws Exception {
from("direct:a").to("smtp://[EMAIL PROTECTED]");
- // START SNIPPET: e1
- // consume only new unseen massages from the mailbox and poll
the mailbox with 60 seconds interval
- long delay = 60 * 1000L;
-
from("pop3://localhost?username=claus&password=secret&processOnlyUnseenMessages=true&consumer.delay="
+ delay).
- to("mock:result");
- // END SNIPPET: e1
+
from("imap://localhost?username=claus&password=secret&processOnlyUnseenMessages=true").to(
"mock:result");
}
};
}
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailRouteTest.java
Sat May 3 04:32:42 2008
@@ -73,9 +73,9 @@
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("smtp://[EMAIL PROTECTED]").to("direct:a");
+ from("pop3://[EMAIL PROTECTED]").to("direct:a");
from("direct:a").to("smtp://[EMAIL PROTECTED]", "smtp://[EMAIL
PROTECTED]");
- from("smtp://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
+ from("pop3://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
}
};
}
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailSubjectTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailSubjectTest.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailSubjectTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailSubjectTest.java
Sat May 3 04:32:42 2008
@@ -17,8 +17,6 @@
package org.apache.camel.component.mail;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
@@ -29,21 +27,13 @@
private String subject = "Camel rocks";
public void testMailSubject() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
-
String body = "Hello Claus.\nYes it does.\n\nRegards James.";
-
template.sendBody("direct:a", body);
- // need some time for camel to consume mail
- Thread.sleep(1000);
-
- Exchange exchange = mock.assertExchangeReceived(0);
- Message in = exchange.getIn();
- assertEquals("body", body, in.getBody(String.class));
- assertEquals("subject", subject, in.getHeader("subject",
String.class));
-
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(1);
+ mock.expectedHeaderReceived("subject", subject);
+ mock.expectedBodiesReceived(body);
mock.assertIsSatisfied();
}
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MimeMessageConsumeTest.java
Sat May 3 04:32:42 2008
@@ -130,7 +130,7 @@
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("smtp://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
+ from("pop3://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
}
};
}
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MultipleDestinationConsumeTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MultipleDestinationConsumeTest.java?rev=653053&r1=653052&r2=653053&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MultipleDestinationConsumeTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MultipleDestinationConsumeTest.java
Sat May 3 04:32:42 2008
@@ -93,7 +93,7 @@
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("smtp://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
+ from("pop3://[EMAIL
PROTECTED]").convertBodyTo(String.class).to("mock:result");
}
};
}