## org.apache.http.impl.client
Class ClientParamsStack

    java.lang.Object
      org.apache.http.params.AbstractHttpParams
          org.apache.http.impl.client.ClientParamsStack

All Implemented Interfaces:
  HttpParams

    @NotThreadSafe
    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 `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 `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.

Since:
  4.0

Field Summary
`protected HttpParams` `applicationParams` The application parameter collection, or `null`.
`protected HttpParams` `clientParams` The client parameter collection, or `null`.
`protected HttpParams` `overrideParams` The override parameter collection, or `null`.
`protected HttpParams` `requestParams` The request parameter collection, or `null`.

Constructor Summary
`ClientParamsStack(ClientParamsStack stack)` Creates a copy of a parameter stack.
`ClientParamsStack(ClientParamsStack stack, HttpParams aparams, HttpParams cparams, HttpParams rparams, HttpParams oparams)` Creates a modified copy of a parameter stack.
`ClientParamsStack(HttpParams aparams, HttpParams cparams, HttpParams rparams, HttpParams oparams)` Creates a new parameter stack from elements.

Method Summary
`HttpParams` `copy()` Does not copy parameters.
`HttpParams` `getApplicationParams()` Obtains the application parameters of this stack.
`HttpParams` `getClientParams()` Obtains the client parameters of this stack.
`HttpParams` `getOverrideParams()` Obtains the override parameters of this stack.
`Object` `getParameter(String name)` Obtains a parameter from this stack.
`HttpParams` `getRequestParams()` Obtains the request parameters of this stack.
`boolean` `removeParameter(String name)` Does not remove a parameter.
`HttpParams` `setParameter(String name, Object value)` Does not set a parameter.

Methods inherited from class org.apache.http.params.AbstractHttpParams
`getBooleanParameter, getDoubleParameter, getIntParameter, getLongParameter, isParameterFalse, isParameterTrue, setBooleanParameter, setDoubleParameter, setIntParameter, setLongParameter`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### applicationParams

    protected final HttpParams applicationParams

  The application parameter collection, or `null`.

### clientParams

    protected final HttpParams clientParams

  The client parameter collection, or `null`.

### requestParams

    protected final HttpParams requestParams

  The request parameter collection, or `null`.

### overrideParams

    protected final HttpParams overrideParams

  The override parameter collection, or `null`.

Constructor Detail

### ClientParamsStack

    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.

  Parameters:
    `aparams` - application parameters, or `null`
    `cparams` - client parameters, or `null`
    `rparams` - request parameters, or `null`
    `oparams` - override parameters, or `null`

### ClientParamsStack

    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.

  Parameters:
    `stack` - the stack to copy

### ClientParamsStack

    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.

  Parameters:
    `stack` - the stack to modify
    `aparams` - application parameters, or `null`
    `cparams` - client parameters, or `null`
    `rparams` - request parameters, or `null`
    `oparams` - override parameters, or `null`

Method Detail

### getApplicationParams

    public final HttpParams getApplicationParams()

  Obtains the application parameters of this stack.

  Returns:
    the application parameters, or `null`

### getClientParams

    public final HttpParams getClientParams()

  Obtains the client parameters of this stack.

  Returns:
    the client parameters, or `null`

### getRequestParams

    public final HttpParams getRequestParams()

  Obtains the request parameters of this stack.

  Returns:
    the request parameters, or `null`

### getOverrideParams

    public final HttpParams getOverrideParams()

  Obtains the override parameters of this stack.

  Returns:
    the override parameters, or `null`

### getParameter

    public Object getParameter(String name)

  Obtains a parameter from this stack. See class comment for search order.

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

### setParameter

    public HttpParams setParameter(String name,
                                   Object value)
                            throws UnsupportedOperationException

  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.

  Parameters:
    `name` - ignored
    `value` - ignored
  Returns:
    nothing
  Throws:
    `UnsupportedOperationException` - always

### removeParameter

    public boolean removeParameter(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.

  Parameters:
    `name` - ignored
  Returns:
    nothing
  Throws:
    `UnsupportedOperationException` - always

### copy

    public HttpParams copy()

  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.

  Returns:
    `this` parameter stack

Copyright © 1999-2011 The Apache Software Foundation. All Rights Reserved.