users@jersey.java.net

[Jersey] Curly braces in path produce IllegalStateException (Jersey 2.11)

From: Gabriel Soto <gabsoto_at_gmail.com>
Date: Wed, 20 Aug 2014 15:08:33 -0300

I'm trying to perform some fuzz testing by sending requests to a server
with malformed URIs.

The following minimal code worked well on Jersey 2.3.1:

ClientBuilder.newClient()
    .target(UriBuilder.fromUri("http://localhost"))
    .path("test{}")
    .request();

We just updated to 2.11.0 and the same code produces the following error:

java.lang.IllegalStateException: Illegal character "}" at position 5 is not
allowed as a start of a name in a path template "test{}".
    at
org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:136)
    at
org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:216)
    at
org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:59)
    (...)
Caused by: java.lang.IllegalArgumentException: Illegal character "}" at
position 5 is not allowed as a start of a name in a path template "test{}".
    at
org.glassfish.jersey.uri.internal.UriTemplateParser.parseName(UriTemplateParser.java:328)
    at
org.glassfish.jersey.uri.internal.UriTemplateParser.parse(UriTemplateParser.java:251)
    at
org.glassfish.jersey.uri.internal.UriTemplateParser.<init>(UriTemplateParser.java:110)
    at
org.glassfish.jersey.uri.UriTemplate.createUriComponent(UriTemplate.java:1001)
    at
org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:961)
    at
org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:906)
    at org.glassfish.jersey.uri.UriTemplate.createURI(UriTemplate.java:871)
    at
org.glassfish.jersey.uri.internal.JerseyUriBuilder._build(JerseyUriBuilder.java:893)
    at
org.glassfish.jersey.uri.internal.JerseyUriBuilder.build(JerseyUriBuilder.java:810)
    at
org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:134)
    (...)

I'm trying to understand if this is related to
https://java.net/jira/browse/JERSEY-2525
It certainly doesn't look fixed in this version.

Any ideas?

Thanks,
Gabriel