01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: *
18: */
19:
20: package de.schlund.pfixcore.webservice.utils;
21:
22: import java.io.ByteArrayOutputStream;
23: import java.io.IOException;
24: import java.io.InputStream;
25:
26: /**
27: * @author mleidig@schlund.de
28: */
29: public class RecordingInputStream extends InputStream {
30:
31: ByteArrayOutputStream bytes;
32: InputStream in;
33:
34: RecordingInputStream(InputStream in) {
35: this .in = in;
36: bytes = new ByteArrayOutputStream();
37: }
38:
39: public byte[] getBytes() {
40: return bytes.toByteArray();
41: }
42:
43: @Override
44: public int available() throws IOException {
45: return in.available();
46: }
47:
48: @Override
49: public void close() throws IOException {
50: in.close();
51: }
52:
53: @Override
54: public synchronized void mark(int readlimit) {
55: //Not supported
56: }
57:
58: @Override
59: public boolean markSupported() {
60: return false;
61: }
62:
63: @Override
64: public int read() throws IOException {
65: int b = in.read();
66: if (b != -1)
67: bytes.write(b);
68: return b;
69: }
70:
71: @Override
72: public int read(byte[] b) throws IOException {
73: int no = in.read(b);
74: if (no != -1)
75: bytes.write(b, 0, no);
76: return no;
77: }
78:
79: @Override
80: public int read(byte[] b, int off, int len) throws IOException {
81: int no = in.read(b, off, len);
82: if (no != -1)
83: bytes.write(b, off, no);
84: return no;
85: }
86:
87: @Override
88: public synchronized void reset() throws IOException {
89: in.reset();
90: }
91:
92: @Override
93: public long skip(long n) throws IOException {
94: return in.skip(n);
95: }
96:
97: }
|