jclouds-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCLOUDS-1008) Google storage provider cannot retrieve "foo/bar"
Date Wed, 21 Oct 2015 08:42:27 GMT

    [ https://issues.apache.org/jira/browse/JCLOUDS-1008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14966453#comment-14966453
] 

ASF subversion and git services commented on JCLOUDS-1008:
----------------------------------------------------------

Commit 81e5805e2d8871f977bb1cee98127406cd7a5863 in jclouds-labs-google's branch refs/heads/master
from [~timuralp]
[ https://git-wip-us.apache.org/repos/asf?p=jclouds-labs-google.git;h=81e5805 ]

JCLOUDS-1008: Use @Encoded with GCS.

Google cloud storage should use the @Encoded annotation with the
object names to make sure that the object is percent-encoded prior to
being submitted in the path of the request. This was previously broken
because the default path encoding ignores "/" and encodes the entire
string. The @Encoded annotation instructs jclouds annotation processor
to not encode the parameters to which it is attached and not to encode
the entire request path. Parameters that are not annotated with
@Encoded are URL encoded prior to being add to the path.


> Google storage provider cannot retrieve "foo/bar"
> -------------------------------------------------
>
>                 Key: JCLOUDS-1008
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1008
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-core, jclouds-labs-google
>    Affects Versions: 1.9.0, 1.9.1, 2.0.0
>            Reporter: Timur Alperovich
>
> The Google cloud storage provider can PUT, but not GET a blob containing "/" in its name.
When attempting to retrieve "foo/bar", _null_ is always returned.
> The reason for this behavior is twofold. First, Google expects "/" in the path parameters
to be percent-encoded. Secondly, jclouds-core does not have a way to express that a specific
path parameter should be encoded prior to being added to the path.
> Currently, the rest processor does the following for the endpoint: assemble all of the
tokens together and call {code}urlEncode(){code} on the result. When it does so, it also skips
encoding any "/" characters. If an encoded token is passed to the processor, it ends up being
encoded twice, as the "%" character is encoded as %25.
> jclouds-core should add {code}@Encoded{code} parameter annotation, which would encode
each parameter individually (including any "/" characters) before assembling the URL. In this
case, the consumers of the API must make sure that they do not need the entire path to be
encoded.
> I plan to submit a PR to add the annotation and to use it in the google-cloud-storage
provider. When the annotation is not used, endpoints will be processed as is.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message