1 /****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 ****************************************************************/
19
20
21
22 package org.apache.james.util.stream;
23
24 import java.io.IOException;
25 import java.io.InputStream;
26
27 /**
28 * Reads data off a stream, printing every byte read to System.err.
29 */
30 public class DebugInputStream extends InputStream {
31
32 /**
33 * The input stream being wrapped
34 */
35 InputStream in = null;
36
37 /**
38 * Constructor that takes an InputStream to be wrapped.
39 *
40 * @param in the InputStream to be wrapped
41 */
42 public DebugInputStream(InputStream in) {
43 this.in = in;
44 }
45
46 /**
47 * Read a byte off the stream
48 *
49 * @return the byte read off the stream
50 * @throws IOException if an exception is encountered when reading
51 */
52 public int read() throws IOException {
53 int b = in.read();
54 System.err.write(b);
55 return b;
56 }
57
58 /**
59 * @see java.io.InputStream#close()
60 */
61 public void close() throws IOException {
62 in.close();
63 }
64 }