private String completePath(final String endpoint, final boolean urlEncoded) {
final UrlQueryBuilder builder = UrlQueryBuilder.of();
predicates().forEach(predicate -> builder.add(WHERE, predicate.toSphereQuery(), urlEncoded));
sort().forEach(sort -> builder.add(SORT, sort.toSphereSort(), urlEncoded));
Optional.ofNullable(limit()).ifPresent(limit -> builder.add(LIMIT, limit.toString(), urlEncoded));
Optional.ofNullable(offset()).ifPresent(offset -> builder.add(OFFSET, offset.toString(), urlEncoded));
Optional.ofNullable(fetchTotal()).ifPresent(withTotal -> builder.add(WITH_TOTAL, withTotal.toString(), urlEncoded));
expansionPaths().forEach(path -> builder.add(EXPAND, path.toSphereExpand(), urlEncoded));
additionalHttpQueryParameters().forEach(parameter -> builder.add(parameter.getName(), parameter.getValue(), urlEncoded));
final String extractedQueryParameters = builder.build();
if (StringUtils.isEmpty(extractedQueryParameters)) {
return endpoint;
} else {
return endpoint + (endpoint.contains("?") ? "&" : "?" ) + extractedQueryParameters;
}
}