You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by kr...@apache.org on 2010/01/19 08:09:00 UTC

svn commit: r900682 - in /camel/trunk/components/camel-gae: ./ src/main/java/org/apache/camel/component/gae/mail/ src/test/java/org/apache/camel/component/gae/mail/

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



Re: svn commit: r900682 - in /camel/trunk/components/camel-gae: ./ src/main/java/org/apache/camel/component/gae/mail/ src/test/java/org/apache/camel/component/gae/mail/

Posted by Martin Krasser <de...@martin-krasser.de>.
Claus Ibsen schrieb:
> Hi
>
> Is it possible to use the Camel syntax for header keys?
>   
Sure, I'll fix that. Thanks for the hint.
>   
>> +    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,  <kr...@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:user1@gmail.com?to=user2@gmail.com&subject=test");
>> +        endpoint = createEndpoint("gmail:user1@gmail.com" +
>> +                       "?to=user2@gmail.com" +
>> +                "&cc=user4@gmail.com" +
>> +                "&bcc=user5@gmail.com" +
>> +                       "&subject=test");
>>     }
>>
>>     @Before
>> @@ -55,6 +60,9 @@
>>     public void testWriteFrom() {
>>         binding.writeFrom(endpoint, exchange, message);
>>         assertEquals("user1@gmail.com", message.getSender());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_SENDER, "user3@gmail.com");
>> +        binding.writeFrom(endpoint, exchange, message);
>> +        assertEquals("user3@gmail.com", message.getSender());
>>     }
>>
>>     @Test
>> @@ -67,6 +75,57 @@
>>     }
>>
>>     @Test
>> +    public void testWriteCc() {
>> +        binding.writeCc(endpoint, exchange, message);
>> +        assertEquals("user4@gmail.com", message.getCc().iterator().next());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_CC, "user3@gmail.com");
>> +        binding.writeCc(endpoint, exchange, message);
>> +        assertEquals("user3@gmail.com", message.getCc().iterator().next());
>> +    }
>> +
>> +    @Test
>> +    public void testWriteBcc() {
>> +        binding.writeBcc(endpoint, exchange, message);
>> +        assertEquals("user5@gmail.com", message.getBcc().iterator().next());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_BCC, "user3@gmail.com");
>> +        binding.writeBcc(endpoint, exchange, message);
>> +        assertEquals("user3@gmail.com", message.getBcc().iterator().next());
>> +    }
>> +
>> +    @Test
>> +    public void testWriteToMultiple() {
>> +        binding.writeTo(endpoint, exchange, message);
>> +        assertEquals("user2@gmail.com", message.getTo().iterator().next());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_TO, "user3@gmail.com,user4@gmail.com");
>> +        binding.writeTo(endpoint, exchange, message);
>> +        assertEquals(2, message.getTo().size());
>> +        assertTrue(message.getTo().contains("user3@gmail.com"));
>> +        assertTrue(message.getTo().contains("user4@gmail.com"));
>> +    }
>> +
>> +    @Test
>> +    public void testWriteCcMultiple() {
>> +        binding.writeCc(endpoint, exchange, message);
>> +        assertEquals("user4@gmail.com", message.getCc().iterator().next());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_CC, "user3@gmail.com,user4@gmail.com");
>> +        binding.writeCc(endpoint, exchange, message);
>> +        assertEquals(2, message.getCc().size());
>> +        assertTrue(message.getCc().contains("user3@gmail.com"));
>> +        assertTrue(message.getCc().contains("user4@gmail.com"));
>> +    }
>> +
>> +    @Test
>> +    public void testWriteBccMultiple() {
>> +        binding.writeBcc(endpoint, exchange, message);
>> +        assertEquals("user5@gmail.com", message.getBcc().iterator().next());
>> +        exchange.getIn().setHeader(GMailBinding.GMAIL_BCC, "user3@gmail.com,user4@gmail.com");
>> +        binding.writeBcc(endpoint, exchange, message);
>> +        assertEquals(2, message.getBcc().size());
>> +        assertTrue(message.getBcc().contains("user3@gmail.com"));
>> +        assertTrue(message.getBcc().contains("user4@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:user1@gmail.com")
>>             .append("?").append("subject=test")
>>             .append(AMP).append("to=user2@gmail.com")
>> +            .append(AMP).append("cc=user3@gmail.com")
>> +            .append(AMP).append("bcc=user4@gmail.com")
>>             .append(AMP).append("mailServiceRef=#mockMailService")
>>             .append(AMP).append("outboundBindingRef=#customBinding");
>>         GMailEndpoint endpoint = createEndpoint(buffer.toString());
>>         assertEquals("test", endpoint.getSubject());
>>         assertEquals("user1@gmail.com", endpoint.getSender());
>>         assertEquals("user2@gmail.com", endpoint.getTo());
>> +        assertEquals("user3@gmail.com", endpoint.getCc());
>> +        assertEquals("user4@gmail.com", endpoint.getBcc());
>>         assertFalse(endpoint.getOutboundBinding().getClass().equals(GMailBinding.class));
>>         assertTrue(endpoint.getOutboundBinding() instanceof GMailBinding);
>>         assertTrue(endpoint.getMailService() instanceof MockMailService);
>>
>>
>>
>>     
>
>
>
>   


Re: svn commit: r900682 - in /camel/trunk/components/camel-gae: ./ src/main/java/org/apache/camel/component/gae/mail/ src/test/java/org/apache/camel/component/gae/mail/

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