View Javadoc

1   /*
2    * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/params/DefaultHttpParamsFactory.java,v 1.16 2004/11/20 21:48:47 mbecke Exp $
3    * $Revision: 312780 $
4    * $Date: 2005-10-10 21:59:41 -0400 (Mon, 10 Oct 2005) $
5    *
6    * ====================================================================
7    *
8    *  Copyright 1999-2004 The Apache Software Foundation
9    *
10   *  Licensed under the Apache License, Version 2.0 (the "License");
11   *  you may not use this file except in compliance with the License.
12   *  You may obtain a copy of the License at
13   *
14   *      http://www.apache.org/licenses/LICENSE-2.0
15   *
16   *  Unless required by applicable law or agreed to in writing, software
17   *  distributed under the License is distributed on an "AS IS" BASIS,
18   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19   *  See the License for the specific language governing permissions and
20   *  limitations under the License.
21   * ====================================================================
22   *
23   * This software consists of voluntary contributions made by many
24   * individuals on behalf of the Apache Software Foundation.  For more
25   * information on the Apache Software Foundation, please see
26   * <http://www.apache.org/>.
27   *
28   */
29   
30  package org.apache.commons.httpclient.params;
31  
32  import java.util.ArrayList;
33  import java.util.Arrays;
34  
35  import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
36  import org.apache.commons.httpclient.HttpVersion;
37  import org.apache.commons.httpclient.SimpleHttpConnectionManager;
38  import org.apache.commons.httpclient.cookie.CookiePolicy;
39  import org.apache.commons.httpclient.util.DateUtil;
40  
41  /***
42   * TODO: comment type
43   * 
44   * @since 3.0
45   */
46  public class DefaultHttpParamsFactory implements HttpParamsFactory {
47  
48      private HttpParams httpParams;
49  
50      /***
51       * 
52       */
53      public DefaultHttpParamsFactory() {
54          super();
55      }
56  
57      /* (non-Javadoc)
58       * @see org.apache.commons.httpclient.params.HttpParamsFactory#getDefaultParams()
59       */
60      public synchronized HttpParams getDefaultParams() {
61          if (httpParams == null) {
62              httpParams = createParams();
63          }
64  
65          return httpParams;
66      }
67  
68      protected HttpParams createParams() {
69          HttpClientParams params = new HttpClientParams(null);
70          
71          params.setParameter(HttpMethodParams.USER_AGENT, "Jakarta Commons-HttpClient/3.0-rc4");
72          params.setVersion(HttpVersion.HTTP_1_1);
73          params.setConnectionManagerClass(SimpleHttpConnectionManager.class);
74          params.setCookiePolicy(CookiePolicy.RFC_2109);
75          params.setHttpElementCharset("US-ASCII");
76          params.setContentCharset("ISO-8859-1");
77          params.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
78          
79          ArrayList datePatterns = new ArrayList();
80          datePatterns.addAll(
81              Arrays.asList(
82                  new String[] {
83                      DateUtil.PATTERN_RFC1123,
84                      DateUtil.PATTERN_RFC1036,
85                      DateUtil.PATTERN_ASCTIME,
86                      "EEE, dd-MMM-yyyy HH:mm:ss z",
87                      "EEE, dd-MMM-yyyy HH-mm-ss z",
88                      "EEE, dd MMM yy HH:mm:ss z",
89                      "EEE dd-MMM-yyyy HH:mm:ss z",
90                      "EEE dd MMM yyyy HH:mm:ss z",
91                      "EEE dd-MMM-yyyy HH-mm-ss z",
92                      "EEE dd-MMM-yy HH:mm:ss z",
93                      "EEE dd MMM yy HH:mm:ss z",
94                      "EEE,dd-MMM-yy HH:mm:ss z",
95                      "EEE,dd-MMM-yyyy HH:mm:ss z",
96                      "EEE, dd-MM-yyyy HH:mm:ss z",                
97                  }
98              )
99          );
100         params.setParameter(HttpMethodParams.DATE_PATTERNS, datePatterns);
101             
102         // TODO: To be removed. Provided for backward compatibility
103         String agent = null;
104         try {
105             agent = System.getProperty("httpclient.useragent");
106         } catch (SecurityException ignore) {
107         }
108         if (agent != null) {        
109             params.setParameter(HttpMethodParams.USER_AGENT, agent);
110         }
111         
112         // TODO: To be removed. Provided for backward compatibility
113         String preemptiveDefault = null;
114         try {
115             preemptiveDefault = System.getProperty("httpclient.authentication.preemptive");
116         } catch (SecurityException ignore) {
117         }
118         if (preemptiveDefault != null) {
119             preemptiveDefault = preemptiveDefault.trim().toLowerCase();
120             if (preemptiveDefault.equals("true")) {
121                 params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, "on");
122             } else if (preemptiveDefault.equals("false")) {
123                 params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, "off");
124             }
125         }
126         
127         // TODO: To be removed. Provided for backward compatibility
128         String defaultCookiePolicy = null;
129         try {
130             defaultCookiePolicy = System.getProperty("apache.commons.httpclient.cookiespec");
131         } catch (SecurityException ignore) {
132         }
133         if (defaultCookiePolicy != null) {
134             if ("COMPATIBILITY".equalsIgnoreCase(defaultCookiePolicy)) {
135                 params.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
136             } else if ("NETSCAPE_DRAFT".equalsIgnoreCase(defaultCookiePolicy)) {
137                 params.setCookiePolicy(CookiePolicy.NETSCAPE);
138             } else if ("RFC2109".equalsIgnoreCase(defaultCookiePolicy)) {
139                 params.setCookiePolicy(CookiePolicy.RFC_2109);
140             }
141         }
142 
143         return params;
144     } 
145 
146 }