001: /*
002: * regain - A file search engine providing plenty of formats
003: * Copyright (C) 2004 Til Schneider
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
018: *
019: * Contact: Til Schneider, info@murfman.de
020: *
021: * CVS information:
022: * $RCSfile$
023: * $Source$
024: * $Date: 2005-03-16 13:30:31 +0100 (Mi, 16 Mrz 2005) $
025: * $Author: til132 $
026: * $Revision: 89 $
027: */
028: package net.sf.regain.util.sharedtag.simple;
029:
030: import java.io.IOException;
031: import java.io.OutputStream;
032: import java.io.PrintStream;
033:
034: import simple.http.Request;
035: import simple.http.Response;
036: import simple.http.serve.Resource;
037:
038: import net.sf.regain.RegainException;
039: import net.sf.regain.util.sharedtag.PageResponse;
040:
041: /**
042: * Adapter from a simpleweb Response to a SharedTag PageResponse.
043: *
044: * @author Til Schneider, www.murfman.de
045: */
046: public class SimplePageResponse extends PageResponse {
047:
048: /** The resource that uses this response. */
049: private Resource mResource;
050:
051: /** The request to adapt. */
052: private Request mRequest;
053:
054: /** The response to adapt. */
055: private Response mResponse;
056:
057: /** The PrintStream to write the results to. */
058: private PrintStream mPrintStream;
059:
060: /** The character encoding of the response. */
061: private String mEncoding;
062:
063: /**
064: * Creates a new instance of SimplePageWriter.
065: *
066: * @param resource The resource that uses this response.
067: * @param request The request to adapt.
068: * @param response The response to adapt.
069: * @param printStream The PrintStream to write the results to.
070: * @param encoding The character encoding of the response.
071: */
072: public SimplePageResponse(Resource resource, Request request,
073: Response response, PrintStream printStream, String encoding) {
074: mResource = resource;
075: mRequest = request;
076: mResponse = response;
077: mPrintStream = printStream;
078: mEncoding = encoding;
079: }
080:
081: /**
082: * Gets the character encoding of the response.
083: *
084: * @return The character encoding of the response.
085: * @throws RegainException If getting th encoding failed.
086: */
087: public String getEncoding() throws RegainException {
088: return mEncoding;
089: }
090:
091: /**
092: * Sets the header with the given name.
093: *
094: * @param name The name of the header.
095: * @param value The header value to set.
096: * @throws RegainException If getting the header failed.
097: */
098: public void setHeader(String name, String value)
099: throws RegainException {
100: mResponse.set(name, value);
101: }
102:
103: /**
104: * Sets the header with the given name as date.
105: *
106: * @param name The name of the header.
107: * @param value The header value to set.
108: * @throws RegainException If getting the header failed.
109: */
110: public void setHeaderAsDate(String name, long value)
111: throws RegainException {
112: mResponse.setDate(name, value);
113: }
114:
115: /**
116: * Gets the OutputStream to use for sending binary data.
117: *
118: * @return The OutputStream to use for sending binary data.
119: * @throws RegainException If getting the OutputStream failed.
120: */
121: public OutputStream getOutputStream() throws RegainException {
122: try {
123: return mResponse.getOutputStream();
124: } catch (IOException exc) {
125: throw new RegainException(
126: "Getting the response OutputStream failed", exc);
127: }
128: }
129:
130: /**
131: * Prints text to a page.
132: *
133: * @param text The text to print.
134: * @throws RegainException If printing failed.
135: */
136: public void print(String text) throws RegainException {
137: if (mPrintStream == null) {
138: try {
139: mPrintStream = mResponse.getPrintStream();
140: } catch (IOException exc) {
141: throw new RegainException(
142: "Getting response PrintStream failed", exc);
143: }
144: }
145:
146: mPrintStream.print(text);
147: }
148:
149: /**
150: * Redirects the request to another URL.
151: *
152: * @param url The URL to redirect to.
153: * @throws RegainException If redirecting failed.
154: */
155: public void sendRedirect(String url) throws RegainException {
156: throw new RedirectException(url);
157: }
158:
159: /**
160: * Sends a HTTP error.
161: *
162: * @param errorCode The error code to send.
163: * @throws RegainException If sending the error failed.
164: */
165: public void sendError(int errorCode) throws RegainException {
166: mResource.handle(mRequest, mResponse, errorCode);
167: }
168:
169: }
|