Author: davsclaus
Date: Wed May 7 21:41:55 2008
New Revision: 654409
URL: http://svn.apache.org/viewvc?rev=654409&view=rev
Log:
CAMEL-335
- MailConsumer only starts to poll when its connected and can reconnect if
needed. Tested SSL with gmail, see documentation on wiki.
Modified:
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/test/java/org/apache/camel/component/mail/MailComponentTest.java
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=654409&r1=654408&r2=654409&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
Wed May 7 21:41:55 2008
@@ -144,6 +144,18 @@
return properties;
}
+ /**
+ * Is the used protocol to be secure or not
+ */
+ public boolean isSecureProtocol() {
+ return this.protocol.equalsIgnoreCase("smtps") ||
this.protocol.equalsIgnoreCase("pop3s")
+ || this.protocol.equalsIgnoreCase("imaps");
+ }
+
+ public String getMailStoreLogInformation() {
+ return "MailStore [" + protocol + "//" + host + ":" + port + "]
folder=[" + folderName + "]";
+ }
+
// Properties
//
-------------------------------------------------------------------------
@@ -325,4 +337,5 @@
public void setConnectionTimeout(long connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}
+
}
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=654409&r1=654408&r2=654409&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
Wed May 7 21:41:55 2008
@@ -52,23 +52,14 @@
@Override
protected void doStart() throws Exception {
super.doStart();
-
- 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 {
- if (folder.isOpen()) {
+ if (folder != null && folder.isOpen()) {
folder.close(true);
}
- if (store.isConnected()) {
+ if (store != null && store.isConnected()) {
store.close();
}
@@ -76,9 +67,11 @@
}
protected void poll() throws Exception {
+ ensureIsConnected();
+
if (store == null || folder == null) {
- throw new IllegalStateException("MailConsumer did not start
properly. Camel does not have access to the MailStore or MailFolder."
- + " Check log files for errors reported during starting this
component");
+ throw new IllegalStateException("MailConsumer did not connect
properly to the MailStore: " +
+ endpoint.getConfiguration().getMailStoreLogInformation());
}
if (LOG.isDebugEnabled()) {
@@ -121,6 +114,25 @@
}
}
+ protected void ensureIsConnected() throws MessagingException {
+ MailConfiguration config = endpoint.getConfiguration();
+
+ if (store == null || !store.isConnected()) {
+ store = sender.getSession().getStore(config.getProtocol());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Connecting to MailStore at host " +
config.getHost() + " on port " + config.getPort());
+ }
+ store.connect(config.getHost(), config.getPort(),
config.getUsername(), config.getPassword());
+ }
+
+ if (folder == null) {
+ folder = store.getFolder(config.getFolderName());
+ if (folder == null || !folder.exists()) {
+ throw new FolderNotFoundException(folder, "Folder not found or
invalid: " + config.getFolderName());
+ }
+ }
+ }
+
/**
* Process all the messages
*/
Modified:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java?rev=654409&r1=654408&r2=654409&view=diff
==============================================================================
---
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
(original)
+++
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/MailComponentTest.java
Wed May 7 21:41:55 2008
@@ -110,7 +110,7 @@
public void testManyConfigurations() throws Exception {
MailEndpoint endpoint = resolveMandatoryEndpoint("smtp://[EMAIL
PROTECTED]:30/subject?password=secret"
- + "&[EMAIL
PROTECTED]&DeleteProcessedMessages=false&defaultEncoding=iso-8859-1&folderName=riders");
+ + "&[EMAIL
PROTECTED]&deleteProcessedMessages=false&defaultEncoding=iso-8859-1&folderName=riders");
MailConfiguration config = endpoint.getConfiguration();
assertEquals("getProtocol()", "smtp", config.getProtocol());
assertEquals("getHost()", "myhost", config.getHost());