You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "Ignasi Barrera (JIRA)" <ji...@apache.org> on 2015/10/21 10:43:27 UTC

[jira] [Resolved] (JCLOUDS-1008) Google storage provider cannot retrieve "foo/bar"

     [ https://issues.apache.org/jira/browse/JCLOUDS-1008?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ignasi Barrera resolved JCLOUDS-1008.
-------------------------------------
       Resolution: Fixed
    Fix Version/s: 2.0.0

> 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
>             Fix For: 2.0.0
>
>
> 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)