The UriTemplateBuilder API was added to make it easier to programatically construct URI templates. It’s used like this:
UriTemplate template =
UriTemplate.buildFromTemplate("http://example.com")
.literal("/foo")
.path(var("thing1"),var("explodedThing", true))
.fragment(var("prefix", 2))
.build();
This will yield the following URL template string:
"http://example.com/foo{/thing1,explodedThing*}{#prefix:2}"
You can also use the UriTemplateBuilder to build new templates from other templates like so:
UriTemplate rootTemplate = UriTemplate.fromTemplate("http://example.com/foo{/thing1}");
UriTemplate template = UriTemplate.buildFromTemplate(rootTemplate)
.path(var("explodedThing", true))
.fragment(var("prefix", 2))
.build();
Assert.assertEquals("http://example.com/foo{/thing1}{/explodedThing*}{#prefix:2}", template.getTemplate());
This will get you:
"http://example.com/foo{/thing1}{/explodedThing*}{#prefix:2}"
The API is fairly flexible and pretty useful for constructing URI templates. Have a gander at the Java Docs for more details.