private void setErrorCodeIfNotYetSet() {
// if exit code was set on processTerminated, no need to rewrite it
// WinPtyProcess returns -2 if pty is already closed
- if (myOutput.hasErrorExitCode()) {
+ if (!myOutput.isErrorCodeSet()) {
myOutput.setExitCode(getProcess().exitValue());
}
}
* @author yole
*/
public class ProcessOutput {
- private static final int ERROR_EXIT_CODE = -1;
-
private final StringBuilder myStdoutBuilder = new StringBuilder();
private final StringBuilder myStderrBuilder = new StringBuilder();
- private int myExitCode;
+ @Nullable private Integer myExitCode;
private boolean myTimeout;
private boolean myCancelled;
public ProcessOutput() {
- myExitCode = ERROR_EXIT_CODE; // until set explicitly, exit code denotes an error.
}
public ProcessOutput(final int exitCode) {
}
public int getExitCode() {
- return myExitCode;
+ Integer code = myExitCode;
+ return code == null ? -1 : code;
}
/**
- * @return true if exit code wasn't set and is still set to default value (this might happen,
+ * @return false if exit code wasn't set,
* for example, when our CapturingProcessHandler.runProcess() is interrupted)
*/
- public boolean hasErrorExitCode() {
- return getExitCode() == ERROR_EXIT_CODE;
+ public boolean isErrorCodeSet() {
+ return myExitCode != null;
}
public void setTimeout() {