On Dec 3, 2009, at 1:19 PM, Paul Sandoz wrote:
>
> On Dec 3, 2009, at 1:00 PM, Martin Matula wrote:
>
>> Hi,
>>
>> On Dec 3, 2009, at 12:26 PM, Paul Sandoz wrote:
>>
>>> Hi Micha,
>>>
>>> The current method of contextual encoding is by design in JAX-RS.
>>> Rather embarrassingly the case you describe never occurred to me
>>> or others on the EG.
>>>
>>> Before we modified UriBuilder to support contextual encoding we
>>> had encode(true/false) and isEncoded methods on UriBuilder. The
>>> contextual encoding approach simplified the API.
>>
>> I think the API is good. The problem is the encoding routine does
>> not encode "%30" properly - i.e. the following is false:
>>
>> decode(encode(string)).equals(string)
>>
>> Isn't that a bug in the URIComponent._encode() method?
>
> Not if contextual encoding is enabled, which is the type of encoding
> that is used by UriBuilder.
>
> Try this:
>
> String s =
> UriComponent.decode(UriComponent.contextualEncode("some is %30 of
> X", Type.QUERY),
> Type.QUERY);
> System.out.println(s);
>
> Compared to this:
>
> String s = UriComponent.decode(UriComponent.encode("some is
> %30 of X", Type.QUERY),
> Type.QUERY);
> System.out.println(s);
>
> Paul.
Ah, right. Javadoc is quite clear on that.
Martin