/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.ssh.jsch;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
import org.apache.sshd.server.Command;
import org.apache.sshd.server.Environment;
import org.apache.sshd.server.ExitCallback;
/**
* Provides test behavior for incoming commands.
*
* @author Doreen Seider
*/
public class DummyCommand implements Command {
/** Test constant. */
public static final String EMPTY_STRING = "";
protected ExitCallback exitCallback;
private String stdout;
private String stderr;
private int exitValue;
private OutputStream stdoutStream;
private OutputStream stderrStream;
public DummyCommand() {
this(null, null, 0);
}
public DummyCommand(String stdout, String stderr) {
this(stdout, stderr, 0);
}
public DummyCommand(String stdout, String stderr, int exitValue) {
this.stdout = stdout;
this.stderr = stderr;
this.exitValue = exitValue;
}
@Override
public void setInputStream(InputStream in) {}
@Override
public void setOutputStream(OutputStream out) {
this.stdoutStream = out;
}
@Override
public void setErrorStream(OutputStream err) {
this.stderrStream = err;
}
@Override
public void setExitCallback(ExitCallback callback) {
this.exitCallback = callback;
}
@Override
public void start(Environment env) throws IOException {
if (stdout != null) {
stdoutStream.write(stdout.getBytes());
} else {
stdoutStream.write(EMPTY_STRING.getBytes());
}
if (stderr != null) {
stderrStream.write(stderr.getBytes());
} else {
stderrStream.write(EMPTY_STRING.getBytes());
}
stdoutStream.flush();
stderrStream.flush();
IOUtils.closeQuietly(stdoutStream);
IOUtils.closeQuietly(stderrStream);
exitCallback.onExit(exitValue);
}
@Override
public void destroy() {}
}