001: /*
002: * Enhydra Java Application Server Project
003: *
004: * The contents of this file are subject to the Enhydra Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License on
007: * the Enhydra web site ( http://www.enhydra.org/ ).
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
011: * the License for the specific terms governing rights and limitations
012: * under the License.
013: *
014: * The Initial Developer of the Enhydra Application Server is Lutris
015: * Technologies, Inc. The Enhydra Application Server and portions created
016: * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
017: * All Rights Reserved.
018: *
019: * Contributor(s):
020: *
021: * $Id: ServletHttpPresentationInputStream.java,v 1.2 2006-06-15 13:44:07 sinisa Exp $
022: */
023:
024: package com.lutris.appserver.server.httpPresentation.servlet;
025:
026: import java.io.IOException;
027:
028: import javax.servlet.ServletInputStream;
029:
030: import com.lutris.appserver.server.httpPresentation.HttpPresentationIOException;
031: import com.lutris.appserver.server.httpPresentation.HttpPresentationInputStream;
032:
033: /**
034: * HTTP request input stream reader for servlets.
035: * This implements all methods that are defined in InputStream as calles
036: * to the servlet object, since we don't know which ones are implemented by
037: * ServletInputStream.
038: *
039: * @see javax.servlet.ServletInputStream
040: */
041: public class ServletHttpPresentationInputStream extends
042: HttpPresentationInputStream {
043: private ServletInputStream inputStream;
044:
045: /**
046: * Construct an object for accessing a servlet input stream.
047: */
048: protected ServletHttpPresentationInputStream(
049: ServletInputStream inputStream) {
050: this .inputStream = inputStream;
051: }
052:
053: /**
054: * Starting at the specified offset, reads into the given array of
055: * bytes until all requested bytes have been read or a '\n' is
056: * encountered, in which case the '\n' is read into the array as well.
057: * @param b the buffer into which the data is read
058: * @param off the start offset of the data
059: * @param len the maximum number of bytes to read
060: * @return the actual number of bytes read, or -1 if the end of the
061: * stream is reached
062: * @exception IOException if an I/O error has occurred
063: */
064: public int readLine(byte[] b, int off, int len) throws IOException {
065: try {
066: return inputStream.readLine(b, off, len);
067: } catch (IOException except) {
068: throw new HttpPresentationIOException(except);
069: }
070: }
071:
072: /*
073: * InputStream methods vectored off to the ServletInputStream.
074: */
075: public int read() throws IOException {
076: try {
077: return inputStream.read();
078: } catch (IOException except) {
079: throw new HttpPresentationIOException(except);
080: }
081: }
082:
083: public int read(byte b[]) throws IOException {
084: try {
085: return inputStream.read(b);
086: } catch (IOException except) {
087: throw new HttpPresentationIOException(except);
088: }
089: }
090:
091: public int read(byte b[], int off, int len) throws IOException {
092: try {
093: return inputStream.read(b, off, len);
094: } catch (IOException except) {
095: throw new HttpPresentationIOException(except);
096: }
097: }
098:
099: public long skip(long n) throws IOException {
100: try {
101: return inputStream.skip(n);
102: } catch (IOException except) {
103: throw new HttpPresentationIOException(except);
104: }
105: }
106:
107: public int available() throws IOException {
108: try {
109: return inputStream.available();
110: } catch (IOException except) {
111: throw new HttpPresentationIOException(except);
112: }
113: }
114:
115: public synchronized void mark(int readlimit) {
116: inputStream.mark(readlimit);
117: }
118:
119: public synchronized void reset() throws IOException {
120: try {
121: inputStream.reset();
122: } catch (IOException except) {
123: throw new HttpPresentationIOException(except);
124: }
125: }
126:
127: public boolean markSupported() {
128: return inputStream.markSupported();
129: }
130: }
|