WebTarget in Jersey client is implemented as a immutable object, and any operations to change the state returns a new WebTarget. To add query params to it, which is coming in as
You can use the ol' array trick, which is not good for anything more than a proof of concept.
WebTarget[] webTarget = {client.target(this.address.getUrl()).path(path)};
if (queryMap != null){
queryMap.forEach((k, v)->{
webTarget[0] = webTarget[0].queryParam(k, v);
});
}
return webTarget[0];
You could improve it by using an AtomicReference.
AtomicReference webTarget = new AtomicReference<>(client.target(this.address.getUrl()).path(path));
if (queryMap != null){
queryMap.forEach((k, v)->{
webTarget.updateAndGet(w->w.queryParam(k, v));
});
}
return webTarget.get();