RFR JDK-8037396: URI getQuery() and getFragment() don't decode properly

Chris Hegarty chris.hegarty at oracle.com
Fri Apr 4 15:01:52 UTC 2014


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
>


More information about the net-dev mailing list