/* * Copyright (c) 2004, 2005 TADA AB - Taby Sweden * Distributed under the terms shown in the file COPYRIGHT * found in the root folder of this project or at * http://eng.tada.se/osprojects/COPYRIGHT.html */ package org.postgresql.pljava.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; /** * @author Thomas Hallgren */ public class CommandReader extends BufferedReader { private final Process m_process; private BufferedReader m_errorReader; private CommandReader(Process proc, Reader rdr) { super(rdr); m_process = proc; } public static CommandReader create(String[] args, String[] env) throws IOException { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(args, env); return new CommandReader(proc, new InputStreamReader(proc.getInputStream())); } public synchronized BufferedReader getErrorReader() { if(m_errorReader == null) m_errorReader = new BufferedReader(new InputStreamReader(m_process.getErrorStream())); return m_errorReader; } public void close() throws IOException { super.close(); if(m_errorReader != null) m_errorReader.close(); } public int getExitValue() throws IllegalThreadStateException { try { return m_process.exitValue(); } catch(IllegalThreadStateException e) { try { m_process.waitFor(); } catch(InterruptedException e2) {} return m_process.exitValue(); } } }