ClientFactory.java

package org.oxerr.stubhub.client.cxf.impl;

import java.util.List;
import java.util.function.Consumer;

import org.apache.cxf.jaxrs.client.ClientConfiguration;
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;

public class ClientFactory {

	private final String baseAddress;
	private final List<?> providers;
	private final Consumer<ClientConfiguration> configurer;

	public ClientFactory(
		String baseAddress,
		List<?> providers,
		Consumer<ClientConfiguration> configurer
	) {
		this.baseAddress = baseAddress;
		this.providers = providers;
		this.configurer = configurer;
	}

	public <T> T create(Class<T> cls) {
		T client = JAXRSClientFactory.create(baseAddress, cls, providers);
		ClientConfiguration config = WebClient.getConfig(client);
		configurer.accept(config);
		return client;
	}

}