You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2014/11/07 08:06:10 UTC

Re: camel git commit: CAMEL-8006 S3Producer should use File to upload directly

On Fri, Nov 7, 2014 at 7:38 AM,  <ni...@apache.org> wrote:
> Repository: camel
> Updated Branches:
>   refs/heads/master 4fa9ef24e -> ff87129bf
>
>
> CAMEL-8006 S3Producer should use File to upload directly
>
>
> Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ff87129b
> Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ff87129b
> Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ff87129b
>
> Branch: refs/heads/master
> Commit: ff87129bf08548e1f1825f2fcd90cb7dee37ca27
> Parents: 4fa9ef2
> Author: Willem Jiang <wi...@gmail.com>
> Authored: Fri Nov 7 14:37:52 2014 +0800
> Committer: Willem Jiang <wi...@gmail.com>
> Committed: Fri Nov 7 14:37:52 2014 +0800
>
> ----------------------------------------------------------------------
>  .../java/org/apache/camel/component/aws/s3/S3Producer.java   | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/camel/blob/ff87129b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
> ----------------------------------------------------------------------
> diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
> index 38db307..4d6f3ae 100644
> --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
> +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java
> @@ -167,11 +167,15 @@ public class S3Producer extends DefaultProducer {
>
>          File filePayload = null;
>          Object obj = exchange.getIn().getMandatoryBody();
> +        PutObjectRequest putObjectRequest = null;
>          if (obj instanceof File) {
>              filePayload = (File) obj;
> -        }

Hi

I think the Camel file component may wrap the body as a WrappedFile
instance etc. So you may need to add check for that too

        if (!allowFiles) {
            if (obj instanceof WrappedFile || obj instanceof File) {
                return prepend + "[Body is file based: " + obj + "]";
            }
        }

So you need to check for that and then call getFile to get the actual
file, eg pseudo code

if (body is wrapped file)
   body = wrapped file . getFile()
}

if (body is file) {
   ...
}



> -        PutObjectRequest putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(),
> +            // submit the request without loading it into memory
> +            putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(), determineKey(exchange), filePayload);
> +        } else {
> +            putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(),
>                  determineKey(exchange), exchange.getIn().getMandatoryBody(InputStream.class), objectMetadata);
> +        }
>
>          String storageClass = determineStorageClass(exchange);
>          if (storageClass != null) {
>



-- 
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: camel git commit: CAMEL-8006 S3Producer should use File to upload directly

Posted by Willem Jiang <wi...@gmail.com>.
Hi Claus,

Thanks for the suggestion, I will update the code shortly.

Regards,

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On November 7, 2014 at 3:08:27 PM, Claus Ibsen (claus.ibsen@gmail.com) wrote:
> On Fri, Nov 7, 2014 at 7:38 AM, wrote:
> > Repository: camel
> > Updated Branches:
> > refs/heads/master 4fa9ef24e -> ff87129bf
> >
> >
> > CAMEL-8006 S3Producer should use File to upload directly
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/camel/repo
> > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ff87129b
> > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ff87129b
> > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ff87129b
> >
> > Branch: refs/heads/master
> > Commit: ff87129bf08548e1f1825f2fcd90cb7dee37ca27
> > Parents: 4fa9ef2
> > Author: Willem Jiang  
> > Authored: Fri Nov 7 14:37:52 2014 +0800
> > Committer: Willem Jiang  
> > Committed: Fri Nov 7 14:37:52 2014 +0800
> >
> > ----------------------------------------------------------------------  
> > .../java/org/apache/camel/component/aws/s3/S3Producer.java | 8 ++++++--
> > 1 file changed, 6 insertions(+), 2 deletions(-)
> > ----------------------------------------------------------------------  
> >
> >
> > http://git-wip-us.apache.org/repos/asf/camel/blob/ff87129b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java  
> > ----------------------------------------------------------------------  
> > diff --git a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java  
> b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java  
> > index 38db307..4d6f3ae 100644
> > --- a/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java  
> > +++ b/components/camel-aws/src/main/java/org/apache/camel/component/aws/s3/S3Producer.java  
> > @@ -167,11 +167,15 @@ public class S3Producer extends DefaultProducer {
> >
> > File filePayload = null;
> > Object obj = exchange.getIn().getMandatoryBody();
> > + PutObjectRequest putObjectRequest = null;
> > if (obj instanceof File) {
> > filePayload = (File) obj;
> > - }
>  
> Hi
>  
> I think the Camel file component may wrap the body as a WrappedFile
> instance etc. So you may need to add check for that too
>  
> if (!allowFiles) {
> if (obj instanceof WrappedFile || obj instanceof File) {
> return prepend + "[Body is file based: " + obj + "]";
> }
> }
>  
> So you need to check for that and then call getFile to get the actual
> file, eg pseudo code
>  
> if (body is wrapped file)
> body = wrapped file . getFile()
> }
>  
> if (body is file) {
> ...
> }
>  
>  
>  
> > - PutObjectRequest putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(),  
> > + // submit the request without loading it into memory
> > + putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(),  
> determineKey(exchange), filePayload);
> > + } else {
> > + putObjectRequest = new PutObjectRequest(getConfiguration().getBucketName(),  
> > determineKey(exchange), exchange.getIn().getMandatoryBody(InputStream.class),  
> objectMetadata);
> > + }
> >
> > String storageClass = determineStorageClass(exchange);
> > if (storageClass != null) {
> >
>  
>  
>  
> --
> 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/
>