You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2015/07/12 12:40:14 UTC

[1/2] camel git commit: CAMEL-6649: AWS Simple Email Service - add attachment support

Repository: camel
Updated Branches:
  refs/heads/master 308529ff3 -> 88fca852f


CAMEL-6649: AWS Simple Email Service - add attachment support


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/52495d3c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/52495d3c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/52495d3c

Branch: refs/heads/master
Commit: 52495d3cacb0f796c0f5c86abb915e5733b717a4
Parents: 308529f
Author: Andrea Cosentino <an...@gmail.com>
Authored: Sun Jul 12 12:05:52 2015 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Sun Jul 12 12:38:43 2015 +0200

----------------------------------------------------------------------
 .../camel/component/aws/ses/SesProducer.java    |  67 +++++-
 .../component/aws/ses/AmazonSESClientMock.java  |  16 ++
 .../camel/component/aws/ses/MockMessage.java    | 235 +++++++++++++++++++
 .../aws/ses/SesComponentSpringTest.java         |  27 +++
 4 files changed, 337 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
index 78a0295..f5ecaf2 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
@@ -16,14 +16,26 @@
  */
 package org.apache.camel.component.aws.ses;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
 
 import com.amazonaws.services.simpleemail.model.Body;
 import com.amazonaws.services.simpleemail.model.Content;
 import com.amazonaws.services.simpleemail.model.Destination;
 import com.amazonaws.services.simpleemail.model.SendEmailRequest;
 import com.amazonaws.services.simpleemail.model.SendEmailResult;
+import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
+import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
+
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
@@ -41,14 +53,21 @@ public class SesProducer extends DefaultProducer {
     }
 
     public void process(Exchange exchange) throws Exception {
-        SendEmailRequest request = createMailRequest(exchange);
-        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
-        
-        SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
-
-        log.trace("Received result [{}]", result);
-        Message message = getMessageForResponse(exchange);
-        message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
+    	if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
+    		SendEmailRequest request = createMailRequest(exchange);
+            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);            
+            SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
+            log.trace("Received result [{}]", result);
+            Message message = getMessageForResponse(exchange);
+            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
+    	} else {
+    		SendRawEmailRequest request = createRawMailRequest(exchange);
+            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);            
+            SendRawEmailResult result = getEndpoint().getSESClient().sendRawEmail(request);
+            log.trace("Received result [{}]", result);
+            Message message = getMessageForResponse(exchange);
+            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
+    	}
     }
 
     private SendEmailRequest createMailRequest(Exchange exchange) {
@@ -61,6 +80,14 @@ public class SesProducer extends DefaultProducer {
 
         return request;
     }
+    
+    private SendRawEmailRequest createRawMailRequest(Exchange exchange) {
+    	SendRawEmailRequest request = new SendRawEmailRequest();
+        request.setSource(determineFrom(exchange));
+        request.setDestinations(determineRawTo(exchange));
+        request.setRawMessage(createRawMessage(exchange));
+        return request;
+    }
 
     private com.amazonaws.services.simpleemail.model.Message createMessage(Exchange exchange) {
         com.amazonaws.services.simpleemail.model.Message message = new com.amazonaws.services.simpleemail.model.Message();
@@ -75,6 +102,21 @@ public class SesProducer extends DefaultProducer {
         return message;
     }
     
+    private com.amazonaws.services.simpleemail.model.RawMessage createRawMessage(Exchange exchange) {
+        com.amazonaws.services.simpleemail.model.RawMessage message = new com.amazonaws.services.simpleemail.model.RawMessage();
+        javax.mail.Message content = exchange.getIn().getBody(javax.mail.Message.class);
+        OutputStream byteOutput=new ByteArrayOutputStream();
+        try {
+			content.writeTo(byteOutput);
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+        byte[] messageByteArray=((ByteArrayOutputStream)byteOutput).toByteArray();
+        message.setData(ByteBuffer.wrap(messageByteArray));
+        return message;
+    }
+    
     @SuppressWarnings("unchecked")
     private Collection<String> determineReplyToAddresses(Exchange exchange) {
         List<String> replyToAddresses = exchange.getIn().getHeader(SesConstants.REPLY_TO_ADDRESSES, List.class);
@@ -100,6 +142,15 @@ public class SesProducer extends DefaultProducer {
         }
         return new Destination(to);
     }
+    
+    @SuppressWarnings("unchecked")
+    private List determineRawTo(Exchange exchange) {
+        List<String> to = exchange.getIn().getHeader(SesConstants.TO, List.class);
+        if (to == null) {
+            to = getConfiguration().getTo();
+        }
+        return to;
+    }
 
     private String determineFrom(Exchange exchange) {
         String from = exchange.getIn().getHeader(SesConstants.FROM, String.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
index 3ed184a..21669ee 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
@@ -22,9 +22,12 @@ import com.amazonaws.auth.BasicAWSCredentials;
 import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
 import com.amazonaws.services.simpleemail.model.SendEmailRequest;
 import com.amazonaws.services.simpleemail.model.SendEmailResult;
+import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
+import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
 
 public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
     private SendEmailRequest sendEmailRequest;
+    private SendRawEmailRequest sendRawEmailRequest;
 
     public AmazonSESClientMock() {
         super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
@@ -38,8 +41,21 @@ public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
         
         return result;
     }
+    
+    @Override
+    public SendRawEmailResult sendRawEmail(SendRawEmailRequest sendRawEmailRequest) throws AmazonServiceException, AmazonClientException {
+        this.sendRawEmailRequest = sendRawEmailRequest;
+        SendRawEmailResult result = new SendRawEmailResult();
+        result.setMessageId("1");
+        
+        return result;
+    }
 
     public SendEmailRequest getSendEmailRequest() {
         return sendEmailRequest;
     }
+    
+    public SendRawEmailRequest getSendRawEmailRequest() {
+        return sendRawEmailRequest;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
new file mode 100644
index 0000000..5e4e0db
--- /dev/null
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
@@ -0,0 +1,235 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.aws.ses;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.Enumeration;
+
+import javax.activation.DataHandler;
+import javax.mail.Address;
+import javax.mail.Flags;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+
+public class MockMessage extends Message {
+
+	@Override
+	public int getSize() throws MessagingException {
+		return 0;
+	}
+
+	@Override
+	public int getLineCount() throws MessagingException {
+		return 0;
+	}
+
+	@Override
+	public String getContentType() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public boolean isMimeType(String mimeType) throws MessagingException {
+		return false;
+	}
+
+	@Override
+	public String getDisposition() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setDisposition(String disposition) throws MessagingException {		
+	}
+
+	@Override
+	public String getDescription() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setDescription(String description) throws MessagingException {
+	}
+
+	@Override
+	public String getFileName() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setFileName(String filename) throws MessagingException {
+	}
+
+	@Override
+	public InputStream getInputStream() throws IOException, MessagingException {
+		return null;
+	}
+
+	@Override
+	public DataHandler getDataHandler() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public Object getContent() throws IOException, MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setDataHandler(DataHandler dh) throws MessagingException {
+	}
+
+	@Override
+	public void setContent(Object obj, String type) throws MessagingException {
+	}
+
+	@Override
+	public void setText(String text) throws MessagingException {
+	}
+
+	@Override
+	public void setContent(Multipart mp) throws MessagingException {	
+	}
+
+	@Override
+	public void writeTo(OutputStream os) throws IOException, MessagingException {		
+	}
+
+	@Override
+	public String[] getHeader(String header_name) throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setHeader(String header_name, String header_value)
+			throws MessagingException {
+	}
+
+	@Override
+	public void addHeader(String header_name, String header_value)
+			throws MessagingException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void removeHeader(String header_name) throws MessagingException {
+	}
+
+	@Override
+	public Enumeration getAllHeaders() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public Enumeration getMatchingHeaders(String[] header_names)
+			throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public Enumeration getNonMatchingHeaders(String[] header_names)
+			throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public Address[] getFrom() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setFrom() throws MessagingException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void setFrom(Address address) throws MessagingException {	
+	}
+
+	@Override
+	public void addFrom(Address[] addresses) throws MessagingException {		
+	}
+
+	@Override
+	public Address[] getRecipients(RecipientType type)
+			throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setRecipients(RecipientType type, Address[] addresses)
+			throws MessagingException {
+	}
+
+	@Override
+	public void addRecipients(RecipientType type, Address[] addresses)
+			throws MessagingException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public String getSubject() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setSubject(String subject) throws MessagingException {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public Date getSentDate() throws MessagingException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void setSentDate(Date date) throws MessagingException {		
+	}
+
+	@Override
+	public Date getReceivedDate() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public Flags getFlags() throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void setFlags(Flags flag, boolean set) throws MessagingException {		
+	}
+
+	@Override
+	public Message reply(boolean replyToAll) throws MessagingException {
+		return null;
+	}
+
+	@Override
+	public void saveChanges() throws MessagingException {		
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
index 1fa7d12..4b736c6 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
@@ -18,8 +18,13 @@ package org.apache.camel.component.aws.ses;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Properties;
+
+import javax.mail.Message;
 
 import com.amazonaws.services.simpleemail.model.SendEmailRequest;
+import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
+
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.test.spring.CamelSpringTestSupport;
@@ -75,6 +80,24 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
         
         assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
     }
+    
+    @Test
+    public void sendRawMessage() throws Exception {
+        final MockMessage mess = new MockMessage();
+    	  
+        Exchange exchange = template.request("direct:start", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody(mess);
+            }
+        });
+        
+        assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
+        
+        SendRawEmailRequest sendRawEmailRequest = sesClient.getSendRawEmailRequest();
+        assertEquals("from@example.com", sendRawEmailRequest.getSource());
+        assertEquals(2, getTo(sendRawEmailRequest).size());
+    }
 
     @Test
     public void sendMessageUsingMessageHeaders() throws Exception {
@@ -123,4 +146,8 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
     private List<String> getTo(SendEmailRequest sendEmailRequest) {
         return sendEmailRequest.getDestination().getToAddresses();
     }
+    
+    private List<String> getTo(SendRawEmailRequest sendEmailRequest) {
+        return sendEmailRequest.getDestinations();
+    }
 }
\ No newline at end of file


[2/2] camel git commit: Fixed CS

Posted by ac...@apache.org.
Fixed CS


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/88fca852
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/88fca852
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/88fca852

Branch: refs/heads/master
Commit: 88fca852fcb327c0756aa805d16f1d899e0fb34e
Parents: 52495d3
Author: Andrea Cosentino <an...@gmail.com>
Authored: Sun Jul 12 12:36:15 2015 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Sun Jul 12 12:38:51 2015 +0200

----------------------------------------------------------------------
 .../camel/component/aws/ses/SesProducer.java    |  26 +-
 .../camel/component/aws/ses/MockMessage.java    | 392 +++++++++----------
 .../aws/ses/SesComponentSpringTest.java         |   3 +-
 3 files changed, 205 insertions(+), 216 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/88fca852/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
index f5ecaf2..7944ddb 100644
--- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
+++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
@@ -53,21 +53,21 @@ public class SesProducer extends DefaultProducer {
     }
 
     public void process(Exchange exchange) throws Exception {
-    	if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
-    		SendEmailRequest request = createMailRequest(exchange);
+        if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
+            SendEmailRequest request = createMailRequest(exchange);
             log.trace("Sending request [{}] from exchange [{}]...", request, exchange);            
             SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
             log.trace("Received result [{}]", result);
             Message message = getMessageForResponse(exchange);
             message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
-    	} else {
-    		SendRawEmailRequest request = createRawMailRequest(exchange);
+        } else {
+            SendRawEmailRequest request = createRawMailRequest(exchange);
             log.trace("Sending request [{}] from exchange [{}]...", request, exchange);            
             SendRawEmailResult result = getEndpoint().getSESClient().sendRawEmail(request);
             log.trace("Received result [{}]", result);
             Message message = getMessageForResponse(exchange);
             message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
-    	}
+        }
     }
 
     private SendEmailRequest createMailRequest(Exchange exchange) {
@@ -82,7 +82,7 @@ public class SesProducer extends DefaultProducer {
     }
     
     private SendRawEmailRequest createRawMailRequest(Exchange exchange) {
-    	SendRawEmailRequest request = new SendRawEmailRequest();
+        SendRawEmailRequest request = new SendRawEmailRequest();
         request.setSource(determineFrom(exchange));
         request.setDestinations(determineRawTo(exchange));
         request.setRawMessage(createRawMessage(exchange));
@@ -105,14 +105,14 @@ public class SesProducer extends DefaultProducer {
     private com.amazonaws.services.simpleemail.model.RawMessage createRawMessage(Exchange exchange) {
         com.amazonaws.services.simpleemail.model.RawMessage message = new com.amazonaws.services.simpleemail.model.RawMessage();
         javax.mail.Message content = exchange.getIn().getBody(javax.mail.Message.class);
-        OutputStream byteOutput=new ByteArrayOutputStream();
+        OutputStream byteOutput = new ByteArrayOutputStream();
         try {
-			content.writeTo(byteOutput);
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-        byte[] messageByteArray=((ByteArrayOutputStream)byteOutput).toByteArray();
+            content.writeTo(byteOutput);
+        } catch (Exception e) {
+            log.error("Cannot write to byte Array");
+            e.printStackTrace();
+        }
+        byte[] messageByteArray = ((ByteArrayOutputStream)byteOutput).toByteArray();
         message.setData(ByteBuffer.wrap(messageByteArray));
         return message;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/88fca852/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
index 5e4e0db..0d9cdef 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
@@ -31,205 +31,195 @@ import javax.mail.Multipart;
 
 public class MockMessage extends Message {
 
-	@Override
-	public int getSize() throws MessagingException {
-		return 0;
-	}
-
-	@Override
-	public int getLineCount() throws MessagingException {
-		return 0;
-	}
-
-	@Override
-	public String getContentType() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public boolean isMimeType(String mimeType) throws MessagingException {
-		return false;
-	}
-
-	@Override
-	public String getDisposition() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setDisposition(String disposition) throws MessagingException {		
-	}
-
-	@Override
-	public String getDescription() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setDescription(String description) throws MessagingException {
-	}
-
-	@Override
-	public String getFileName() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setFileName(String filename) throws MessagingException {
-	}
-
-	@Override
-	public InputStream getInputStream() throws IOException, MessagingException {
-		return null;
-	}
-
-	@Override
-	public DataHandler getDataHandler() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public Object getContent() throws IOException, MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setDataHandler(DataHandler dh) throws MessagingException {
-	}
-
-	@Override
-	public void setContent(Object obj, String type) throws MessagingException {
-	}
-
-	@Override
-	public void setText(String text) throws MessagingException {
-	}
-
-	@Override
-	public void setContent(Multipart mp) throws MessagingException {	
-	}
-
-	@Override
-	public void writeTo(OutputStream os) throws IOException, MessagingException {		
-	}
-
-	@Override
-	public String[] getHeader(String header_name) throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setHeader(String header_name, String header_value)
-			throws MessagingException {
-	}
-
-	@Override
-	public void addHeader(String header_name, String header_value)
-			throws MessagingException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public void removeHeader(String header_name) throws MessagingException {
-	}
-
-	@Override
-	public Enumeration getAllHeaders() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public Enumeration getMatchingHeaders(String[] header_names)
-			throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public Enumeration getNonMatchingHeaders(String[] header_names)
-			throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public Address[] getFrom() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setFrom() throws MessagingException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public void setFrom(Address address) throws MessagingException {	
-	}
-
-	@Override
-	public void addFrom(Address[] addresses) throws MessagingException {		
-	}
-
-	@Override
-	public Address[] getRecipients(RecipientType type)
-			throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setRecipients(RecipientType type, Address[] addresses)
-			throws MessagingException {
-	}
-
-	@Override
-	public void addRecipients(RecipientType type, Address[] addresses)
-			throws MessagingException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public String getSubject() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setSubject(String subject) throws MessagingException {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	public Date getSentDate() throws MessagingException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public void setSentDate(Date date) throws MessagingException {		
-	}
-
-	@Override
-	public Date getReceivedDate() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public Flags getFlags() throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void setFlags(Flags flag, boolean set) throws MessagingException {		
-	}
-
-	@Override
-	public Message reply(boolean replyToAll) throws MessagingException {
-		return null;
-	}
-
-	@Override
-	public void saveChanges() throws MessagingException {		
-	}
-
+    @Override
+    public int getSize() throws MessagingException {
+        return 0;
+    }
+
+    @Override
+    public int getLineCount() throws MessagingException {
+        return 0;
+    }
+
+    @Override
+    public String getContentType() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public boolean isMimeType(String mimeType) throws MessagingException {
+        return false;
+    }
+
+    @Override
+    public String getDisposition() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setDisposition(String disposition) throws MessagingException {
+    }
+
+    @Override
+    public String getDescription() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setDescription(String description) throws MessagingException {
+    }
+
+    @Override
+    public String getFileName() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setFileName(String filename) throws MessagingException {
+    }
+
+    @Override
+    public InputStream getInputStream() throws IOException, MessagingException {
+        return null;
+    }
+
+    @Override
+    public DataHandler getDataHandler() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public Object getContent() throws IOException, MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setDataHandler(DataHandler dh) throws MessagingException {
+    }
+
+    @Override
+    public void setContent(Object obj, String type) throws MessagingException {
+    }
+
+    @Override
+    public void setText(String text) throws MessagingException {
+    }
+    
+    @Override
+    public void setContent(Multipart mp) throws MessagingException {
+    }
+
+    @Override
+    public void writeTo(OutputStream os) throws IOException, MessagingException {
+    }
+
+    @Override
+    public String[] getHeader(String headername) throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setHeader(String headername, String headervalue)
+        throws MessagingException {
+    }
+
+    @Override
+    public void addHeader(String headername, String headervalue)
+        throws MessagingException {
+    }
+
+    @Override
+    public void removeHeader(String headername) throws MessagingException {
+    }
+
+    @Override
+    public Enumeration getAllHeaders() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public Enumeration getMatchingHeaders(String[] headernames)
+        throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public Enumeration getNonMatchingHeaders(String[] headernames)
+        throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public Address[] getFrom() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setFrom() throws MessagingException {
+    }
+
+    @Override
+    public void setFrom(Address address) throws MessagingException {
+    }
+
+    @Override
+    public void addFrom(Address[] addresses) throws MessagingException {
+    }
+
+    @Override
+    public Address[] getRecipients(RecipientType type)
+        throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setRecipients(RecipientType type, Address[] addresses)
+        throws MessagingException {
+    }
+
+    @Override
+    public void addRecipients(RecipientType type, Address[] addresses)
+        throws MessagingException {
+    }
+
+    @Override
+    public String getSubject() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setSubject(String subject) throws MessagingException {
+    }
+
+    @Override
+    public Date getSentDate() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setSentDate(Date date) throws MessagingException {
+    }
+
+    @Override
+    public Date getReceivedDate() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public Flags getFlags() throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void setFlags(Flags flag, boolean set) throws MessagingException {
+    }
+
+    @Override
+    public Message reply(boolean replyToAll) throws MessagingException {
+        return null;
+    }
+
+    @Override
+    public void saveChanges() throws MessagingException {
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/88fca852/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
index 4b736c6..d087d24 100644
--- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
+++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
@@ -83,8 +83,7 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
     
     @Test
     public void sendRawMessage() throws Exception {
-        final MockMessage mess = new MockMessage();
-    	  
+        final MockMessage mess = new MockMessage();  
         Exchange exchange = template.request("direct:start", new Processor() {
             @Override
             public void process(Exchange exchange) throws Exception {


Re: [1/2] camel git commit: CAMEL-6649: AWS Simple Email Service - add attachment support

Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
I've already removed it in a fixed CS commit.
Anyway the Print stack trace must be avoided. 
I'm pushing a commit for this. 

-- 
Andrea Cosentino 
---------------------------------- 
Apache Camel Committer 
Email: ancosen1985@yahoo.com 
Twitter: @oscerd2 
Github: oscerd  


     On Sunday, July 12, 2015 10:29 PM, Andrea Cosentino <an...@yahoo.com.INVALID> wrote:
   

 Hi Claus,
Yes, you're right.
I'm removing the TODO and remove the stack trace :-)


 

-- 
Andrea Cosentino 
---------------------------------- 
Apache Camel Committer 
Email: ancosen1985@yahoo.com 
Twitter: @oscerd2 
Github: oscerd  


    On Sunday, July 12, 2015 2:48 PM, Claus Ibsen <cl...@gmail.com> wrote:
  

 Hi

There is a TODO in this commit.

Also we should not swallow exception and do a e.printStackTrace.
Instead what we often do is either rethrow or wrap the caused
exception in a runtime so it can be propagated up.



On Sun, Jul 12, 2015 at 12:40 PM,  <ac...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>  refs/heads/master 308529ff3 -> 88fca852f
>
>
> CAMEL-6649: AWS Simple Email Service - add attachment support
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/52495d3c
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/52495d3c
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/52495d3c
>
> Branch: refs/heads/master
> Commit: 52495d3cacb0f796c0f5c86abb915e5733b717a4
> Parents: 308529f
> Author: Andrea Cosentino <an...@gmail.com>
> Authored: Sun Jul 12 12:05:52 2015 +0200
> Committer: Andrea Cosentino <an...@gmail.com>
> Committed: Sun Jul 12 12:38:43 2015 +0200
>
> ----------------------------------------------------------------------
>  .../camel/component/aws/ses/SesProducer.java    |  67 +++++-
>  .../component/aws/ses/AmazonSESClientMock.java  |  16 ++
>  .../camel/component/aws/ses/MockMessage.java    | 235 +++++++++++++++++++
>  .../aws/ses/SesComponentSpringTest.java        |  27 +++
>  4 files changed, 337 insertions(+), 8 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> index 78a0295..f5ecaf2 100644
> --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> @@ -16,14 +16,26 @@
>  */
>  package org.apache.camel.component.aws.ses;
>
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.io.OutputStream;
> +import java.nio.ByteBuffer;
>  import java.util.Collection;
>  import java.util.List;
> +import java.util.Map;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.MessagingException;
> +import javax.mail.internet.MimeMessage;
>
>  import com.amazonaws.services.simpleemail.model.Body;
>  import com.amazonaws.services.simpleemail.model.Content;
>  import com.amazonaws.services.simpleemail.model.Destination;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
> +
>  import org.apache.camel.Endpoint;
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Message;
> @@ -41,14 +53,21 @@ public class SesProducer extends DefaultProducer {
>      }
>
>      public void process(Exchange exchange) throws Exception {
> -        SendEmailRequest request = createMailRequest(exchange);
> -        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> -
> -        SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> -
> -        log.trace("Received result [{}]", result);
> -        Message message = getMessageForResponse(exchange);
> -        message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
> +              SendEmailRequest request = createMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      } else {
> +              SendRawEmailRequest request = createRawMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendRawEmailResult result = getEndpoint().getSESClient().sendRawEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      }
>      }
>
>      private SendEmailRequest createMailRequest(Exchange exchange) {
> @@ -61,6 +80,14 @@ public class SesProducer extends DefaultProducer {
>
>          return request;
>      }
> +
> +    private SendRawEmailRequest createRawMailRequest(Exchange exchange) {
> +      SendRawEmailRequest request = new SendRawEmailRequest();
> +        request.setSource(determineFrom(exchange));
> +        request.setDestinations(determineRawTo(exchange));
> +        request.setRawMessage(createRawMessage(exchange));
> +        return request;
> +    }
>
>      private com.amazonaws.services.simpleemail.model.Message createMessage(Exchange exchange) {
>          com.amazonaws.services.simpleemail.model.Message message = new com.amazonaws.services.simpleemail.model.Message();
> @@ -75,6 +102,21 @@ public class SesProducer extends DefaultProducer {
>          return message;
>      }
>
> +    private com.amazonaws.services.simpleemail.model.RawMessage createRawMessage(Exchange exchange) {
> +        com.amazonaws.services.simpleemail.model.RawMessage message = new com.amazonaws.services.simpleemail.model.RawMessage();
> +        javax.mail.Message content = exchange.getIn().getBody(javax.mail.Message.class);
> +        OutputStream byteOutput=new ByteArrayOutputStream();
> +        try {
> +                      content.writeTo(byteOutput);
> +              } catch (Exception e) {
> +                      // TODO Auto-generated catch block
> +                      e.printStackTrace();
> +              }
> +        byte[] messageByteArray=((ByteArrayOutputStream)byteOutput).toByteArray();
> +        message.setData(ByteBuffer.wrap(messageByteArray));
> +        return message;
> +    }
> +
>      @SuppressWarnings("unchecked")
>      private Collection<String> determineReplyToAddresses(Exchange exchange) {
>          List<String> replyToAddresses = exchange.getIn().getHeader(SesConstants.REPLY_TO_ADDRESSES, List.class);
> @@ -100,6 +142,15 @@ public class SesProducer extends DefaultProducer {
>          }
>          return new Destination(to);
>      }
> +
> +    @SuppressWarnings("unchecked")
> +    private List determineRawTo(Exchange exchange) {
> +        List<String> to = exchange.getIn().getHeader(SesConstants.TO, List.class);
> +        if (to == null) {
> +            to = getConfiguration().getTo();
> +        }
> +        return to;
> +    }
>
>      private String determineFrom(Exchange exchange) {
>          String from = exchange.getIn().getHeader(SesConstants.FROM, String.class);
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> index 3ed184a..21669ee 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> @@ -22,9 +22,12 @@ import com.amazonaws.auth.BasicAWSCredentials;
>  import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
>
>  public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>      private SendEmailRequest sendEmailRequest;
> +    private SendRawEmailRequest sendRawEmailRequest;
>
>      public AmazonSESClientMock() {
>          super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
> @@ -38,8 +41,21 @@ public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>
>          return result;
>      }
> +
> +    @Override
> +    public SendRawEmailResult sendRawEmail(SendRawEmailRequest sendRawEmailRequest) throws AmazonServiceException, AmazonClientException {
> +        this.sendRawEmailRequest = sendRawEmailRequest;
> +        SendRawEmailResult result = new SendRawEmailResult();
> +        result.setMessageId("1");
> +
> +        return result;
> +    }
>
>      public SendEmailRequest getSendEmailRequest() {
>          return sendEmailRequest;
>      }
> +
> +    public SendRawEmailRequest getSendRawEmailRequest() {
> +        return sendRawEmailRequest;
> +    }
>  }
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> new file mode 100644
> index 0000000..5e4e0db
> --- /dev/null
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> @@ -0,0 +1,235 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.camel.component.aws.ses;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.OutputStream;
> +import java.util.Date;
> +import java.util.Enumeration;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.Address;
> +import javax.mail.Flags;
> +import javax.mail.Message;
> +import javax.mail.MessagingException;
> +import javax.mail.Multipart;
> +
> +public class MockMessage extends Message {
> +
> +      @Override
> +      public int getSize() throws MessagingException {
> +              return 0;
> +      }
> +
> +      @Override
> +      public int getLineCount() throws MessagingException {
> +              return 0;
> +      }
> +
> +      @Override
> +      public String getContentType() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public boolean isMimeType(String mimeType) throws MessagingException {
> +              return false;
> +      }
> +
> +      @Override
> +      public String getDisposition() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDisposition(String disposition) throws MessagingException {
> +      }
> +
> +      @Override
> +      public String getDescription() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDescription(String description) throws MessagingException {
> +      }
> +
> +      @Override
> +      public String getFileName() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFileName(String filename) throws MessagingException {
> +      }
> +
> +      @Override
> +      public InputStream getInputStream() throws IOException, MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public DataHandler getDataHandler() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Object getContent() throws IOException, MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDataHandler(DataHandler dh) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setContent(Object obj, String type) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setText(String text) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setContent(Multipart mp) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void writeTo(OutputStream os) throws IOException, MessagingException {
> +      }
> +
> +      @Override
> +      public String[] getHeader(String header_name) throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setHeader(String header_name, String header_value)
> +                      throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addHeader(String header_name, String header_value)
> +                      throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public void removeHeader(String header_name) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Enumeration getAllHeaders() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Enumeration getMatchingHeaders(String[] header_names)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Enumeration getNonMatchingHeaders(String[] header_names)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Address[] getFrom() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFrom() throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public void setFrom(Address address) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addFrom(Address[] addresses) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Address[] getRecipients(RecipientType type)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setRecipients(RecipientType type, Address[] addresses)
> +                      throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addRecipients(RecipientType type, Address[] addresses)
> +                      throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public String getSubject() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setSubject(String subject) throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public Date getSentDate() throws MessagingException {
> +              // TODO Auto-generated method stub
> +              return null;
> +      }
> +
> +      @Override
> +      public void setSentDate(Date date) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Date getReceivedDate() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Flags getFlags() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFlags(Flags flag, boolean set) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Message reply(boolean replyToAll) throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void saveChanges() throws MessagingException {
> +      }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> index 1fa7d12..4b736c6 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> @@ -18,8 +18,13 @@ package org.apache.camel.component.aws.ses;
>
>  import java.util.Arrays;
>  import java.util.List;
> +import java.util.Properties;
> +
> +import javax.mail.Message;
>
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Processor;
>  import org.apache.camel.test.spring.CamelSpringTestSupport;
> @@ -75,6 +80,24 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>
>          assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
>      }
> +
> +    @Test
> +    public void sendRawMessage() throws Exception {
> +        final MockMessage mess = new MockMessage();
> +
> +        Exchange exchange = template.request("direct:start", new Processor() {
> +            @Override
> +            public void process(Exchange exchange) throws Exception {
> +                exchange.getIn().setBody(mess);
> +            }
> +        });
> +
> +        assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
> +
> +        SendRawEmailRequest sendRawEmailRequest = sesClient.getSendRawEmailRequest();
> +        assertEquals("from@example.com", sendRawEmailRequest.getSource());
> +        assertEquals(2, getTo(sendRawEmailRequest).size());
> +    }
>
>      @Test
>      public void sendMessageUsingMessageHeaders() throws Exception {
> @@ -123,4 +146,8 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>      private List<String> getTo(SendEmailRequest sendEmailRequest) {
>          return sendEmailRequest.getDestination().getToAddresses();
>      }
> +
> +    private List<String> getTo(SendRawEmailRequest sendEmailRequest) {
> +        return sendEmailRequest.getDestinations();
> +    }
>  }
> \ No newline at end of file
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/




  

Re: [1/2] camel git commit: CAMEL-6649: AWS Simple Email Service - add attachment support

Posted by Andrea Cosentino <an...@yahoo.com.INVALID>.
Hi Claus,
Yes, you're right.
I'm removing the TODO and remove the stack trace :-)


 

-- 
Andrea Cosentino 
---------------------------------- 
Apache Camel Committer 
Email: ancosen1985@yahoo.com 
Twitter: @oscerd2 
Github: oscerd  


     On Sunday, July 12, 2015 2:48 PM, Claus Ibsen <cl...@gmail.com> wrote:
   

 Hi

There is a TODO in this commit.

Also we should not swallow exception and do a e.printStackTrace.
Instead what we often do is either rethrow or wrap the caused
exception in a runtime so it can be propagated up.



On Sun, Jul 12, 2015 at 12:40 PM,  <ac...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>  refs/heads/master 308529ff3 -> 88fca852f
>
>
> CAMEL-6649: AWS Simple Email Service - add attachment support
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/52495d3c
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/52495d3c
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/52495d3c
>
> Branch: refs/heads/master
> Commit: 52495d3cacb0f796c0f5c86abb915e5733b717a4
> Parents: 308529f
> Author: Andrea Cosentino <an...@gmail.com>
> Authored: Sun Jul 12 12:05:52 2015 +0200
> Committer: Andrea Cosentino <an...@gmail.com>
> Committed: Sun Jul 12 12:38:43 2015 +0200
>
> ----------------------------------------------------------------------
>  .../camel/component/aws/ses/SesProducer.java    |  67 +++++-
>  .../component/aws/ses/AmazonSESClientMock.java  |  16 ++
>  .../camel/component/aws/ses/MockMessage.java    | 235 +++++++++++++++++++
>  .../aws/ses/SesComponentSpringTest.java        |  27 +++
>  4 files changed, 337 insertions(+), 8 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> index 78a0295..f5ecaf2 100644
> --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> @@ -16,14 +16,26 @@
>  */
>  package org.apache.camel.component.aws.ses;
>
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.io.OutputStream;
> +import java.nio.ByteBuffer;
>  import java.util.Collection;
>  import java.util.List;
> +import java.util.Map;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.MessagingException;
> +import javax.mail.internet.MimeMessage;
>
>  import com.amazonaws.services.simpleemail.model.Body;
>  import com.amazonaws.services.simpleemail.model.Content;
>  import com.amazonaws.services.simpleemail.model.Destination;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
> +
>  import org.apache.camel.Endpoint;
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Message;
> @@ -41,14 +53,21 @@ public class SesProducer extends DefaultProducer {
>      }
>
>      public void process(Exchange exchange) throws Exception {
> -        SendEmailRequest request = createMailRequest(exchange);
> -        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> -
> -        SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> -
> -        log.trace("Received result [{}]", result);
> -        Message message = getMessageForResponse(exchange);
> -        message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
> +              SendEmailRequest request = createMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      } else {
> +              SendRawEmailRequest request = createRawMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendRawEmailResult result = getEndpoint().getSESClient().sendRawEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +      }
>      }
>
>      private SendEmailRequest createMailRequest(Exchange exchange) {
> @@ -61,6 +80,14 @@ public class SesProducer extends DefaultProducer {
>
>          return request;
>      }
> +
> +    private SendRawEmailRequest createRawMailRequest(Exchange exchange) {
> +      SendRawEmailRequest request = new SendRawEmailRequest();
> +        request.setSource(determineFrom(exchange));
> +        request.setDestinations(determineRawTo(exchange));
> +        request.setRawMessage(createRawMessage(exchange));
> +        return request;
> +    }
>
>      private com.amazonaws.services.simpleemail.model.Message createMessage(Exchange exchange) {
>          com.amazonaws.services.simpleemail.model.Message message = new com.amazonaws.services.simpleemail.model.Message();
> @@ -75,6 +102,21 @@ public class SesProducer extends DefaultProducer {
>          return message;
>      }
>
> +    private com.amazonaws.services.simpleemail.model.RawMessage createRawMessage(Exchange exchange) {
> +        com.amazonaws.services.simpleemail.model.RawMessage message = new com.amazonaws.services.simpleemail.model.RawMessage();
> +        javax.mail.Message content = exchange.getIn().getBody(javax.mail.Message.class);
> +        OutputStream byteOutput=new ByteArrayOutputStream();
> +        try {
> +                      content.writeTo(byteOutput);
> +              } catch (Exception e) {
> +                      // TODO Auto-generated catch block
> +                      e.printStackTrace();
> +              }
> +        byte[] messageByteArray=((ByteArrayOutputStream)byteOutput).toByteArray();
> +        message.setData(ByteBuffer.wrap(messageByteArray));
> +        return message;
> +    }
> +
>      @SuppressWarnings("unchecked")
>      private Collection<String> determineReplyToAddresses(Exchange exchange) {
>          List<String> replyToAddresses = exchange.getIn().getHeader(SesConstants.REPLY_TO_ADDRESSES, List.class);
> @@ -100,6 +142,15 @@ public class SesProducer extends DefaultProducer {
>          }
>          return new Destination(to);
>      }
> +
> +    @SuppressWarnings("unchecked")
> +    private List determineRawTo(Exchange exchange) {
> +        List<String> to = exchange.getIn().getHeader(SesConstants.TO, List.class);
> +        if (to == null) {
> +            to = getConfiguration().getTo();
> +        }
> +        return to;
> +    }
>
>      private String determineFrom(Exchange exchange) {
>          String from = exchange.getIn().getHeader(SesConstants.FROM, String.class);
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> index 3ed184a..21669ee 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> @@ -22,9 +22,12 @@ import com.amazonaws.auth.BasicAWSCredentials;
>  import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
>
>  public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>      private SendEmailRequest sendEmailRequest;
> +    private SendRawEmailRequest sendRawEmailRequest;
>
>      public AmazonSESClientMock() {
>          super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
> @@ -38,8 +41,21 @@ public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>
>          return result;
>      }
> +
> +    @Override
> +    public SendRawEmailResult sendRawEmail(SendRawEmailRequest sendRawEmailRequest) throws AmazonServiceException, AmazonClientException {
> +        this.sendRawEmailRequest = sendRawEmailRequest;
> +        SendRawEmailResult result = new SendRawEmailResult();
> +        result.setMessageId("1");
> +
> +        return result;
> +    }
>
>      public SendEmailRequest getSendEmailRequest() {
>          return sendEmailRequest;
>      }
> +
> +    public SendRawEmailRequest getSendRawEmailRequest() {
> +        return sendRawEmailRequest;
> +    }
>  }
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> new file mode 100644
> index 0000000..5e4e0db
> --- /dev/null
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> @@ -0,0 +1,235 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.camel.component.aws.ses;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.OutputStream;
> +import java.util.Date;
> +import java.util.Enumeration;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.Address;
> +import javax.mail.Flags;
> +import javax.mail.Message;
> +import javax.mail.MessagingException;
> +import javax.mail.Multipart;
> +
> +public class MockMessage extends Message {
> +
> +      @Override
> +      public int getSize() throws MessagingException {
> +              return 0;
> +      }
> +
> +      @Override
> +      public int getLineCount() throws MessagingException {
> +              return 0;
> +      }
> +
> +      @Override
> +      public String getContentType() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public boolean isMimeType(String mimeType) throws MessagingException {
> +              return false;
> +      }
> +
> +      @Override
> +      public String getDisposition() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDisposition(String disposition) throws MessagingException {
> +      }
> +
> +      @Override
> +      public String getDescription() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDescription(String description) throws MessagingException {
> +      }
> +
> +      @Override
> +      public String getFileName() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFileName(String filename) throws MessagingException {
> +      }
> +
> +      @Override
> +      public InputStream getInputStream() throws IOException, MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public DataHandler getDataHandler() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Object getContent() throws IOException, MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setDataHandler(DataHandler dh) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setContent(Object obj, String type) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setText(String text) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void setContent(Multipart mp) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void writeTo(OutputStream os) throws IOException, MessagingException {
> +      }
> +
> +      @Override
> +      public String[] getHeader(String header_name) throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setHeader(String header_name, String header_value)
> +                      throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addHeader(String header_name, String header_value)
> +                      throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public void removeHeader(String header_name) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Enumeration getAllHeaders() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Enumeration getMatchingHeaders(String[] header_names)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Enumeration getNonMatchingHeaders(String[] header_names)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Address[] getFrom() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFrom() throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public void setFrom(Address address) throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addFrom(Address[] addresses) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Address[] getRecipients(RecipientType type)
> +                      throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setRecipients(RecipientType type, Address[] addresses)
> +                      throws MessagingException {
> +      }
> +
> +      @Override
> +      public void addRecipients(RecipientType type, Address[] addresses)
> +                      throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public String getSubject() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setSubject(String subject) throws MessagingException {
> +              // TODO Auto-generated method stub
> +
> +      }
> +
> +      @Override
> +      public Date getSentDate() throws MessagingException {
> +              // TODO Auto-generated method stub
> +              return null;
> +      }
> +
> +      @Override
> +      public void setSentDate(Date date) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Date getReceivedDate() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public Flags getFlags() throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void setFlags(Flags flag, boolean set) throws MessagingException {
> +      }
> +
> +      @Override
> +      public Message reply(boolean replyToAll) throws MessagingException {
> +              return null;
> +      }
> +
> +      @Override
> +      public void saveChanges() throws MessagingException {
> +      }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> index 1fa7d12..4b736c6 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> @@ -18,8 +18,13 @@ package org.apache.camel.component.aws.ses;
>
>  import java.util.Arrays;
>  import java.util.List;
> +import java.util.Properties;
> +
> +import javax.mail.Message;
>
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Processor;
>  import org.apache.camel.test.spring.CamelSpringTestSupport;
> @@ -75,6 +80,24 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>
>          assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
>      }
> +
> +    @Test
> +    public void sendRawMessage() throws Exception {
> +        final MockMessage mess = new MockMessage();
> +
> +        Exchange exchange = template.request("direct:start", new Processor() {
> +            @Override
> +            public void process(Exchange exchange) throws Exception {
> +                exchange.getIn().setBody(mess);
> +            }
> +        });
> +
> +        assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
> +
> +        SendRawEmailRequest sendRawEmailRequest = sesClient.getSendRawEmailRequest();
> +        assertEquals("from@example.com", sendRawEmailRequest.getSource());
> +        assertEquals(2, getTo(sendRawEmailRequest).size());
> +    }
>
>      @Test
>      public void sendMessageUsingMessageHeaders() throws Exception {
> @@ -123,4 +146,8 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>      private List<String> getTo(SendEmailRequest sendEmailRequest) {
>          return sendEmailRequest.getDestination().getToAddresses();
>      }
> +
> +    private List<String> getTo(SendRawEmailRequest sendEmailRequest) {
> +        return sendEmailRequest.getDestinations();
> +    }
>  }
> \ No newline at end of file
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/


  

Re: [1/2] camel git commit: CAMEL-6649: AWS Simple Email Service - add attachment support

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

There is a TODO in this commit.

Also we should not swallow exception and do a e.printStackTrace.
Instead what we often do is either rethrow or wrap the caused
exception in a runtime so it can be propagated up.



On Sun, Jul 12, 2015 at 12:40 PM,  <ac...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/master 308529ff3 -> 88fca852f
>
>
> CAMEL-6649: AWS Simple Email Service - add attachment support
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/52495d3c
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/52495d3c
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/52495d3c
>
> Branch: refs/heads/master
> Commit: 52495d3cacb0f796c0f5c86abb915e5733b717a4
> Parents: 308529f
> Author: Andrea Cosentino <an...@gmail.com>
> Authored: Sun Jul 12 12:05:52 2015 +0200
> Committer: Andrea Cosentino <an...@gmail.com>
> Committed: Sun Jul 12 12:38:43 2015 +0200
>
> ----------------------------------------------------------------------
>  .../camel/component/aws/ses/SesProducer.java    |  67 +++++-
>  .../component/aws/ses/AmazonSESClientMock.java  |  16 ++
>  .../camel/component/aws/ses/MockMessage.java    | 235 +++++++++++++++++++
>  .../aws/ses/SesComponentSpringTest.java         |  27 +++
>  4 files changed, 337 insertions(+), 8 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> index 78a0295..f5ecaf2 100644
> --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/ses/SesProducer.java
> @@ -16,14 +16,26 @@
>   */
>  package org.apache.camel.component.aws.ses;
>
> +import java.io.ByteArrayOutputStream;
> +import java.io.IOException;
> +import java.io.OutputStream;
> +import java.nio.ByteBuffer;
>  import java.util.Collection;
>  import java.util.List;
> +import java.util.Map;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.MessagingException;
> +import javax.mail.internet.MimeMessage;
>
>  import com.amazonaws.services.simpleemail.model.Body;
>  import com.amazonaws.services.simpleemail.model.Content;
>  import com.amazonaws.services.simpleemail.model.Destination;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
> +
>  import org.apache.camel.Endpoint;
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Message;
> @@ -41,14 +53,21 @@ public class SesProducer extends DefaultProducer {
>      }
>
>      public void process(Exchange exchange) throws Exception {
> -        SendEmailRequest request = createMailRequest(exchange);
> -        log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> -
> -        SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> -
> -        log.trace("Received result [{}]", result);
> -        Message message = getMessageForResponse(exchange);
> -        message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +       if (!(exchange.getIn().getBody() instanceof javax.mail.Message)) {
> +               SendEmailRequest request = createMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendEmailResult result = getEndpoint().getSESClient().sendEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +       } else {
> +               SendRawEmailRequest request = createRawMailRequest(exchange);
> +            log.trace("Sending request [{}] from exchange [{}]...", request, exchange);
> +            SendRawEmailResult result = getEndpoint().getSESClient().sendRawEmail(request);
> +            log.trace("Received result [{}]", result);
> +            Message message = getMessageForResponse(exchange);
> +            message.setHeader(SesConstants.MESSAGE_ID, result.getMessageId());
> +       }
>      }
>
>      private SendEmailRequest createMailRequest(Exchange exchange) {
> @@ -61,6 +80,14 @@ public class SesProducer extends DefaultProducer {
>
>          return request;
>      }
> +
> +    private SendRawEmailRequest createRawMailRequest(Exchange exchange) {
> +       SendRawEmailRequest request = new SendRawEmailRequest();
> +        request.setSource(determineFrom(exchange));
> +        request.setDestinations(determineRawTo(exchange));
> +        request.setRawMessage(createRawMessage(exchange));
> +        return request;
> +    }
>
>      private com.amazonaws.services.simpleemail.model.Message createMessage(Exchange exchange) {
>          com.amazonaws.services.simpleemail.model.Message message = new com.amazonaws.services.simpleemail.model.Message();
> @@ -75,6 +102,21 @@ public class SesProducer extends DefaultProducer {
>          return message;
>      }
>
> +    private com.amazonaws.services.simpleemail.model.RawMessage createRawMessage(Exchange exchange) {
> +        com.amazonaws.services.simpleemail.model.RawMessage message = new com.amazonaws.services.simpleemail.model.RawMessage();
> +        javax.mail.Message content = exchange.getIn().getBody(javax.mail.Message.class);
> +        OutputStream byteOutput=new ByteArrayOutputStream();
> +        try {
> +                       content.writeTo(byteOutput);
> +               } catch (Exception e) {
> +                       // TODO Auto-generated catch block
> +                       e.printStackTrace();
> +               }
> +        byte[] messageByteArray=((ByteArrayOutputStream)byteOutput).toByteArray();
> +        message.setData(ByteBuffer.wrap(messageByteArray));
> +        return message;
> +    }
> +
>      @SuppressWarnings("unchecked")
>      private Collection<String> determineReplyToAddresses(Exchange exchange) {
>          List<String> replyToAddresses = exchange.getIn().getHeader(SesConstants.REPLY_TO_ADDRESSES, List.class);
> @@ -100,6 +142,15 @@ public class SesProducer extends DefaultProducer {
>          }
>          return new Destination(to);
>      }
> +
> +    @SuppressWarnings("unchecked")
> +    private List determineRawTo(Exchange exchange) {
> +        List<String> to = exchange.getIn().getHeader(SesConstants.TO, List.class);
> +        if (to == null) {
> +            to = getConfiguration().getTo();
> +        }
> +        return to;
> +    }
>
>      private String determineFrom(Exchange exchange) {
>          String from = exchange.getIn().getHeader(SesConstants.FROM, String.class);
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> index 3ed184a..21669ee 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/AmazonSESClientMock.java
> @@ -22,9 +22,12 @@ import com.amazonaws.auth.BasicAWSCredentials;
>  import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient;
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
>  import com.amazonaws.services.simpleemail.model.SendEmailResult;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailResult;
>
>  public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>      private SendEmailRequest sendEmailRequest;
> +    private SendRawEmailRequest sendRawEmailRequest;
>
>      public AmazonSESClientMock() {
>          super(new BasicAWSCredentials("myAccessKey", "mySecretKey"));
> @@ -38,8 +41,21 @@ public class AmazonSESClientMock extends AmazonSimpleEmailServiceClient {
>
>          return result;
>      }
> +
> +    @Override
> +    public SendRawEmailResult sendRawEmail(SendRawEmailRequest sendRawEmailRequest) throws AmazonServiceException, AmazonClientException {
> +        this.sendRawEmailRequest = sendRawEmailRequest;
> +        SendRawEmailResult result = new SendRawEmailResult();
> +        result.setMessageId("1");
> +
> +        return result;
> +    }
>
>      public SendEmailRequest getSendEmailRequest() {
>          return sendEmailRequest;
>      }
> +
> +    public SendRawEmailRequest getSendRawEmailRequest() {
> +        return sendRawEmailRequest;
> +    }
>  }
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> new file mode 100644
> index 0000000..5e4e0db
> --- /dev/null
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/MockMessage.java
> @@ -0,0 +1,235 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +package org.apache.camel.component.aws.ses;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.io.OutputStream;
> +import java.util.Date;
> +import java.util.Enumeration;
> +
> +import javax.activation.DataHandler;
> +import javax.mail.Address;
> +import javax.mail.Flags;
> +import javax.mail.Message;
> +import javax.mail.MessagingException;
> +import javax.mail.Multipart;
> +
> +public class MockMessage extends Message {
> +
> +       @Override
> +       public int getSize() throws MessagingException {
> +               return 0;
> +       }
> +
> +       @Override
> +       public int getLineCount() throws MessagingException {
> +               return 0;
> +       }
> +
> +       @Override
> +       public String getContentType() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public boolean isMimeType(String mimeType) throws MessagingException {
> +               return false;
> +       }
> +
> +       @Override
> +       public String getDisposition() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setDisposition(String disposition) throws MessagingException {
> +       }
> +
> +       @Override
> +       public String getDescription() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setDescription(String description) throws MessagingException {
> +       }
> +
> +       @Override
> +       public String getFileName() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setFileName(String filename) throws MessagingException {
> +       }
> +
> +       @Override
> +       public InputStream getInputStream() throws IOException, MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public DataHandler getDataHandler() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public Object getContent() throws IOException, MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setDataHandler(DataHandler dh) throws MessagingException {
> +       }
> +
> +       @Override
> +       public void setContent(Object obj, String type) throws MessagingException {
> +       }
> +
> +       @Override
> +       public void setText(String text) throws MessagingException {
> +       }
> +
> +       @Override
> +       public void setContent(Multipart mp) throws MessagingException {
> +       }
> +
> +       @Override
> +       public void writeTo(OutputStream os) throws IOException, MessagingException {
> +       }
> +
> +       @Override
> +       public String[] getHeader(String header_name) throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setHeader(String header_name, String header_value)
> +                       throws MessagingException {
> +       }
> +
> +       @Override
> +       public void addHeader(String header_name, String header_value)
> +                       throws MessagingException {
> +               // TODO Auto-generated method stub
> +
> +       }
> +
> +       @Override
> +       public void removeHeader(String header_name) throws MessagingException {
> +       }
> +
> +       @Override
> +       public Enumeration getAllHeaders() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public Enumeration getMatchingHeaders(String[] header_names)
> +                       throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public Enumeration getNonMatchingHeaders(String[] header_names)
> +                       throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public Address[] getFrom() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setFrom() throws MessagingException {
> +               // TODO Auto-generated method stub
> +
> +       }
> +
> +       @Override
> +       public void setFrom(Address address) throws MessagingException {
> +       }
> +
> +       @Override
> +       public void addFrom(Address[] addresses) throws MessagingException {
> +       }
> +
> +       @Override
> +       public Address[] getRecipients(RecipientType type)
> +                       throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setRecipients(RecipientType type, Address[] addresses)
> +                       throws MessagingException {
> +       }
> +
> +       @Override
> +       public void addRecipients(RecipientType type, Address[] addresses)
> +                       throws MessagingException {
> +               // TODO Auto-generated method stub
> +
> +       }
> +
> +       @Override
> +       public String getSubject() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setSubject(String subject) throws MessagingException {
> +               // TODO Auto-generated method stub
> +
> +       }
> +
> +       @Override
> +       public Date getSentDate() throws MessagingException {
> +               // TODO Auto-generated method stub
> +               return null;
> +       }
> +
> +       @Override
> +       public void setSentDate(Date date) throws MessagingException {
> +       }
> +
> +       @Override
> +       public Date getReceivedDate() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public Flags getFlags() throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void setFlags(Flags flag, boolean set) throws MessagingException {
> +       }
> +
> +       @Override
> +       public Message reply(boolean replyToAll) throws MessagingException {
> +               return null;
> +       }
> +
> +       @Override
> +       public void saveChanges() throws MessagingException {
> +       }
> +
> +}
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/52495d3c/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> index 1fa7d12..4b736c6 100644
> --- a/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> +++ b/components/camel-aws/src/test/java/org/apache/camel/component/aws/ses/SesComponentSpringTest.java
> @@ -18,8 +18,13 @@ package org.apache.camel.component.aws.ses;
>
>  import java.util.Arrays;
>  import java.util.List;
> +import java.util.Properties;
> +
> +import javax.mail.Message;
>
>  import com.amazonaws.services.simpleemail.model.SendEmailRequest;
> +import com.amazonaws.services.simpleemail.model.SendRawEmailRequest;
> +
>  import org.apache.camel.Exchange;
>  import org.apache.camel.Processor;
>  import org.apache.camel.test.spring.CamelSpringTestSupport;
> @@ -75,6 +80,24 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>
>          assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
>      }
> +
> +    @Test
> +    public void sendRawMessage() throws Exception {
> +        final MockMessage mess = new MockMessage();
> +
> +        Exchange exchange = template.request("direct:start", new Processor() {
> +            @Override
> +            public void process(Exchange exchange) throws Exception {
> +                exchange.getIn().setBody(mess);
> +            }
> +        });
> +
> +        assertEquals("1", exchange.getOut().getHeader(SesConstants.MESSAGE_ID));
> +
> +        SendRawEmailRequest sendRawEmailRequest = sesClient.getSendRawEmailRequest();
> +        assertEquals("from@example.com", sendRawEmailRequest.getSource());
> +        assertEquals(2, getTo(sendRawEmailRequest).size());
> +    }
>
>      @Test
>      public void sendMessageUsingMessageHeaders() throws Exception {
> @@ -123,4 +146,8 @@ public class SesComponentSpringTest extends CamelSpringTestSupport {
>      private List<String> getTo(SendEmailRequest sendEmailRequest) {
>          return sendEmailRequest.getDestination().getToAddresses();
>      }
> +
> +    private List<String> getTo(SendRawEmailRequest sendEmailRequest) {
> +        return sendEmailRequest.getDestinations();
> +    }
>  }
> \ No newline at end of file
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/