annotate dbus-d-javahelper/jsrc/dbus_d_javahelper/ConsoleProcess.java @ 0:a5576806d36d

recreate repository without any libs for lightweight repository
author Frank Benoit <benoit@tionex.de>
date Sat, 20 Oct 2007 18:07:18 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * License: Public Domain
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * written by Frank Benoit
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 */
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 package dbus_d_javahelper;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 import java.io.BufferedReader;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 import java.io.File;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 import java.io.IOException;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 import java.io.InputStream;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 import java.io.InputStreamReader;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 import java.io.OutputStream;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import java.io.OutputStreamWriter;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 import java.io.PrintWriter;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 public class ConsoleProcess {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 private final Thread threadStdout;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 private final Thread threadStderr;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 private final Process process;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 private class StreamPump extends Thread {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 private final InputStream istr;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 private final OutputStream ostr;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 public StreamPump(InputStream istr, OutputStream ostr) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 this.istr = istr;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 this.ostr = ostr;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 public void run() {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 BufferedReader inputStream = new BufferedReader(
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 new InputStreamReader(istr));
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35 PrintWriter writer = new PrintWriter(new OutputStreamWriter(ostr));
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 String c;
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 try {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 while ((c = inputStream.readLine()) != null) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 writer.println(c);
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 writer.flush();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 } catch (IOException e) {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 e.printStackTrace();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 public ConsoleProcess( String[] cmdarray, String[] envp, File basedir, OutputStream stdout, OutputStream stderr ) throws IOException{
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 process = Runtime.getRuntime().exec( cmdarray, envp, basedir );
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 threadStdout = new StreamPump( process.getInputStream(), stdout );
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 threadStderr = new StreamPump( process.getErrorStream(), stderr );
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 threadStdout.start();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 threadStderr.start();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 public int join() throws InterruptedException{
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 process.waitFor();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 threadStdout.join();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 threadStderr.join();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 return process.exitValue();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 public void interrupt() {
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 process.destroy();
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 }
a5576806d36d recreate repository without any libs for lightweight repository
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 }