All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jsoftware.restclient.RestClientFactory Maven / Gradle / Ivy

The newest version!
package org.jsoftware.restclient;

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.jsoftware.restclient.impl.ApacheHttpClientImplRestClient;

import java.util.HashSet;
import java.util.Set;

/**
 * Factory for RestClient.
 * Implementation depends on available libraries.
 * 

Currently only Apache HttpClient is supported.

* @author szalik */ public class RestClientFactory { private final Set enabledFeatures = new HashSet<>(); private RestClientPlugin[] plugins = new RestClientPlugin[0]; private final RequestConfig requestConfig = RequestConfig.DEFAULT; private HttpClientBuilder builder; public RestClientFactory() { builder = HttpClients.custom().setMaxConnPerRoute(50).setMaxConnTotal(200).setUserAgent("org.jsoftware.restClient"); } public RestClientFactory enableFeature(RestClientFeature feature) { enabledFeatures.add(feature); return this; } public RestClientFactory userAgent(String userAgent) { builder.setUserAgent(userAgent); return this; } public RestClientFactory addPlugin(RestClientPlugin plugin) { RestClientPlugin[] pls = new RestClientPlugin[plugins.length+1]; System.arraycopy(plugins, 0, pls, 0, plugins.length); pls[plugins.length] = plugin; plugins = pls; return this; } public RestClientFactory timeout(long millis) { if (millis > 0) { RequestConfig.Builder requestConfigBuilder = RequestConfig.custom(); requestConfigBuilder.setConnectTimeout((int) millis); requestConfigBuilder.setSocketTimeout((int) millis); requestConfigBuilder.setConnectionRequestTimeout((int) millis); builder.setDefaultRequestConfig(requestConfigBuilder.build()); } else { builder.setDefaultRequestConfig(RequestConfig.DEFAULT); } return this; } public RestClient newRestClient() { RestClientFeature[] features = enabledFeatures.toArray(new RestClientFeature[enabledFeatures.size()]); return new ApacheHttpClientImplRestClient(features, plugins, builder); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy