class SW360Client {

    protected URI resolveAgainstBase(String uri) {
        URI base = getClientConfig().getBaseURI();
        URI source = URI.create(uri);
        String path = resolvePath(base, source);
        try {
            return new URI(base.getScheme(), base.getAuthority(), path,
                    source.getQuery(), source.getFragment());
        } catch (URISyntaxException e) {
            // should normally not happen as the components come from valid URIs
            throw new IllegalArgumentException("Invalid URI to resolve: " + uri);
        }
    }

    protected  SW360Client(SW360ClientConfig config, AccessTokenProvider tokenProvider);

}