/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.core.system; import java.io.ByteArrayOutputStream; /** * Encapsulates the results of a process that was executed via {@link SystemInfo#executeProcess(ProcessExecution)}. * * @author John Mazzitelli */ public class ProcessExecutionResults { private Integer exitCode; private Throwable error; private ByteArrayOutputStream output; private Process process; /** * If the process finished, this is its exit code. Its numeric value has specific meaning that is custom to the * operating system and the program that was executed. * * <p>This will be <code>null</code> if the process was never waited on or if the wait time expired before the * process exited.</p> * * @return process exit code or <code>null</code> if it could not be determined * * @see SystemInfo#executeProcess(ProcessExecution) */ public Integer getExitCode() { return exitCode; } void setExitCode(Integer exitCode) { this.exitCode = exitCode; } /** * An error that occurred, typically due to a startup failure. * * @return error that occurred while starting the process; <code>null</code> if no known error occurred */ public Throwable getError() { return error; } void setError(Throwable error) { this.error = error; } /** * Returns the full output of the process (stdout plus stderr) as a <code>String</code>. This returns * <code>null</code> if the process's output was not captured. * * @return the full output of the process (stdout plus stderr) or <code>null</code> */ public String getCapturedOutput() { if (output == null) { return null; } return output.toString(); } void setCapturedOutputStream(ByteArrayOutputStream output) { this.output = output; } /** * @return The spawned Process. typically used only to destroy the process, if necessary. */ public Process getProcess() { return process; } public void setProcess(Process process) { this.process = process; } @Override public String toString() { return "ProcessExecutionResults: exit-code=[" + exitCode + "], error=[" + error + "]"; } }