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/
>