summaryrefslogtreecommitdiffstats
path: root/mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java')
-rw-r--r--mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java163
1 files changed, 163 insertions, 0 deletions
diff --git a/mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java b/mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java
new file mode 100644
index 000000000..88be440c3
--- /dev/null
+++ b/mobile/android/thirdparty/ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java
@@ -0,0 +1,163 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package ch.boye.httpclientandroidlib.params;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import ch.boye.httpclientandroidlib.util.Args;
+
+/**
+ * {@link HttpParams} implementation that delegates resolution of a parameter
+ * to the given default {@link HttpParams} instance if the parameter is not
+ * present in the local one. The state of the local collection can be mutated,
+ * whereas the default collection is treated as read-only.
+ *
+ * @since 4.0
+ *
+ * @deprecated (4.3) use configuration classes provided 'ch.boye.httpclientandroidlib.config'
+ * and 'ch.boye.httpclientandroidlib.client.config'
+ */
+@Deprecated
+public final class DefaultedHttpParams extends AbstractHttpParams {
+
+ private final HttpParams local;
+ private final HttpParams defaults;
+
+ /**
+ * Create the defaulted set of HttpParams.
+ *
+ * @param local the mutable set of HttpParams
+ * @param defaults the default set of HttpParams, not mutated by this class
+ */
+ public DefaultedHttpParams(final HttpParams local, final HttpParams defaults) {
+ super();
+ this.local = Args.notNull(local, "Local HTTP parameters");
+ this.defaults = defaults;
+ }
+
+ /**
+ * Creates a copy of the local collection with the same default
+ */
+ public HttpParams copy() {
+ final HttpParams clone = this.local.copy();
+ return new DefaultedHttpParams(clone, this.defaults);
+ }
+
+ /**
+ * Retrieves the value of the parameter from the local collection and, if the
+ * parameter is not set locally, delegates its resolution to the default
+ * collection.
+ */
+ public Object getParameter(final String name) {
+ Object obj = this.local.getParameter(name);
+ if (obj == null && this.defaults != null) {
+ obj = this.defaults.getParameter(name);
+ }
+ return obj;
+ }
+
+ /**
+ * Attempts to remove the parameter from the local collection. This method
+ * <i>does not</i> modify the default collection.
+ */
+ public boolean removeParameter(final String name) {
+ return this.local.removeParameter(name);
+ }
+
+ /**
+ * Sets the parameter in the local collection. This method <i>does not</i>
+ * modify the default collection.
+ */
+ public HttpParams setParameter(final String name, final Object value) {
+ return this.local.setParameter(name, value);
+ }
+
+ /**
+ *
+ * @return the default HttpParams collection
+ */
+ public HttpParams getDefaults() {
+ return this.defaults;
+ }
+
+ /**
+ * Returns the current set of names
+ * from both the local and default HttpParams instances.
+ *
+ * Changes to the underlying HttpParams intances are not reflected
+ * in the set - it is a snapshot.
+ *
+ * @return the combined set of names, as a Set<String>
+ * @since 4.2
+ * @throws UnsupportedOperationException if either the local or default HttpParams instances do not implement HttpParamsNames
+ */
+ @Override
+ public Set<String> getNames() {
+ final Set<String> combined = new HashSet<String>(getNames(defaults));
+ combined.addAll(getNames(this.local));
+ return combined ;
+ }
+
+ /**
+ * Returns the current set of defaults names.
+ *
+ * Changes to the underlying HttpParams are not reflected
+ * in the set - it is a snapshot.
+ *
+ * @return the names, as a Set<String>
+ * @since 4.2
+ * @throws UnsupportedOperationException if the default HttpParams instance does not implement HttpParamsNames
+ */
+ public Set<String> getDefaultNames() {
+ return new HashSet<String>(getNames(this.defaults));
+ }
+
+ /**
+ * Returns the current set of local names.
+ *
+ * Changes to the underlying HttpParams are not reflected
+ * in the set - it is a snapshot.
+ *
+ * @return the names, as a Set<String>
+ * @since 4.2
+ * @throws UnsupportedOperationException if the local HttpParams instance does not implement HttpParamsNames
+ */
+ public Set<String> getLocalNames() {
+ return new HashSet<String>(getNames(this.local));
+ }
+
+ // Helper method
+ private Set<String> getNames(final HttpParams params) {
+ if (params instanceof HttpParamsNames) {
+ return ((HttpParamsNames) params).getNames();
+ }
+ throw new UnsupportedOperationException("HttpParams instance does not implement HttpParamsNames");
+ }
+
+}