KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hsqldb > HTTPClientConnection


1 /* Copyright (c) 2001-2005, The HSQL Development Group
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * Neither the name of the HSQL Development Group nor the names of its
15  * contributors may be used to endorse or promote products derived from this
16  * software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30
31
32 package org.hsqldb;
33
34 import java.io.IOException JavaDoc;
35
36 import org.hsqldb.lib.InOutUtil;
37
38 /**
39  * HTTP protocol session proxy implementation. Uses the updated HSQLDB HTTP
40  * sub protocol.
41  *
42  * @author fredt@users
43  * @version 1.7.2
44  * @since 1.7.2
45  */

46 public class HTTPClientConnection extends HSQLClientConnection {
47
48     static final String JavaDoc ENCODING = "8859_1";
49
50     public HTTPClientConnection(String JavaDoc host, int port, String JavaDoc path,
51                                 String JavaDoc database, boolean isTLS, String JavaDoc user,
52                                 String JavaDoc password) throws HsqlException {
53         super(host, port, path, database, isTLS, user, password);
54     }
55
56     protected void initConnection(String JavaDoc host, int port,
57                                   boolean isTLS) throws HsqlException {}
58
59     public synchronized Result execute(Result r) throws HsqlException {
60
61         super.openConnection(host, port, isTLS);
62
63         Result result = super.execute(r);
64
65         super.closeConnection();
66
67         return result;
68     }
69
70     protected void write(Result r) throws IOException JavaDoc, HsqlException {
71
72         rowOut.reset();
73         r.write(rowOut);
74         dataOutput.write("POST ".getBytes(ENCODING));
75         dataOutput.write(path.getBytes(ENCODING));
76         dataOutput.write(" HTTP/1.0\r\n".getBytes(ENCODING));
77         dataOutput.write(
78             "Content-Type: application/octet-stream\r\n".getBytes(ENCODING));
79         dataOutput.write(("Content-Length: " + rowOut.size()
80                           + "\r\n").getBytes(ENCODING));
81         dataOutput.write("\r\n".getBytes(ENCODING));
82         dataOutput.write(rowOut.getOutputStream().getBuffer(), 0,
83                          rowOut.getOutputStream().size());
84         dataOutput.flush();
85     }
86
87     protected Result read() throws IOException JavaDoc, HsqlException {
88
89         // fredt - for WebServer 4 lines should be skipped
90
// for Servlet, number of lines depends on Servlet container
91
// stop skipping after the blank line
92
rowOut.reset();
93
94         for (;;) {
95             int count = InOutUtil.readLine(dataInput, rowOut);
96
97             if (count <= 2) {
98                 break;
99             }
100         }
101
102         //
103
Result resultIn = Result.read(rowIn, dataInput);
104
105         return resultIn;
106     }
107 }
108
Popular Tags