@Override
protected WebTarget get(HttpContext context) {
// no need for try-catch - unlike for @*Param annotations, any issues with @Uri would usually be caused
// by incorrect server code, so the default runtime exception mapping to 500 is appropriate
final ExtendedUriInfo uriInfo = context.getUriInfo();
URI uri = UriBuilder.fromUri(this.uri).buildFromEncodedMap(Maps.transformValues(
uriInfo.getPathParameters(),
new Function<List<String>, Object>() {
@Override
public Object apply(List<String> input) {
return input.isEmpty() ? null : input.get(0);
}
}
));
ManagedClient mc = client.get();
if (!uri.isAbsolute()) {
String rootUri = (mc.customBaseUri.isEmpty()) ? uriInfo.getBaseUri().toString() : mc.customBaseUri;
uri = UriBuilder.fromUri(rootUri).path(uri.toString()).build();
}
return mc.instance.target(uri);
}