/**
* Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.tools.aesh.core.console;
import java.io.InputStream;
import java.io.OutputStream;
import org.jboss.tools.aesh.core.document.Document;
import org.jboss.tools.aesh.core.internal.io.AeshInputStream;
import org.jboss.tools.aesh.core.internal.io.AeshOutputFilter;
import org.jboss.tools.aesh.core.internal.io.AeshOutputStream;
import org.jboss.tools.aesh.core.internal.io.CommandFilter;
import org.jboss.tools.aesh.core.internal.io.DocumentInputOutputHandler;
public abstract class AbstractConsole implements Console {
private AeshInputStream inputStream = null;
private AeshOutputStream outputStream, errorStream = null;
private DocumentInputOutputHandler handler = null;
private AeshOutputFilter filter = null;
public AbstractConsole() {
handler = new DocumentInputOutputHandler();
filter = new CommandFilter(handler);
}
public abstract void start();
public abstract void stop();
public void connect(Document document) {
setInputStream(new AeshInputStream());
setOutputStream( new AeshOutputStream(filter));
setErrorStream(new AeshOutputStream(filter));
setHandlerInputStream(inputStream);
setHandlerDocument(document);
}
public void disconnect() {
setHandlerDocument(null);
setHandlerInputStream(null);
setErrorStream(null);
setOutputStream(null);
setInputStream(null);
}
public void sendInput(String input) {
if (inputStream != null) {
inputStream.append(input);
}
}
protected InputStream getInputStream() {
return inputStream;
}
protected OutputStream getOutputStream() {
return outputStream;
}
protected OutputStream getErrorStream() {
return errorStream;
}
void setInputStream(AeshInputStream inputStream) {
this.inputStream = inputStream;
}
void setOutputStream(AeshOutputStream outputStream) {
this.outputStream = outputStream;
}
void setErrorStream(AeshOutputStream errorStream) {
this.errorStream = errorStream;
}
void setHandlerDocument(Document document) {
handler.setDocument(document);
}
void setHandlerInputStream(AeshInputStream inputStream) {
handler.setInputStream(inputStream);
}
@Override
public Object getCurrentResource() {
return null;
}
}