![JAR search and dependency download from the Maven repository](/logo.png)
bdi.glue.http.httpclient.HttpClientWorld Maven / Gradle / Ivy
package bdi.glue.http.httpclient;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import java.util.List;
/**
* @author @aloyer
*/
public class HttpClientWorld {
private final List> builderConfigurers = Lists.newArrayList();
private final List> clientConfigurers = Lists.newArrayList();
private BasicCookieStore cookieStore;
private CloseableHttpClient httpclient;
private HttpClientBuilder httpClientBuilder;
private HttpClientContext httpClientContext;
public BasicCookieStore cookieStore() {
if (cookieStore == null) {
cookieStore = new BasicCookieStore();
}
return cookieStore;
}
public void setCookieStore(BasicCookieStore cookieStore) {
if (httpClientBuilder != null || httpclient != null) {
throw new IllegalStateException("HttpClientBuilder or HttpClient already instanciated");
}
this.cookieStore = cookieStore;
}
public CloseableHttpClient httpClient() {
if (httpclient == null) {
httpclient = getHttpClientBuilder().build();
for (Function configurer : clientConfigurers) {
httpclient = configurer.apply(httpclient);
}
}
return httpclient;
}
public void setHttpclient(CloseableHttpClient httpclient) {
this.httpclient = httpclient;
}
public HttpClientBuilder getHttpClientBuilder() {
if (httpClientBuilder == null) {
httpClientBuilder = HttpClients
.custom()
.setDefaultCookieStore(cookieStore());
for (Function configurer : builderConfigurers) {
httpClientBuilder = configurer.apply(httpClientBuilder);
if (httpClientBuilder == null) {
throw new IllegalStateException("Configurer returns null... (" + configurer + ")");
}
}
}
return httpClientBuilder;
}
public void registerBuilderConfigurer(Function configurer) {
if (httpClientBuilder != null || httpclient != null) {
throw new IllegalStateException("HttpClientBuilder or HttpClient already instanciated");
}
builderConfigurers.add(configurer);
}
public void registerClientConfigurer(Function configurer) {
if (httpClientBuilder != null || httpclient != null) {
throw new IllegalStateException("HttpClientBuilder or HttpClient already instanciated");
}
clientConfigurers.add(configurer);
}
public HttpClientContext httpClientContext() {
if (httpClientContext == null) {
httpClientContext = HttpClientContext.create();
}
return httpClientContext;
}
public void setHttpClientContext(HttpClientContext httpContext) {
this.httpClientContext = httpContext;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy