HTTPCallConfig.java |
/* * $Id: HTTPCallConfig.java,v 1.30 2013/01/05 10:19:33 agoubard Exp $ * * See the COPYRIGHT file for redistribution and use restrictions. */ package org.xins.common.http; import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DecompressingHttpClient; import org.apache.http.impl.client.SystemDefaultHttpClient; import org.xins.common.MandatoryArgumentChecker; import org.xins.common.service.CallConfig; import org.xins.common.text.TextUtils; /** * Call configuration for the HTTP service caller. The HTTP method and the * <em>User-Agent</em> string can be configured. By default the HTTP method is * <em>POST</em> and the no <em>User-Agent</em> string is set. * * <p>This class is not thread safe.</p> * * @version $Revision: 1.30 $ $Date: 2013/01/05 10:19:33 $ * @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a> * * @since XINS 1.1.0 */ public final class HTTPCallConfig extends CallConfig { /** * The HTTP method to use. This field cannot be <code>null</code>. */ private HTTPMethod _method; /** * The HTTP user agent. This field can be <code>null</code>. */ private String _userAgent; /** * How to handle HTTP redirect returned by the server. Default to <code>false</code>. */ private boolean _followRedirect; /** * The HttpClient used for communication with the server. */ private HttpClient _httpClient; /** * Constructs a new <code>HTTPCallConfig</code> object. */ public HTTPCallConfig() { // Default to the POST method _method = HTTPMethod.POST; } /** * Returns the HTTP method associated with this configuration. * * @return * the HTTP method, never <code>null</code>. */ public HTTPMethod getMethod() { return _method; } /** * Sets the HTTP method associated with this configuration. * * @param method * the HTTP method to be associated with this configuration, cannot be * <code>null</code>. * * @throws IllegalArgumentException * if <code>method == null</code>. */ public void setMethod(HTTPMethod method) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("method", method); // Store the new HTTP method _method = method; } /** * Returns the action performed when a redirect is returned from the server. * * @return * <code>true</code> if it should call the redirected link, * <code>false</code> if it should fail. * * @since XINS 2.2 */ public boolean getFollowRedirect() { return _followRedirect; } /** * Sets the action to perform if a redirect is returned from the server. * * @param follow * <code>true</code> if it should call the redirected link, * <code>false</code> if it should fail. * * @since XINS 2.2 */ public void setFollowRedirect(boolean follow) { _followRedirect = follow; } /** * Sets the user agent associated with the HTTP call. * * @param agent * the HTTP user agent, or <code>null</code> if no user-agent header * should be sent. * * @since XINS 1.3.0 */ public void setUserAgent(String agent) { _userAgent = agent; } /** * Returns the HTTP user agent associated with the HTTP call. * * @return * the HTTP user agent or <code>null</code> no user agent has been * specified. * * @since XINS 1.3.0 */ public String getUserAgent() { return _userAgent; } /** * Gets the HttpClient to use to call the URL. * If no HttpClient has been set or created, a default one is created and returned. * * @return the http client, cannot be <code>null</null>. * * @since XINS 3.0 */ public HttpClient getHttpClient() { if (_httpClient == null) { _httpClient = new DecompressingHttpClient(new SystemDefaultHttpClient()); } return _httpClient; } /** * Sets the HttpClient to use to call the URL. * * @param httpClient * the http client, can be <code>null</null>. * @since XINS 3.0 */ public void setHttpClient(HttpClient httpClient) { _httpClient = httpClient; } /** * Describes this configuration. * * @return * the description of this configuration, should never be * <code>null</code>, should never be empty and should never start or * end with whitespace characters. */ public String describe() { String description = "HTTP call config [failOverAllowed=" + isFailOverAllowed() + "; method=" + TextUtils.quote(_method.toString()) + "; userAgent=" + TextUtils.quote(_userAgent) + "]"; return description; } }