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, <krass...@apache.org> 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:us...@gmail.com?to=user2@gmail.com&subject=test"); > + endpoint = createEndpoint("gmail:us...@gmail.com" + > + "?to=us...@gmail.com" + > + "&cc=us...@gmail.com" + > + "&bcc=us...@gmail.com" + > + "&subject=test"); > } > > @Before > @@ -55,6 +60,9 @@ > public void testWriteFrom() { > binding.writeFrom(endpoint, exchange, message); > assertEquals("us...@gmail.com", message.getSender()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_SENDER, > "us...@gmail.com"); > + binding.writeFrom(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getSender()); > } > > @Test > @@ -67,6 +75,57 @@ > } > > @Test > + public void testWriteCc() { > + binding.writeCc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getCc().iterator().next()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_CC, "us...@gmail.com"); > + binding.writeCc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getCc().iterator().next()); > + } > + > + �...@test > + public void testWriteBcc() { > + binding.writeBcc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getBcc().iterator().next()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_BCC, > "us...@gmail.com"); > + binding.writeBcc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getBcc().iterator().next()); > + } > + > + �...@test > + public void testWriteToMultiple() { > + binding.writeTo(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getTo().iterator().next()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_TO, > "us...@gmail.com,us...@gmail.com"); > + binding.writeTo(endpoint, exchange, message); > + assertEquals(2, message.getTo().size()); > + assertTrue(message.getTo().contains("us...@gmail.com")); > + assertTrue(message.getTo().contains("us...@gmail.com")); > + } > + > + �...@test > + public void testWriteCcMultiple() { > + binding.writeCc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getCc().iterator().next()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_CC, > "us...@gmail.com,us...@gmail.com"); > + binding.writeCc(endpoint, exchange, message); > + assertEquals(2, message.getCc().size()); > + assertTrue(message.getCc().contains("us...@gmail.com")); > + assertTrue(message.getCc().contains("us...@gmail.com")); > + } > + > + �...@test > + public void testWriteBccMultiple() { > + binding.writeBcc(endpoint, exchange, message); > + assertEquals("us...@gmail.com", message.getBcc().iterator().next()); > + exchange.getIn().setHeader(GMailBinding.GMAIL_BCC, > "us...@gmail.com,us...@gmail.com"); > + binding.writeBcc(endpoint, exchange, message); > + assertEquals(2, message.getBcc().size()); > + assertTrue(message.getBcc().contains("us...@gmail.com")); > + assertTrue(message.getBcc().contains("us...@gmail.com")); > + } > + > + �...@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:us...@gmail.com") > .append("?").append("subject=test") > .append(AMP).append("to=us...@gmail.com") > + .append(AMP).append("cc=us...@gmail.com") > + .append(AMP).append("bcc=us...@gmail.com") > .append(AMP).append("mailServiceRef=#mockMailService") > .append(AMP).append("outboundBindingRef=#customBinding"); > GMailEndpoint endpoint = createEndpoint(buffer.toString()); > assertEquals("test", endpoint.getSubject()); > assertEquals("us...@gmail.com", endpoint.getSender()); > assertEquals("us...@gmail.com", endpoint.getTo()); > + assertEquals("us...@gmail.com", endpoint.getCc()); > + assertEquals("us...@gmail.com", 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