Updated Branches:
  refs/heads/master edf0e1d35 -> 494af0005

CAMEL-6887 Supporting to set the ContentMetadata of the Payload object through 
message header


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

Branch: refs/heads/master
Commit: 494af000565e256281091850688a632f7c15ec3c
Parents: 626a5ab
Author: Willem Jiang <ningji...@apache.org>
Authored: Wed Oct 23 21:39:53 2013 +0800
Committer: Willem Jiang <ningji...@apache.org>
Committed: Wed Oct 23 21:41:47 2013 +0800

----------------------------------------------------------------------
 .../component/jclouds/JcloudsConstants.java     |  5 +++
 .../jclouds/JcloudsPayloadConverter.java        | 42 +++++++++++++++++++-
 2 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/494af000/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
index fd15f86..e5481ef 100644
--- 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
+++ 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsConstants.java
@@ -34,6 +34,11 @@ public final class JcloudsConstants {
     public static final String CREATE_NODE = "CamelJcloudsCreateNode";
     public static final String DESTROY_NODE = "CamelJcloudsDestroyNode";
     public static final String RUN_SCRIPT = "CamelJcloudsRunScript";
+    
+    public static final String CONTENT_LANGUAGE = 
"CamelJcloudsContentLanguage";
+    public static final String CONTENT_ENCODING = 
"CamelJcloudsContentEncoding";
+    public static final String CONTENT_DISPOSITION = 
"CamelJcloudsContentDisposition";
+    public static final String PAYLOAD_EXPIRES = "CamelJcloudsPayloadExpires";
 
     public static final String IMAGE_ID = "CamelJcloudsImageId";
     public static final String LOCATION_ID = "CamelJcloudsLocationId";

http://git-wip-us.apache.org/repos/asf/camel/blob/494af000/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
index 11e904b..57a9269 100644
--- 
a/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
+++ 
b/components/camel-jclouds/src/main/java/org/apache/camel/component/jclouds/JcloudsPayloadConverter.java
@@ -19,6 +19,8 @@ package org.apache.camel.component.jclouds;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Date;
+
 import javax.xml.transform.stream.StreamSource;
 import com.google.common.io.ByteStreams;
 import com.google.common.io.InputSupplier;
@@ -31,6 +33,7 @@ import org.apache.camel.converter.stream.CachedOutputStream;
 import org.apache.camel.converter.stream.StreamSourceCache;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ObjectHelper;
 import org.jclouds.io.Payload;
 import org.jclouds.io.payloads.ByteArrayPayload;
 import org.jclouds.io.payloads.FilePayload;
@@ -58,6 +61,40 @@ public final class JcloudsPayloadConverter {
     public static Payload toPayload(File file) {
         return new FilePayload(file);
     }
+    
+    protected static Payload setContentMetadata(Payload payload, Exchange 
exchange) {
+        // Just add an NPE check on the payload
+        if (exchange == null) {
+            return payload;
+        }
+        
+        String contentType = exchange.getIn().getHeader(Exchange.CONTENT_TYPE, 
String.class);
+        String contentEncoding = 
exchange.getIn().getHeader(Exchange.CONTENT_ENCODING, String.class);
+        String contentDisposition = 
exchange.getIn().getHeader(JcloudsConstants.CONTENT_DISPOSITION, String.class);
+        String contentLanguage = 
exchange.getIn().getHeader(JcloudsConstants.CONTENT_LANGUAGE, String.class);
+        Date payloadExpires = 
exchange.getIn().getHeader(JcloudsConstants.PAYLOAD_EXPIRES, Date.class);
+        
+        if (ObjectHelper.isNotEmpty(contentType)) {
+            payload.getContentMetadata().setContentType(contentType);
+        }
+        
+        if (ObjectHelper.isNotEmpty(contentEncoding)) {
+            payload.getContentMetadata().setContentEncoding(contentEncoding);
+        }
+        
+        if (ObjectHelper.isNotEmpty(contentDisposition)) {
+            
payload.getContentMetadata().setContentDisposition(contentDisposition);
+        }
+        
+        if (ObjectHelper.isNotEmpty(contentLanguage)) {
+            payload.getContentMetadata().setContentLanguage(contentLanguage);
+        }
+        
+        if (ObjectHelper.isNotEmpty(payloadExpires)) {
+            payload.getContentMetadata().setExpires(payloadExpires);
+        }
+        return payload;
+    }
 
     @Converter
     public static Payload toPayload(InputStream is, Exchange exchange) throws 
IOException {
@@ -76,11 +113,11 @@ public final class JcloudsPayloadConverter {
 
     @Converter
     public static Payload toPayload(StreamSource source, Exchange exchange) 
throws IOException {
-        return toPayload(new StreamSourceCache(source, exchange));
+        return toPayload(new StreamSourceCache(source, exchange), exchange);
     }
 
     @Converter
-    public static Payload toPayload(final StreamSourceCache cache) throws 
IOException {
+    public static Payload toPayload(final StreamSourceCache cache, Exchange 
exchange) throws IOException {
         long contentLength = ByteStreams.length(new 
InputSupplier<InputStream>() {
             @Override
             public InputStream getInput() throws IOException {
@@ -90,6 +127,7 @@ public final class JcloudsPayloadConverter {
         cache.reset();
         InputStreamPayload payload = new 
InputStreamPayload(cache.getInputStream());
         payload.getContentMetadata().setContentLength(contentLength);
+        setContentMetadata(payload, exchange);
         return payload;
     }
 

Reply via email to