KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > util > ExternalProcessStreamWriter


1 /*
2  * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tc.util;
5
6 import java.io.BufferedReader JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.InputStream JavaDoc;
9 import java.io.InputStreamReader JavaDoc;
10 import java.io.PrintStream JavaDoc;
11
12 public class ExternalProcessStreamWriter {
13
14   private volatile IOException JavaDoc exception;
15   
16   public void printSys(final InputStream JavaDoc in) {
17     print(System.out, in);
18   }
19   
20   public void printErr(final InputStream JavaDoc in) {
21     print(System.err, in);
22   }
23   
24   public boolean hasException() {
25     return (exception != null);
26   }
27   
28   public IOException JavaDoc getException() {
29     return exception;
30   }
31   
32   private void print(final PrintStream JavaDoc stream, final InputStream JavaDoc in) {
33     Thread JavaDoc writer = new Thread JavaDoc() {
34       BufferedReader JavaDoc reader = new BufferedReader JavaDoc(new InputStreamReader JavaDoc(in));
35       public void run() {
36         try {
37           String JavaDoc line;
38           while ((line = reader.readLine()) != null) {
39             stream.println(line);
40           }
41         } catch (IOException JavaDoc e) {
42           // connection closed
43
} finally {
44           try {
45             reader.close();
46           } catch (IOException JavaDoc e) {
47             exception = e;
48           }
49         }
50       }
51     };
52     writer.start();
53   }
54 }
55
Popular Tags