You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/03/21 09:47:53 UTC
[3/5] git commit: CAMEL-7231: Support receiving attachments with
Spring-WS
CAMEL-7231: Support receiving attachments with Spring-WS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/114de369
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/114de369
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/114de369
Branch: refs/heads/camel-2.13.x
Commit: 114de369714c790252dfe6d1c193b6a830a02c08
Parents: e9ab2b9
Author: Richard Kettelerij <r....@avisi.nl>
Authored: Mon Mar 17 15:45:10 2014 +0100
Committer: Willem Jiang <wi...@gmail.com>
Committed: Fri Mar 21 15:57:10 2014 +0800
----------------------------------------------------------------------
.../spring/ws/SpringWebserviceConsumer.java | 25 ++++++++++++++++----
1 file changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/114de369/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
index 4a5ee7d..5514ff5 100644
--- a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
+++ b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
@@ -32,6 +32,8 @@ import org.apache.camel.impl.DefaultConsumer;
import org.apache.camel.impl.DefaultExchange;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.context.MessageContext;
+import org.springframework.ws.mime.Attachment;
+import org.springframework.ws.mime.MimeMessage;
import org.springframework.ws.server.endpoint.MessageEndpoint;
import org.springframework.ws.soap.SoapHeader;
import org.springframework.ws.soap.SoapHeaderElement;
@@ -44,7 +46,7 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
public SpringWebserviceConsumer(Endpoint endpoint, Processor processor) {
super(endpoint, processor);
- this.endpoint = (SpringWebserviceEndpoint) endpoint;
+ this.endpoint = (SpringWebserviceEndpoint)endpoint;
this.configuration = this.endpoint.getConfiguration();
}
@@ -81,10 +83,12 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
WebServiceMessage request = messageContext.getRequest();
SpringWebserviceMessage inMessage = new SpringWebserviceMessage(request);
extractSourceFromSoapHeader(inMessage.getHeaders(), request);
+ extractAttachmentsFromRequest(request, inMessage);
exchange.setIn(inMessage);
}
- private void populateExchangeWithPropertiesFromMessageContext(MessageContext messageContext, Exchange exchange) {
+ private void populateExchangeWithPropertiesFromMessageContext(MessageContext messageContext,
+ Exchange exchange) {
// convert WebserviceMessage properties (added through interceptors) to
// Camel exchange properties
String[] propertyNames = messageContext.getPropertyNames();
@@ -100,12 +104,12 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
* it as a header with the key SpringWebserviceConstants.SPRING_WS_SOAP_HEADER
* and a value of type Source.
*
- * @param headers the Exchange Headers
- * @param request the WebService Request
+ * @param headers the Exchange Headers
+ * @param request the WebService Request
*/
private void extractSourceFromSoapHeader(Map<String, Object> headers, WebServiceMessage request) {
if (request instanceof SoapMessage) {
- SoapMessage soapMessage = (SoapMessage) request;
+ SoapMessage soapMessage = (SoapMessage)request;
SoapHeader soapHeader = soapMessage.getSoapHeader();
if (soapHeader != null) {
@@ -131,6 +135,17 @@ public class SpringWebserviceConsumer extends DefaultConsumer implements Message
}
}
+ private void extractAttachmentsFromRequest(final WebServiceMessage request,
+ final SpringWebserviceMessage inMessage) {
+ if (request instanceof MimeMessage) {
+ Iterator<Attachment> attachmentsIterator = ((MimeMessage)request).getAttachments();
+ while (attachmentsIterator.hasNext()) {
+ Attachment attachment = attachmentsIterator.next();
+ inMessage.addAttachment(attachment.getContentId(), attachment.getDataHandler());
+ }
+ }
+ }
+
@Override
protected void doStop() throws Exception {
if (configuration.getEndpointMapping() != null) {