KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > archive > httpclient > HttpRecorderMethod


1 /* HttpRecorderMethod
2  *
3  * Created on August 22, 2004
4  *
5  * Copyright (C) 2003 Internet Archive.
6  *
7  * This file is part of the Heritrix web crawler (crawler.archive.org).
8  *
9  * Heritrix is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU Lesser Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * any later version.
13  *
14  * Heritrix is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU Lesser Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser Public License
20  * along with Heritrix; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22  */

23 package org.archive.httpclient;
24
25 import java.util.logging.Logger JavaDoc;
26
27 import org.apache.commons.httpclient.Header;
28 import org.apache.commons.httpclient.HttpConnection;
29 import org.apache.commons.httpclient.HttpMethod;
30 import org.archive.util.HttpRecorder;
31
32
33 /**
34  * This class encapsulates the specializations supplied by the
35  * overrides {@link HttpRecorderGetMethod} and {@link HttpRecorderPostMethod}.
36  *
37  * It keeps instance of HttpRecorder and HttpConnection.
38  *
39  * @author stack
40  * @version $Revision: 1.4 $, $Date: 2005/04/07 21:44:47 $
41  */

42 public class HttpRecorderMethod {
43     protected static Logger JavaDoc logger =
44         Logger.getLogger(HttpRecorderMethod.class.getName());
45     
46     /**
47      * Instance of http recorder we're using recording this http get.
48      */

49     private HttpRecorder httpRecorder = null;
50
51     /**
52      * Save around so can force close.
53      *
54      * See [ 922080 ] IllegalArgumentException (size is wrong).
55      * https://sourceforge.net/tracker/?func=detail&aid=922080&group_id=73833&atid=539099
56      */

57     private HttpConnection connection = null;
58     
59
60     public HttpRecorderMethod(HttpRecorder recorder) {
61         this.httpRecorder = recorder;
62     }
63
64     public void markContentBegin(HttpConnection c) {
65         if (c != this.connection) {
66             // We're checking that we're not being asked to work on
67
// a connection that is other than the one we started
68
// this method#execute with.
69
throw new IllegalArgumentException JavaDoc("Connections differ: " +
70                 this.connection + " " + c + " " +
71                 Thread.currentThread().getName());
72         }
73         this.httpRecorder.markContentBegin();
74     }
75     
76     /**
77      * @return Returns the connection.
78      */

79     public HttpConnection getConnection() {
80         return this.connection;
81     }
82     
83     /**
84      * @param connection The connection to set.
85      */

86     public void setConnection(HttpConnection connection) {
87         this.connection = connection;
88     }
89     /**
90      * @return Returns the httpRecorder.
91      */

92     public HttpRecorder getHttpRecorder() {
93         return httpRecorder;
94     }
95
96     /**
97      * If a 'Proxy-Connection' header has been added to the request,
98      * it'll be of a 'keep-alive' type. Until we support 'keep-alives',
99      * override the Proxy-Connection setting and instead pass a 'close'
100      * (Otherwise every request has to timeout before we notice
101      * end-of-document).
102      * @param method Method to find proxy-connection header in.
103      */

104     public void handleAddProxyConnectionHeader(HttpMethod method) {
105         Header h = method.getRequestHeader("Proxy-Connection");
106         if (h != null) {
107             h.setValue("close");
108             method.setRequestHeader(h);
109         }
110     }
111 }
112
Popular Tags