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/