1069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project/*
2069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/ClientParamsStack.java $
3069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $Revision: 673450 $
4069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * $Date: 2008-07-02 10:35:05 -0700 (Wed, 02 Jul 2008) $
5069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
6069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * ====================================================================
7069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one
8069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * or more contributor license agreements.  See the NOTICE file
9069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * distributed with this work for additional information
10069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * regarding copyright ownership.  The ASF licenses this file
11069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * to you under the Apache License, Version 2.0 (the
12069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * "License"); you may not use this file except in compliance
13069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * with the License.  You may obtain a copy of the License at
14069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
15069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *   http://www.apache.org/licenses/LICENSE-2.0
16069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
17069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * Unless required by applicable law or agreed to in writing,
18069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * software distributed under the License is distributed on an
19069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * KIND, either express or implied.  See the License for the
21069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * specific language governing permissions and limitations
22069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * under the License.
23069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * ====================================================================
24069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
25069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * This software consists of voluntary contributions made by many
26069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * individuals on behalf of the Apache Software Foundation.  For more
27069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * information on the Apache Software Foundation, please see
28069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <http://www.apache.org/>.
29069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
30069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project */
31069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
32069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectpackage org.apache.http.impl.client;
33069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
34069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
35069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectimport org.apache.commons.logging.Log;
36069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectimport org.apache.commons.logging.LogFactory;
37069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectimport org.apache.http.params.HttpParams;
38069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectimport org.apache.http.params.AbstractHttpParams;
39069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
40069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
41069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project/**
42069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * Represents a stack of parameter collections.
43069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * When retrieving a parameter, the stack is searched in a fixed order
44069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * and the first match returned. Setting parameters via the stack is
45069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * not supported. To minimize overhead, the stack has a fixed size and
46069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * does not maintain an internal array.
47069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * The supported stack entries, sorted by increasing priority, are:
48069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <ol>
49069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <li>Application parameters:
50069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     expected to be the same for all clients used by an application.
51069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     These provide "global", that is application-wide, defaults.
52069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     </li>
53069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <li>Client parameters:
54069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     specific to an instance of
55069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     {@link org.apache.http.client.HttpClient HttpClient}.
56069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     These provide client specific defaults.
57069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     </li>
58069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <li>Request parameters:
59069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     specific to a single request execution.
60069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     For overriding client and global defaults.
61069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     </li>
62069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * <li>Override parameters:
63069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     specific to an instance of
64069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     {@link org.apache.http.client.HttpClient HttpClient}.
65069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     These can be used to set parameters that cannot be overridden
66069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     on a per-request basis.
67069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *     </li>
68069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * </ol>
69069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * Each stack entry may be <code>null</code>. That is preferable over
70069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * an empty params collection, since it avoids searching the empty collection
71069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * when looking up parameters.
72069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
73069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * @author <a href="mailto:rolandw at apache.org">Roland Weber</a>
74069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
75069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project *
76069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project * @version $Revision: 673450 $
77d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *
78d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath * @deprecated Please use {@link java.net.URL#openConnection} instead.
79d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *     Please visit <a href="http://android-developers.blogspot.com/2011/09/androids-http-clients.html">this webpage</a>
80d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath *     for further details.
81069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project */
82d42abb2fd917184764daf22f5f299e848b8701d7Narayan Kamath@Deprecated
83069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Projectpublic class ClientParamsStack extends AbstractHttpParams {
84069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
85069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    private final Log log = LogFactory.getLog(getClass());
86069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
87069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** The application parameter collection, or <code>null</code>. */
88069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    protected final HttpParams applicationParams;
89069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
90069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** The client parameter collection, or <code>null</code>. */
91069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    protected final HttpParams clientParams;
92069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
93069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** The request parameter collection, or <code>null</code>. */
94069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    protected final HttpParams requestParams;
95069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
96069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /** The override parameter collection, or <code>null</code>. */
97069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    protected final HttpParams overrideParams;
98069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
99069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
100069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
101069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Creates a new parameter stack from elements.
102069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * The arguments will be stored as-is, there is no copying to
103069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * prevent modification.
104069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
105069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param aparams   application parameters, or <code>null</code>
106069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param cparams   client parameters, or <code>null</code>
107069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param rparams   request parameters, or <code>null</code>
108069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param oparams   override parameters, or <code>null</code>
109069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
110069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public ClientParamsStack(HttpParams aparams, HttpParams cparams,
111069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project                             HttpParams rparams, HttpParams oparams) {
112069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        applicationParams = aparams;
113069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        clientParams      = cparams;
114069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        requestParams     = rparams;
115069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        overrideParams    = oparams;
116069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
117069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
118069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
119069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
120069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Creates a copy of a parameter stack.
121069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * The new stack will have the exact same entries as the argument stack.
122069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * There is no copying of parameters.
123069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
124069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param stack     the stack to copy
125069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
126069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public ClientParamsStack(ClientParamsStack stack) {
127069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this(stack.getApplicationParams(),
128069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             stack.getClientParams(),
129069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             stack.getRequestParams(),
130069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             stack.getOverrideParams());
131069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
132069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
133069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
134069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
135069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Creates a modified copy of a parameter stack.
136069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * The new stack will contain the explicitly passed elements.
137069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * For elements where the explicit argument is <code>null</code>,
138069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * the corresponding element from the argument stack is used.
139069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * There is no copying of parameters.
140069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
141069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param stack     the stack to modify
142069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param aparams   application parameters, or <code>null</code>
143069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param cparams   client parameters, or <code>null</code>
144069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param rparams   request parameters, or <code>null</code>
145069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param oparams   override parameters, or <code>null</code>
146069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
147069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public ClientParamsStack(ClientParamsStack stack,
148069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project                             HttpParams aparams, HttpParams cparams,
149069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project                             HttpParams rparams, HttpParams oparams) {
150069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        this((aparams != null) ? aparams : stack.getApplicationParams(),
151069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             (cparams != null) ? cparams : stack.getClientParams(),
152069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             (rparams != null) ? rparams : stack.getRequestParams(),
153069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project             (oparams != null) ? oparams : stack.getOverrideParams());
154069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
155069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
156069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
157069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
158069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Obtains the application parameters of this stack.
159069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
160069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  the application parameters, or <code>null</code>
161069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
162069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public final HttpParams getApplicationParams() {
163069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return applicationParams;
164069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
165069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
166069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
167069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Obtains the client parameters of this stack.
168069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
169069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  the client parameters, or <code>null</code>
170069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
171069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public final HttpParams getClientParams() {
172069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return clientParams;
173069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
174069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
175069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
176069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Obtains the request parameters of this stack.
177069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
178069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  the request parameters, or <code>null</code>
179069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
180069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public final HttpParams getRequestParams() {
181069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return requestParams;
182069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
183069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
184069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
185069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Obtains the override parameters of this stack.
186069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
187069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  the override parameters, or <code>null</code>
188069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
189069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public final HttpParams getOverrideParams() {
190069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return overrideParams;
191069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
192069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
193069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
194069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
195069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Obtains a parameter from this stack.
196069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * See class comment for search order.
197069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
198069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param name      the name of the parameter to obtain
199069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
200069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  the highest-priority value for that parameter, or
201069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *          <code>null</code> if it is not set anywhere in this stack
202069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
203069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public Object getParameter(String name) {
204069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if (name == null) {
205069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            throw new IllegalArgumentException
206069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project                ("Parameter name must not be null.");
207069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
208069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
209069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        Object result = null;
210069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
211069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if (overrideParams != null) {
212069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            result = overrideParams.getParameter(name);
213069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
214069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if ((result == null) && (requestParams != null)) {
215069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            result = requestParams.getParameter(name);
216069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
217069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if ((result == null) && (clientParams != null)) {
218069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            result = clientParams.getParameter(name);
219069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
220069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if ((result == null) && (applicationParams != null)) {
221069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            result = applicationParams.getParameter(name);
222069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
223069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        if (this.log.isDebugEnabled()) {
224069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            this.log.debug("'" + name + "': " + result);
225069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        }
226069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
227069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return result;
228069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
229069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
230069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
231069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Does <i>not</i> set a parameter.
232069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Parameter stacks are read-only. It is possible, though discouraged,
233069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * to access and modify specific stack entries.
234069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Derived classes may change this behavior.
235069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
236069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param name      ignored
237069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param value     ignored
238069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
239069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  nothing
240069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
241069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @throws UnsupportedOperationException    always
242069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
243069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public HttpParams setParameter(String name, Object value)
244069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        throws UnsupportedOperationException {
245069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
246069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        throw new UnsupportedOperationException
247069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project            ("Setting parameters in a stack is not supported.");
248069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
249069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
250069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
251069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
252069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Does <i>not</i> remove a parameter.
253069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Parameter stacks are read-only. It is possible, though discouraged,
254069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * to access and modify specific stack entries.
255069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Derived classes may change this behavior.
256069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
257069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @param name      ignored
258069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
259069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return  nothing
260069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
261069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @throws UnsupportedOperationException    always
262069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
263069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public boolean removeParameter(String name) {
264069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        throw new UnsupportedOperationException
265069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        ("Removing parameters in a stack is not supported.");
266069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
267069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
268069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
269069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    /**
270069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Does <i>not</i> copy parameters.
271069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Parameter stacks are lightweight objects, expected to be instantiated
272069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * as needed and to be used only in a very specific context. On top of
273069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * that, they are read-only. The typical copy operation to prevent
274069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * accidental modification of parameters passed by the application to
275069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * a framework object is therefore pointless and disabled.
276069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Create a new stack if you really need a copy.
277069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * <br/>
278069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * Derived classes may change this behavior.
279069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     *
280069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     * @return <code>this</code> parameter stack
281069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project     */
282069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    public HttpParams copy() {
283069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project        return this;
284069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project    }
285069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
286069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project
287069490a5ca2fd1988d29daf45d892f47ad665115The Android Open Source Project}
288