/* * (C) Copyright 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * bstefanescu * ataillefer */ package org.nuxeo.ecm.automation.client.jaxrs.impl; import org.apache.http.HttpHost; import org.apache.http.client.HttpClient; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.PoolingClientConnectionManager; import org.nuxeo.ecm.automation.client.adapters.BusinessServiceFactory; import org.nuxeo.ecm.automation.client.adapters.DocumentServiceFactory; import org.nuxeo.ecm.automation.client.jaxrs.spi.AsyncAutomationClient; import org.nuxeo.ecm.automation.client.jaxrs.spi.Connector; import org.nuxeo.ecm.automation.client.rest.api.RestClient; /** * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> * @author <a href="mailto:ataillefer@nuxeo.com">Antoine Taillefer</a> */ public class HttpAutomationClient extends AsyncAutomationClient { protected HttpClient http; protected int httpConnectionTimeout; /** * Instantiates a new {@link HttpAutomationClient} with no timeout for the HTTP connection and the default timeout * for the wait of the asynchronous thread pool termination: 2 seconds. */ public HttpAutomationClient(String url) { this(url, 0); } /** * Instantiates a new {@link HttpAutomationClient} with the given timeout in milliseconds for the HTTP connection * and the default timeout for the wait of the asynchronous thread pool termination: 2 seconds. * * @since 5.7 */ public HttpAutomationClient(String url, int httpConnectionTimeout) { super(url); init(httpConnectionTimeout); } /** * Instantiates a new {@link HttpAutomationClient} with the given timeout in milliseconds for the HTTP connection * and the given timeout in milliseconds for the wait of the asynchronous thread pool termination. * * @since 5.7 */ public HttpAutomationClient(String url, int httpConnectionTimeout, long asyncAwaitTerminationTimeout) { super(url, asyncAwaitTerminationTimeout); init(httpConnectionTimeout); } private void init(int httpConnectionTimeout) { http = new DefaultHttpClient(new PoolingClientConnectionManager()); this.httpConnectionTimeout = httpConnectionTimeout; // http.setCookieSpecs(null); // http.setCookieStore(null); registerAdapter(new DocumentServiceFactory()); registerAdapter(new BusinessServiceFactory()); } public void setProxy(String host, int port) { // httpclient.getCredentialsProvider().setCredentials( // new AuthScope(PROXY, PROXY_PORT), // new UsernamePasswordCredentials("username", "password")); http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(host, port)); } public HttpClient http() { return http; } @Override public synchronized void shutdown() { super.shutdown(); http.getConnectionManager().shutdown(); http = null; } @Override protected Connector newConnector() { return new HttpConnector(http, httpConnectionTimeout); } /** * Returns the {@link RestClient} associated to this * {@link org.nuxeo.ecm.automation.client.jaxrs.impl.HttpAutomationClient}. * * @since 5.8 */ public RestClient getRestClient() { return new RestClient(this); } }