FileDocCategorySizeDatePackage
ClientParamsStack.javaAPI DocAndroid 1.5 API9818Wed May 06 22:41:10 BST 2009org.apache.http.impl.client

ClientParamsStack

public class ClientParamsStack extends AbstractHttpParams
Represents a stack of parameter collections. When retrieving a parameter, the stack is searched in a fixed order and the first match returned. Setting parameters via the stack is not supported. To minimize overhead, the stack has a fixed size and does not maintain an internal array. The supported stack entries, sorted by increasing priority, are:
  1. Application parameters: expected to be the same for all clients used by an application. These provide "global", that is application-wide, defaults.
  2. Client parameters: specific to an instance of {@link org.apache.http.client.HttpClient HttpClient}. These provide client specific defaults.
  3. Request parameters: specific to a single request execution. For overriding client and global defaults.
  4. Override parameters: specific to an instance of {@link org.apache.http.client.HttpClient HttpClient}. These can be used to set parameters that cannot be overridden on a per-request basis.
Each stack entry may be null. That is preferable over an empty params collection, since it avoids searching the empty collection when looking up parameters.
author
Roland Weber
version
$Revision: 673450 $

Fields Summary
private final Log
log
protected final HttpParams
applicationParams
The application parameter collection, or null.
protected final HttpParams
clientParams
The client parameter collection, or null.
protected final HttpParams
requestParams
The request parameter collection, or null.
protected final HttpParams
overrideParams
The override parameter collection, or null.
Constructors Summary
public ClientParamsStack(HttpParams aparams, HttpParams cparams, HttpParams rparams, HttpParams oparams)
Creates a new parameter stack from elements. The arguments will be stored as-is, there is no copying to prevent modification.

param
aparams application parameters, or null
param
cparams client parameters, or null
param
rparams request parameters, or null
param
oparams override parameters, or null



                                                             
        
                                 
        applicationParams = aparams;
        clientParams      = cparams;
        requestParams     = rparams;
        overrideParams    = oparams;
    
public ClientParamsStack(ClientParamsStack stack)
Creates a copy of a parameter stack. The new stack will have the exact same entries as the argument stack. There is no copying of parameters.

param
stack the stack to copy

        this(stack.getApplicationParams(),
             stack.getClientParams(),
             stack.getRequestParams(),
             stack.getOverrideParams());
    
public ClientParamsStack(ClientParamsStack stack, HttpParams aparams, HttpParams cparams, HttpParams rparams, HttpParams oparams)
Creates a modified copy of a parameter stack. The new stack will contain the explicitly passed elements. For elements where the explicit argument is null, the corresponding element from the argument stack is used. There is no copying of parameters.

param
stack the stack to modify
param
aparams application parameters, or null
param
cparams client parameters, or null
param
rparams request parameters, or null
param
oparams override parameters, or null

        this((aparams != null) ? aparams : stack.getApplicationParams(),
             (cparams != null) ? cparams : stack.getClientParams(),
             (rparams != null) ? rparams : stack.getRequestParams(),
             (oparams != null) ? oparams : stack.getOverrideParams());
    
Methods Summary
public org.apache.http.params.HttpParamscopy()
Does not copy parameters. Parameter stacks are lightweight objects, expected to be instantiated as needed and to be used only in a very specific context. On top of that, they are read-only. The typical copy operation to prevent accidental modification of parameters passed by the application to a framework object is therefore pointless and disabled. Create a new stack if you really need a copy.
Derived classes may change this behavior.

return
this parameter stack

        return this;
    
public final org.apache.http.params.HttpParamsgetApplicationParams()
Obtains the application parameters of this stack.

return
the application parameters, or null

        return applicationParams;
    
public final org.apache.http.params.HttpParamsgetClientParams()
Obtains the client parameters of this stack.

return
the client parameters, or null

        return clientParams;
    
public final org.apache.http.params.HttpParamsgetOverrideParams()
Obtains the override parameters of this stack.

return
the override parameters, or null

        return overrideParams;
    
public java.lang.ObjectgetParameter(java.lang.String name)
Obtains a parameter from this stack. See class comment for search order.

param
name the name of the parameter to obtain
return
the highest-priority value for that parameter, or null if it is not set anywhere in this stack

        if (name == null) {
            throw new IllegalArgumentException
                ("Parameter name must not be null.");
        }

        Object result = null;

        if (overrideParams != null) {
            result = overrideParams.getParameter(name);
        }
        if ((result == null) && (requestParams != null)) {
            result = requestParams.getParameter(name);
        }
        if ((result == null) && (clientParams != null)) {
            result = clientParams.getParameter(name);
        }
        if ((result == null) && (applicationParams != null)) {
            result = applicationParams.getParameter(name);
        }
        if (this.log.isDebugEnabled()) {
            this.log.debug("'" + name + "': " + result);
        }

        return result;
    
public final org.apache.http.params.HttpParamsgetRequestParams()
Obtains the request parameters of this stack.

return
the request parameters, or null

        return requestParams;
    
public booleanremoveParameter(java.lang.String name)
Does not remove a parameter. Parameter stacks are read-only. It is possible, though discouraged, to access and modify specific stack entries. Derived classes may change this behavior.

param
name ignored
return
nothing
throws
UnsupportedOperationException always

        throw new UnsupportedOperationException
        ("Removing parameters in a stack is not supported.");
    
public org.apache.http.params.HttpParamssetParameter(java.lang.String name, java.lang.Object value)
Does not set a parameter. Parameter stacks are read-only. It is possible, though discouraged, to access and modify specific stack entries. Derived classes may change this behavior.

param
name ignored
param
value ignored
return
nothing
throws
UnsupportedOperationException always


        throw new UnsupportedOperationException
            ("Setting parameters in a stack is not supported.");