public URI getTargetUrl(URI targetPath) { if (targetPath.isAbsolute()) { throw new IllegalArgumentException("Target url was absolute (" + targetPath.toString() + "). Expected relative path to base URL of add-on (" + getBaseUrl().toString() + ")."); } UriBuilder uriBuilder = new UriBuilder(Uri.fromJavaUri(getBaseUrl())); String path = new PathBuilder() .withPathFragment(uriBuilder.getPath()) .withPathFragment(targetPath.getRawPath()) .build(); uriBuilder.setPath(path); uriBuilder.setQuery(targetPath.getRawQuery()); uriBuilder.setFragment(targetPath.getFragment()); return uriBuilder.toUri().toJavaUri(); }