Search in sources :

Example 1 with Configuration

use of com.lonepulse.robozombie.proxy.Zombie.Configuration in project RoboZombie by sahan.

the class ConfigurationService method getDefault.

/**
 * <p>The <i>out-of-the-box</i> configuration for an instance of {@link HttpClient} which will be used for
 * executing all endpoint requests. Below is a detailed description of all configured properties.</p>
 * <br>
 * <ul>
 * <li>
 * <p><b>HttpClient</b></p>
 * <br>
 * <p>It registers two {@link Scheme}s:</p>
 * <br>
 * <ol>
 * 	<li><b>HTTP</b> on port <b>80</b> using sockets from {@link PlainSocketFactory#getSocketFactory}</li>
 * 	<li><b>HTTPS</b> on port <b>443</b> using sockets from {@link SSLSocketFactory#getSocketFactory}</li>
 * </ol>
 *
 * <p>It uses a {@link ThreadSafeClientConnManager} with the following parameters:</p>
 * <br>
 * <ol>
 * 	<li><b>Redirecting:</b> enabled</li>
 * 	<li><b>Connection Timeout:</b> 30 seconds</li>
 * 	<li><b>Socket Timeout:</b> 30 seconds</li>
 * 	<li><b>Socket Buffer Size:</b> 12000 bytes</li>
 * 	<li><b>User-Agent:</b> via <code>System.getProperty("http.agent")</code></li>
 * </ol>
 * </li>
 * </ul>
 * @return the instance of {@link HttpClient} which will be used for request execution
 * <br><br>
 * @since 1.3.0
 */
@Override
public Configuration getDefault() {
    return new Configuration() {

        @Override
        public HttpClient httpClient() {
            try {
                HttpParams params = new BasicHttpParams();
                HttpClientParams.setRedirecting(params, true);
                HttpConnectionParams.setConnectionTimeout(params, 30 * 1000);
                HttpConnectionParams.setSoTimeout(params, 30 * 1000);
                HttpConnectionParams.setSocketBufferSize(params, 12000);
                HttpProtocolParams.setUserAgent(params, System.getProperty("http.agent"));
                SchemeRegistry schemeRegistry = new SchemeRegistry();
                schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
                schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
                ClientConnectionManager manager = new ThreadSafeClientConnManager(params, schemeRegistry);
                return new DefaultHttpClient(manager, params);
            } catch (Exception e) {
                throw new ConfigurationFailedException(e);
            }
        }
    };
}
Also used : BasicHttpParams(org.apache.http.params.BasicHttpParams) HttpParams(org.apache.http.params.HttpParams) Scheme(org.apache.http.conn.scheme.Scheme) ThreadSafeClientConnManager(org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager) Configuration(com.lonepulse.robozombie.proxy.Zombie.Configuration) SchemeRegistry(org.apache.http.conn.scheme.SchemeRegistry) BasicHttpParams(org.apache.http.params.BasicHttpParams) ClientConnectionManager(org.apache.http.conn.ClientConnectionManager) DefaultHttpClient(org.apache.http.impl.client.DefaultHttpClient)

Example 2 with Configuration

use of com.lonepulse.robozombie.proxy.Zombie.Configuration in project RoboZombie by sahan.

the class ConfigurationService method register.

/**
 * {@inheritDoc}
 */
@Override
public Configuration register(Class<?> endpointClass) {
    try {
        if (endpointClass.isAnnotationPresent(Config.class)) {
            Configuration configuration = endpointClass.getAnnotation(Config.class).value().newInstance();
            HttpClient httpClient = configuration.httpClient();
            // currently the only configurable property
            HttpClientDirectory.INSTANCE.bind(endpointClass, httpClient);
            return configuration;
        } else {
            HttpClientDirectory.INSTANCE.bind(endpointClass, HttpClientDirectory.DEFAULT);
            return new Configuration() {
            };
        }
    } catch (Exception e) {
        throw new ConfigurationFailedException(endpointClass, e);
    }
}
Also used : Configuration(com.lonepulse.robozombie.proxy.Zombie.Configuration) DefaultHttpClient(org.apache.http.impl.client.DefaultHttpClient) HttpClient(org.apache.http.client.HttpClient)

Aggregations

Configuration (com.lonepulse.robozombie.proxy.Zombie.Configuration)2 DefaultHttpClient (org.apache.http.impl.client.DefaultHttpClient)2 HttpClient (org.apache.http.client.HttpClient)1 ClientConnectionManager (org.apache.http.conn.ClientConnectionManager)1 Scheme (org.apache.http.conn.scheme.Scheme)1 SchemeRegistry (org.apache.http.conn.scheme.SchemeRegistry)1 ThreadSafeClientConnManager (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager)1 BasicHttpParams (org.apache.http.params.BasicHttpParams)1 HttpParams (org.apache.http.params.HttpParams)1