JAX-RS client filters
Life goes on with JAX-RS/Jersey. I wasted a couple of moments figuring out how to add custom headers to a Jersey generated JAX-RS client. Might as well write it down in the hope of saving someone a couple of minutes.
For starters, you’ll need a Client Filter that does the actual heavy(ish) lifting.
import javax.ws.rs.client.ClientRequestContext;
import javax.ws.rs.client.ClientRequestFilter;
/**
* Add the X-GARBAGE header to all requests.
*/
public class GarbageFilter implements ClientRequestFilter {
@Override
public void filter(final ClientRequestContext requestContext) throws IOException {
requestContext.getHeaders().add("X-GARBAGE", "This is added to all requests");
}
}
And then you’ll have to register the filter with the Client(Config).
// import org.glassfish.jersey.client.ClientConfig;
final ClientConfig clientConfig = new ClientConfig();
clientConfig.register(new GarbageFilter()); // Yes, you could use JDK8 magic :-)
final Client client = ClientBuilder.newClient(clientConfig);
And that’s all. Every request you launch using the generated client will now contain your X-GARBAGE header.
— Elric