In my view, it's the current behavior that is surprising. You would really expect those methods to return the un-encoded strings. It's odd we haven't come across this issue before now, which probably indicates use of '[]' in those components
is uncommon.

Michael

On 04/04/14 16:01, Chris Hegarty wrote:
Pavel,

The code changes and test update look good to me.

I think I agree with the approach here, but just to clarify the change in behavior, that will be visible after the changes.

$ cat Test.java
public class Test {
    public static void main(String[] args) throws Exception {
java.net.URI u = new java.net.URI("http", "example.org", "/a b[c d]", "a b[c d]", "a b[c d]");
         System.out.println("path:" + u.getPath());
         System.out.println("path:" + u.getQuery());
         System.out.println("path:" + u.getFragment());
    }
}

-- without fix --
$ java Test
path:/a b[c d]
path:a b[c%20d]
path:a b[c%20d]

-- with fix ---
$ java Test
path:/a b[c d]
path:a b[c d]
path:a b[c d]

So the question now is; Will this surprise anyone? possibly embedding URLs/URIs in query strings? I expect not, but just want to spell out the change in behavior so that we can make an informed decision.

-Chris.


On 04/04/14 15:45, Pavel Rappo wrote:
Hi everyone,

could you please review my change for JDK-8037396: http://cr.openjdk.java.net/~michaelm/8037396/webrev/

As per API, getQuery() and getFragment() should return the decoded string. But this seems not to work properly if there are squared brackets around them.

The result of analysis can be seen here:

https://bugs.openjdk.java.net/browse/JDK-8037396?focusedCommentId=13479678&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13479678

I think we should go the least intrusive way here (excluding 'do nothing' option).

Thanks
-Pavel


Reply via email to