You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2008/11/16 15:52:14 UTC
svn commit: r718043 - in /activemq/camel/trunk/components/camel-mail/src:
main/java/org/apache/camel/component/mail/
test/java/org/apache/camel/component/mail/
Author: davsclaus
Date: Sun Nov 16 06:52:14 2008
New Revision: 718043
URL: http://svn.apache.org/viewvc?rev=718043&view=rev
Log:
CAMEL-1096: camel-mail now supports setting additional java mail properties if URI options starts with mail.
Added:
activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java (contents, props changed)
- copied, changed from r717985, activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java
Modified:
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java
Modified: activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java?rev=718043&r1=718042&r2=718043&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java (original)
+++ activemq/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailComponent.java Sun Nov 16 06:52:14 2008
@@ -17,7 +17,9 @@
package org.apache.camel.component.mail;
import java.net.URI;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
@@ -57,6 +59,7 @@
MailConfiguration config = new MailConfiguration();
config.configure(url);
+ configureAdditionalJavaMailProperties(config, parameters);
// lets make sure we copy the configuration as each endpoint can customize its own version
MailEndpoint endpoint = new MailEndpoint(uri, this, config);
@@ -65,6 +68,22 @@
return endpoint;
}
+ private void configureAdditionalJavaMailProperties(MailConfiguration config, Map parameters) {
+ // we can not remove while iterating, as we will get a modification exception
+ Set toRemove = new HashSet();
+
+ for (Object key : parameters.keySet()) {
+ if (key.toString().startsWith("mail.")) {
+ config.getAdditionalJavaMailProperties().put(key, parameters.get(key));
+ toRemove.add(key);
+ }
+ }
+
+ for (Object key : toRemove) {
+ parameters.remove(key);
+ }
+ }
+
public MailConfiguration getConfiguration() {
return configuration;
}
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=718043&r1=718042&r2=718043&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 Sun Nov 16 06:52:14 2008
@@ -41,6 +41,7 @@
public static final long DEFAULT_CONNECTION_TIMEOUT = 30000L;
private Properties javaMailProperties;
+ private Properties additionalJavaMailProperties;
private String protocol;
private String host;
private int port = -1;
@@ -101,6 +102,10 @@
} else {
// set default properties if none provided
answer.setJavaMailProperties(createJavaMailProperties());
+ // add additional properties if provided
+ if (additionalJavaMailProperties != null) {
+ answer.getJavaMailProperties().putAll(additionalJavaMailProperties);
+ }
}
if (defaultEncoding != null) {
@@ -217,10 +222,30 @@
return javaMailProperties;
}
+ /**
+ * Sets the java mail options. Will clear any default properties and only use the properties
+ * provided for this method.
+ */
public void setJavaMailProperties(Properties javaMailProperties) {
this.javaMailProperties = javaMailProperties;
}
+ public Properties getAdditionalJavaMailProperties() {
+ if (additionalJavaMailProperties == null) {
+ additionalJavaMailProperties = new Properties();
+ }
+ return additionalJavaMailProperties;
+ }
+
+ /**
+ * Sets additional java mail properties, that will append/override any default properties
+ * that is set based on all the other options. This is useful if you need to add some
+ * special options but want to keep the others as is.
+ */
+ public void setAdditionalJavaMailProperties(Properties additionalJavaMailProperties) {
+ this.additionalJavaMailProperties = additionalJavaMailProperties;
+ }
+
public String getPassword() {
return password;
}
Copied: activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java (from r717985, 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/AdditionalMailPropertiesTest.java?p2=activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java&p1=activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java&r1=717985&r2=718043&rev=718043&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/InvalidConfigurationTest.java (original)
+++ activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java Sun Nov 16 06:52:14 2008
@@ -16,46 +16,42 @@
*/
package org.apache.camel.component.mail;
+import java.util.Properties;
+
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
-import org.apache.camel.PollingConsumer;
-import org.apache.camel.ResolveEndpointFailedException;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
/**
- * Unit test for various invalid configurations etc.
+ * Unit test allowing end users to set additional mail.xxx properties.
*/
-public class InvalidConfigurationTest extends ContextTestSupport {
+public class AdditionalMailPropertiesTest 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 (IllegalArgumentException e) {
- // expected
- }
+ public void testAdditionalMailProperties() throws Exception {
+ MailEndpoint endpoint = (MailEndpoint) context.getEndpoint("pop3://localhost?username=james&mail.pop3.forgettopheaders=true");
+ Properties prop = endpoint.getConfiguration().getAdditionalJavaMailProperties();
+ assertEquals("true", prop.get("mail.pop3.forgettopheaders"));
}
- public void testSMTPSCanNotBeUsedForConsumingMails() throws Exception {
- Endpoint endpoint = this.context.getEndpoint("smtps://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 (IllegalArgumentException e) {
- // expected
- }
- }
+ public void testConsumeWithAdditionalProperties() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+
+ template.sendBodyAndHeader("smtp://james@localhost", "Hello james how are you?", "subject", "Hello");
- public void testNNTPNotSupported() throws Exception {
- try {
- this.context.getEndpoint("nntp://localhost?username=james");
- fail("Should have thrown UnsupportedOperationException");
- } catch (ResolveEndpointFailedException e) {
- // expected
- assertTrue(e.getCause() instanceof UnsupportedOperationException);
- }
+ mock.expectedBodiesReceived("Hello james how are you?");
+ mock.expectedHeaderReceived("subject", "Hello");
+
+ assertMockEndpointsSatisfied();
}
-}
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("pop3://james@localhost?mail.pop3.forgettopheaders=true").to("mock:result");
+ }
+ };
+
+ }
+}
\ No newline at end of file
Propchange: activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: activemq/camel/trunk/components/camel-mail/src/test/java/org/apache/camel/component/mail/AdditionalMailPropertiesTest.java
------------------------------------------------------------------------------
svn:mergeinfo =