Author: davsclaus
Date: Sun May 20 14:52:17 2012
New Revision: 1340747
URL: http://svn.apache.org/viewvc?rev=1340747&view=rev
Log:
Added copyTo option. Allow to override delete and copyTo options using headers.
Thanks to Benoit and Daniel for the patches.
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java?rev=1340747&r1=1340746&r2=1340747&view=diff
==============================================================================
---
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
(original)
+++
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
Sun May 20 14:52:17 2012
@@ -48,6 +48,7 @@ public class MailConfiguration implement
private String from = MailConstants.MAIL_DEFAULT_FROM;
private String folderName = MailConstants.MAIL_DEFAULT_FOLDER;
private boolean delete;
+ private String copyTo;
private boolean unseen = true;
private boolean ignoreUriScheme;
private Map<Message.RecipientType, String> recipients = new
HashMap<Message.RecipientType, String>();
@@ -475,4 +476,12 @@ public class MailConfiguration implement
public void setSslContextParameters(SSLContextParameters
sslContextParameters) {
this.sslContextParameters = sslContextParameters;
}
+
+ public String getCopyTo() {
+ return copyTo;
+ }
+
+ public void setCopyTo(String copyTo) {
+ this.copyTo = copyTo;
+ }
}
Modified:
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java?rev=1340747&r1=1340746&r2=1340747&view=diff
==============================================================================
---
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
(original)
+++
camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConsumer.java
Sun May 20 14:52:17 2012
@@ -275,7 +275,26 @@ public class MailConsumer extends Schedu
}
}
- if (getEndpoint().getConfiguration().isDelete()) {
+ org.apache.camel.Message in = exchange.getIn();
+ MailConfiguration config = getEndpoint().getConfiguration();
+ // header values override configuration values
+ String copyTo = in.getHeader("copyTo", config.getCopyTo(),
String.class);
+ boolean delete = in.getHeader("delete", config.isDelete(),
boolean.class);
+
+ // Copy message into different imap folder if asked
+ if (config.getProtocol().equals(MailUtils.PROTOCOL_IMAP) ||
config.getProtocol().equals(MailUtils.PROTOCOL_IMAPS)) {
+ if (copyTo != null) {
+ LOG.trace("IMAP message needs to be copied to {}", copyTo);
+ Folder destFolder = store.getFolder(copyTo);
+ if (!destFolder.exists()) {
+ destFolder.create(Folder.HOLDS_MESSAGES);
+ }
+ folder.copyMessages(new Message[]{mail}, destFolder);
+ LOG.trace("IMAP message {} copied to {}", mail, copyTo);
+ }
+ }
+
+ if (delete) {
LOG.trace("Exchange processed, so flagging message as
DELETED");
mail.setFlag(Flags.Flag.DELETED, true);
} else {
@@ -283,8 +302,7 @@ public class MailConsumer extends Schedu
mail.setFlag(Flags.Flag.SEEN, true);
}
} catch (MessagingException e) {
- LOG.warn("Error occurred during flagging message as DELETED/SEEN",
e);
- exchange.setException(e);
+ getExceptionHandler().handleException("Error occurred during
committing mail message: " + mail, exchange, e);
}
}