XINSCallConfig.java |
/* * $Id: XINSCallConfig.java,v 1.28 2013/01/05 10:19:26 agoubard Exp $ * * See the COPYRIGHT file for redistribution and use restrictions. */ package org.xins.client; 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.http.HTTPCallConfig; import org.xins.common.http.HTTPMethod; import org.xins.common.service.CallConfig; import org.xins.common.text.TextUtils; /** * Call configuration for the XINS service caller. The HTTP method can be configured. * By default it is set to <em>POST</em>. * * <p>This class is not thread safe</p> * * @version $Revision: 1.28 $ $Date: 2013/01/05 10:19:26 $ * @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a> * @author <a href="mailto:anthony.goubard@japplis.com">Anthony Goubard</a> * * @since XINS 1.1.0 */ public final class XINSCallConfig extends CallConfig { /** * The underlying HTTP call config. Cannot be <code>null</code>. */ private HTTPCallConfig _httpCallConfig; /** * Constructs a new <code>XINSCallConfig</code> object. */ public XINSCallConfig() { // Construct an underlying HTTPCallConfig _httpCallConfig = new HTTPCallConfig(); // Configure the User-Agent header String userAgent = "XINS/Java Client Framework " + Library.getVersion(); _httpCallConfig.setUserAgent(userAgent); // NOTE: HTTPCallConfig already defaults to HTTP POST } /** * Returns an <code>HTTPCallConfig</code> object that corresponds with this * XINS call configuration object. * * @return * an {@link HTTPCallConfig} object, never <code>null</code>. */ HTTPCallConfig getHTTPCallConfig() { return _httpCallConfig; } /** * Returns the HTTP method associated with this configuration. * * @return * the HTTP method, never <code>null</code>. */ public HTTPMethod getHTTPMethod() { return _httpCallConfig.getMethod(); } /** * 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 setHTTPMethod(HTTPMethod method) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("method", method); // Store the setting in the HTTP call configuration _httpCallConfig.setMethod(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 _httpCallConfig.getFollowRedirect(); } /** * 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) { // Store the setting in the HTTP call configuration _httpCallConfig.setFollowRedirect(follow); } /** * 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.1 */ public HttpClient getHttpClient() { return _httpCallConfig.getHttpClient(); } /** * Sets the HttpClient to use to call the URL. * If <code>null</code> the default HttpClient will be used. * * @param httpClient * the http client, can be <code>null</null>. * * @since XINS 3.1 */ public void setHttpClient(HttpClient httpClient) { // Store the HttpClient in the HTTP call configuration _httpCallConfig.setHttpClient(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 = "XINS call config [failOverAllowed=" + isFailOverAllowed() + "; method=" + TextUtils.quote(_httpCallConfig.getMethod().toString()) + ']'; return description; } }