Hi
Is it possible to use the Camel syntax for header keys?
> + public static final String GMAIL_SENDER =
> "org.apache.camel.component.gae.mail.Sender";
Should be
public static final String GMAIL_SENDER = "CamelGaeMailSender";
Using dots in keys causes issues when wiring over some transports.
And then it also doesn't look like a Class or Class name which people
could mistake it with.
On Tue, Jan 19, 2010 at 8:09 AM, <[email protected]> wrote:
> Author: krasserm
> Date: Tue Jan 19 07:09:00 2010
> New Revision: 900682
>
> URL: http://svn.apache.org/viewvc?rev=900682&view=rev
> Log:
> extension to the gmail component to support cc, bcc, recipient lists and
> overriding the sender
>
> Modified:
> camel/trunk/components/camel-gae/pom.xml
>
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailBinding.java
>
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
>
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailBindingTest.java
>
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailEndpointTest.java
>
> Modified: camel/trunk/components/camel-gae/pom.xml
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-gae/pom.xml?rev=900682&r1=900681&r2=900682&view=diff
> ==============================================================================
> --- camel/trunk/components/camel-gae/pom.xml (original)
> +++ camel/trunk/components/camel-gae/pom.xml Tue Jan 19 07:09:00 2010
> @@ -32,7 +32,7 @@
>
> <properties>
>
> <camel.osgi.export.pkg>org.apache.camel.component.gae.*</camel.osgi.export.pkg>
> - <appengine-sdk-version>1.2.8</appengine-sdk-version>
> + <appengine-sdk-version>1.3.0</appengine-sdk-version>
> </properties>
>
> <dependencies>
>
> Modified:
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailBinding.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailBinding.java?rev=900682&r1=900681&r2=900682&view=diff
> ==============================================================================
> ---
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailBinding.java
> (original)
> +++
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailBinding.java
> Tue Jan 19 07:09:00 2010
> @@ -27,16 +27,34 @@
> public class GMailBinding implements OutboundBinding<GMailEndpoint, Message,
> Void> {
>
> /**
> + * Camel header for setting the mail message sender.
> + */
> + public static final String GMAIL_SENDER =
> "org.apache.camel.component.gae.mail.Sender";
> +
> + /**
> * Camel header for setting the mail message subject.
> */
> public static final String GMAIL_SUBJECT =
> "org.apache.camel.component.gae.mail.Subject";
> -
> +
> /**
> - * Camel header for setting the mail message recipient (list).
> + * Camel header for setting the mail message to-recipient (single
> recipient
> + * or comma-separated list).
> */
> public static final String GMAIL_TO =
> "org.apache.camel.component.gae.mail.To";
>
> /**
> + * Camel header for setting the mail message cc-recipient (single
> recipient
> + * or comma-separated list).
> + */
> + public static final String GMAIL_CC =
> "org.apache.camel.component.gae.mail.Cc";
> +
> + /**
> + * Camel header for setting the mail message bcc-recipient (single
> recipient
> + * or comma-separated list).
> + */
> + public static final String GMAIL_BCC =
> "org.apache.camel.component.gae.mail.Bcc";
> +
> + /**
> * Reads data from <code>exchange</code> and writes it to a newly created
> * {...@link Message} instance. The <code>request</code> parameter is
> * ignored.
> @@ -52,6 +70,8 @@
> Message message = new Message();
> writeFrom(endpoint, exchange, message);
> writeTo(endpoint, exchange, message);
> + writeCc(endpoint, exchange, message);
> + writeBcc(endpoint, exchange, message);
> writeSubject(endpoint, exchange, message);
> writeBody(endpoint, exchange, message);
> writeAttachments(endpoint, exchange, message);
> @@ -66,16 +86,39 @@
> }
>
> protected void writeFrom(GMailEndpoint endpoint, Exchange exchange,
> Message request) {
> - request.setSender(endpoint.getSender());
> + String sender = (String)exchange.getIn().getHeader(GMAIL_SENDER);
> + if (sender == null) {
> + sender = endpoint.getSender();
> + }
> + request.setSender(sender);
> }
>
> protected void writeTo(GMailEndpoint endpoint, Exchange exchange, Message
> request) {
> - // TODO: support comma-separated list of receivers
> String to = (String)exchange.getIn().getHeader(GMAIL_TO);
> if (to == null) {
> to = endpoint.getTo();
> }
> - request.setTo(to);
> + request.setTo(to.split(","));
> + }
> +
> + protected void writeCc(GMailEndpoint endpoint, Exchange exchange,
> Message request) {
> + String cc = (String)exchange.getIn().getHeader(GMAIL_CC);
> + if (cc == null) {
> + cc = endpoint.getCc();
> + }
> + if (cc != null) {
> + request.setCc(cc.split(","));
> + }
> + }
> +
> + protected void writeBcc(GMailEndpoint endpoint, Exchange exchange,
> Message request) {
> + String bcc = (String)exchange.getIn().getHeader(GMAIL_BCC);
> + if (bcc == null) {
> + bcc = endpoint.getBcc();
> + }
> + if (bcc != null) {
> + request.setBcc(bcc.split(","));
> + }
> }
>
> protected void writeSubject(GMailEndpoint endpoint, Exchange exchange,
> Message request) {
>
> Modified:
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java?rev=900682&r1=900681&r2=900682&view=diff
> ==============================================================================
> ---
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
> (original)
> +++
> camel/trunk/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
> Tue Jan 19 07:09:00 2010
> @@ -41,6 +41,10 @@
>
> private String to;
>
> + private String cc;
> +
> + private String bcc;
> +
> public GMailEndpoint(String endpointUri, String sender) {
> super(endpointUri);
> this.sender = sender;
> @@ -82,6 +86,22 @@
> this.to = to;
> }
>
> + public String getCc() {
> + return cc;
> + }
> +
> + public void setCc(String cc) {
> + this.cc = cc;
> + }
> +
> + public String getBcc() {
> + return bcc;
> + }
> +
> + public void setBcc(String bcc) {
> + this.bcc = bcc;
> + }
> +
> public Consumer createConsumer(Processor processor) throws Exception {
> throw new UnsupportedOperationException("consumption from gmail
> endpoint not supported");
> }
>
> Modified:
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailBindingTest.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailBindingTest.java?rev=900682&r1=900681&r2=900682&view=diff
> ==============================================================================
> ---
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailBindingTest.java
> (original)
> +++
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailBindingTest.java
> Tue Jan 19 07:09:00 2010
> @@ -28,6 +28,7 @@
> import static
> org.apache.camel.component.gae.mail.GMailTestUtils.createMessage;
> import static
> org.apache.camel.component.gae.mail.GMailTestUtils.getCamelContext;
> import static org.junit.Assert.assertEquals;
> +import static org.junit.Assert.assertTrue;
>
> public class GMailBindingTest {
>
> @@ -42,7 +43,11 @@
> @BeforeClass
> public static void setUpClass() throws Exception {
> binding = new GMailBinding();
> - endpoint =
> createEndpoint("gmail:[email protected][email protected]&subject=test");
> + endpoint = createEndpoint("gmail:[email protected]" +
> + "[email protected]" +
> + "&[email protected]" +
> + "&[email protected]" +
> + "&subject=test");
> }
>
> @Before
> @@ -55,6 +60,9 @@
> public void testWriteFrom() {
> binding.writeFrom(endpoint, exchange, message);
> assertEquals("[email protected]", message.getSender());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_SENDER,
> "[email protected]");
> + binding.writeFrom(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getSender());
> }
>
> @Test
> @@ -67,6 +75,57 @@
> }
>
> @Test
> + public void testWriteCc() {
> + binding.writeCc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getCc().iterator().next());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_CC, "[email protected]");
> + binding.writeCc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getCc().iterator().next());
> + }
> +
> + �...@test
> + public void testWriteBcc() {
> + binding.writeBcc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getBcc().iterator().next());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_BCC,
> "[email protected]");
> + binding.writeBcc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getBcc().iterator().next());
> + }
> +
> + �...@test
> + public void testWriteToMultiple() {
> + binding.writeTo(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getTo().iterator().next());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_TO,
> "[email protected],[email protected]");
> + binding.writeTo(endpoint, exchange, message);
> + assertEquals(2, message.getTo().size());
> + assertTrue(message.getTo().contains("[email protected]"));
> + assertTrue(message.getTo().contains("[email protected]"));
> + }
> +
> + �...@test
> + public void testWriteCcMultiple() {
> + binding.writeCc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getCc().iterator().next());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_CC,
> "[email protected],[email protected]");
> + binding.writeCc(endpoint, exchange, message);
> + assertEquals(2, message.getCc().size());
> + assertTrue(message.getCc().contains("[email protected]"));
> + assertTrue(message.getCc().contains("[email protected]"));
> + }
> +
> + �...@test
> + public void testWriteBccMultiple() {
> + binding.writeBcc(endpoint, exchange, message);
> + assertEquals("[email protected]", message.getBcc().iterator().next());
> + exchange.getIn().setHeader(GMailBinding.GMAIL_BCC,
> "[email protected],[email protected]");
> + binding.writeBcc(endpoint, exchange, message);
> + assertEquals(2, message.getBcc().size());
> + assertTrue(message.getBcc().contains("[email protected]"));
> + assertTrue(message.getBcc().contains("[email protected]"));
> + }
> +
> + �...@test
> public void testWriteSubject() {
> binding.writeSubject(endpoint, exchange, message);
> assertEquals("test", message.getSubject());
>
> Modified:
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailEndpointTest.java
> URL:
> http://svn.apache.org/viewvc/camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailEndpointTest.java?rev=900682&r1=900681&r2=900682&view=diff
> ==============================================================================
> ---
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailEndpointTest.java
> (original)
> +++
> camel/trunk/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailEndpointTest.java
> Tue Jan 19 07:09:00 2010
> @@ -32,12 +32,16 @@
> StringBuffer buffer = new StringBuffer("gmail:[email protected]")
> .append("?").append("subject=test")
> .append(AMP).append("[email protected]")
> + .append(AMP).append("[email protected]")
> + .append(AMP).append("[email protected]")
> .append(AMP).append("mailServiceRef=#mockMailService")
> .append(AMP).append("outboundBindingRef=#customBinding");
> GMailEndpoint endpoint = createEndpoint(buffer.toString());
> assertEquals("test", endpoint.getSubject());
> assertEquals("[email protected]", endpoint.getSender());
> assertEquals("[email protected]", endpoint.getTo());
> + assertEquals("[email protected]", endpoint.getCc());
> + assertEquals("[email protected]", endpoint.getBcc());
>
> assertFalse(endpoint.getOutboundBinding().getClass().equals(GMailBinding.class));
> assertTrue(endpoint.getOutboundBinding() instanceof GMailBinding);
> assertTrue(endpoint.getMailService() instanceof MockMailService);
>
>
>
--
Claus Ibsen
Apache Camel Committer
Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus