View Javadoc

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  package org.apache.james.socket;
22  
23  import java.io.IOException;
24  import java.io.InputStream;
25  import java.io.OutputStream;
26  
27  import org.apache.commons.logging.Log;
28  import org.apache.commons.logging.impl.SimpleLog;
29  
30  public class CopyInputStream extends InputStream
31  {
32  
33      private InputStream is;
34  
35      private OutputStream copy;
36  
37      private Log log;
38  
39      StringBuffer logString = new StringBuffer();
40      
41      private boolean DEEP_DEBUG = false;
42  
43      public CopyInputStream(InputStream is, OutputStream copy)
44      {
45          this.is = is;
46          this.copy = copy;
47      }
48  
49      public int read() throws IOException {
50          int in = is.read();
51          copy.write(in);
52          if (DEEP_DEBUG) {
53              if (in == 10) {
54                  getLog().debug(logString);
55                  logString = new StringBuffer();
56              } else if (in != 13) {
57                  logString.append((char) in);
58              }
59          }
60          return in;
61      }
62      
63      protected Log getLog() {
64          if (log==null) {
65              log=new SimpleLog("CopyInputStream");
66          }
67          return log;
68      }
69      
70      public void setLog(Log log) {
71          this.log=log;
72      }
73  
74  }