001: /*
002: * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/params/HttpClientParams.java,v 1.7 2004/05/13 04:01:22 mbecke Exp $
003: * $Revision: 480424 $
004: * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $
005: *
006: * ====================================================================
007: *
008: * Licensed to the Apache Software Foundation (ASF) under one or more
009: * contributor license agreements. See the NOTICE file distributed with
010: * this work for additional information regarding copyright ownership.
011: * The ASF licenses this file to You under the Apache License, Version 2.0
012: * (the "License"); you may not use this file except in compliance with
013: * the License. You may obtain a copy of the License at
014: *
015: * http://www.apache.org/licenses/LICENSE-2.0
016: *
017: * Unless required by applicable law or agreed to in writing, software
018: * distributed under the License is distributed on an "AS IS" BASIS,
019: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
020: * See the License for the specific language governing permissions and
021: * limitations under the License.
022: * ====================================================================
023: *
024: * This software consists of voluntary contributions made by many
025: * individuals on behalf of the Apache Software Foundation. For more
026: * information on the Apache Software Foundation, please see
027: * <http://www.apache.org/>.
028: *
029: */
030:
031: package org.apache.commons.httpclient.params;
032:
033: /**
034: * This class represents a collection of HTTP protocol parameters applicable to
035: * {@link org.apache.commons.httpclient.HttpClient instances of HttpClient}.
036: * Protocol parameters may be linked together to form a hierarchy. If a particular
037: * parameter value has not been explicitly defined in the collection itself, its
038: * value will be drawn from the parent collection of parameters.
039: *
040: * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
041: *
042: * @version $Revision: 480424 $
043: *
044: * @since 3.0
045: */
046: public class HttpClientParams extends HttpMethodParams {
047:
048: /**
049: * Sets the timeout in milliseconds used when retrieving an
050: * {@link org.apache.commons.httpclient.HttpConnection HTTP connection} from the
051: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}.
052: * <p>
053: * This parameter expects a value of type {@link Long}.
054: * </p>
055: */
056: public static final String CONNECTION_MANAGER_TIMEOUT = "http.connection-manager.timeout";
057:
058: /**
059: * Defines the default
060: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}
061: * class.
062: * <p>
063: * This parameter expects a value of type {@link Class}.
064: * </p>
065: */
066: public static final String CONNECTION_MANAGER_CLASS = "http.connection-manager.class";
067:
068: /**
069: * Defines whether authentication should be attempted preemptively.
070: * <p>
071: * This parameter expects a value of type {@link Boolean}.
072: * </p>
073: */
074: public static final String PREEMPTIVE_AUTHENTICATION = "http.authentication.preemptive";
075:
076: /**
077: * Defines whether relative redirects should be rejected.
078: * <p>
079: * This parameter expects a value of type {@link Boolean}.
080: * </p>
081: */
082: public static final String REJECT_RELATIVE_REDIRECT = "http.protocol.reject-relative-redirect";
083:
084: /**
085: * Defines the maximum number of redirects to be followed.
086: * The limit on number of redirects is intended to prevent infinite loops.
087: * <p>
088: * This parameter expects a value of type {@link Integer}.
089: * </p>
090: */
091: public static final String MAX_REDIRECTS = "http.protocol.max-redirects";
092:
093: /**
094: * Defines whether circular redirects (redirects to the same location) should be allowed.
095: * The HTTP spec is not sufficiently clear whether circular redirects are permitted,
096: * therefore optionally they can be enabled
097: * <p>
098: * This parameter expects a value of type {@link Boolean}.
099: * </p>
100: */
101: public static final String ALLOW_CIRCULAR_REDIRECTS = "http.protocol.allow-circular-redirects";
102:
103: /**
104: * Creates a new collection of parameters with the collection returned
105: * by {@link #getDefaultParams()} as a parent. The collection will defer
106: * to its parent for a default value if a particular parameter is not
107: * explicitly set in the collection itself.
108: *
109: * @see #getDefaultParams()
110: */
111: public HttpClientParams() {
112: super ();
113: }
114:
115: /**
116: * Creates a new collection of parameters with the given parent.
117: * The collection will defer to its parent for a default value
118: * if a particular parameter is not explicitly set in the collection
119: * itself.
120: *
121: * @param defaults the parent collection to defer to, if a parameter
122: * is not explictly set in the collection itself.
123: *
124: * @see #getDefaultParams()
125: */
126: public HttpClientParams(HttpParams defaults) {
127: super (defaults);
128: }
129:
130: /**
131: * Returns the timeout in milliseconds used when retrieving an
132: * {@link org.apache.commons.httpclient.HttpConnection HTTP connection} from the
133: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}.
134: *
135: * @return timeout in milliseconds.
136: */
137: public long getConnectionManagerTimeout() {
138: return getLongParameter(CONNECTION_MANAGER_TIMEOUT, 0);
139: }
140:
141: /**
142: * Sets the timeout in milliseconds used when retrieving an
143: * {@link org.apache.commons.httpclient.HttpConnection HTTP connection} from the
144: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}.
145: *
146: * @param timeout the timeout in milliseconds
147: */
148: public void setConnectionManagerTimeout(long timeout) {
149: setLongParameter(CONNECTION_MANAGER_TIMEOUT, timeout);
150: }
151:
152: /**
153: * Returns the default
154: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}
155: * class.
156: * @return {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}
157: * factory class.
158: */
159: public Class getConnectionManagerClass() {
160: return (Class) getParameter(CONNECTION_MANAGER_CLASS);
161: }
162:
163: /**
164: * Sets {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}
165: * class to be used der default.
166: * @param clazz
167: * {@link org.apache.commons.httpclient.HttpConnectionManager HTTP connection manager}
168: * factory class.
169: */
170: public void setConnectionManagerClass(Class clazz) {
171: setParameter(CONNECTION_MANAGER_CLASS, clazz);
172: }
173:
174: /**
175: * Returns <tt>true</tt> if authentication should be attempted preemptively,
176: * <tt>false</tt> otherwise.
177: *
178: * @return <tt>true</tt> if authentication should be attempted preemptively,
179: * <tt>false</tt> otherwise.
180: */
181: public boolean isAuthenticationPreemptive() {
182: return getBooleanParameter(PREEMPTIVE_AUTHENTICATION, false);
183: }
184:
185: /**
186: * Sets whether authentication should be attempted preemptively.
187: *
188: * @param value <tt>true</tt> if authentication should be attempted preemptively,
189: * <tt>false</tt> otherwise.
190: */
191: public void setAuthenticationPreemptive(boolean value) {
192: setBooleanParameter(PREEMPTIVE_AUTHENTICATION, value);
193: }
194:
195: private static final String[] PROTOCOL_STRICTNESS_PARAMETERS = {
196: REJECT_RELATIVE_REDIRECT, ALLOW_CIRCULAR_REDIRECTS };
197:
198: public void makeStrict() {
199: super .makeStrict();
200: setParameters(PROTOCOL_STRICTNESS_PARAMETERS, Boolean.TRUE);
201: }
202:
203: public void makeLenient() {
204: super.makeLenient();
205: setParameters(PROTOCOL_STRICTNESS_PARAMETERS, Boolean.FALSE);
206: }
207: }
|