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 Tue, 20 Oct 2015 22:25:27 GMT

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

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

Commit 5bbcb8342f9eb5aadcb99885931891e5a8362255 in jclouds's branch refs/heads/master from
[~timuralp]
[ https://git-wip-us.apache.org/repos/asf?p=jclouds.git;h=5bbcb83 ]

JCLOUDS-1008: Add @Encoded to @QueryParam.

Adds support for the @Encoded option for the @QueryParam annotation.
The @Encoded params are not encoded, while all parameters that don't
have it are encoded. The change applies to the @QueryParam annotation
on a single parameter. There is no way to express @Encoded on the list
of parameters and their values in @QueryParams.

The big change is that query parameter encoding is now handled within
the annotation processor, as opposed to relying on the UriBuilder to
perform the encoding. This is required since the UriBuilder does not
have any information about additional annotations associated with each
of the query parameters.

Also, adds unit tests for making sure keys and values are properly
encoded when using the @QueryParams option.


> 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