// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.plugins.commandline; import bsh.ConsoleInterface; import bsh.Interpreter; import graphtea.platform.core.BlackBoard; import graphtea.platform.core.exception.ExceptionHandler; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.Reader; import java.net.ServerSocket; import java.net.Socket; /** * @author Mohamad Ali Rostami * @email mamaliam@gmail.com */ public class ShellServer { public static Thread thread; Shell shell; public ShellServer(BlackBoard bb, Shell shell) { this.shell = shell; } public void performJob(String eventKey, Object val) { thread = new Thread() { public void run() { try { ServerSocket ss = new ServerSocket(1234); final Socket s = ss.accept(); ConsoleInterface ci = new ConsoleInterface() { Reader r = new InputStreamReader(s.getInputStream()); public Reader getIn() { try { return new InputStreamReader(s.getInputStream()); } catch (IOException e) { ExceptionHandler.catchException(e); } return null; } public PrintStream getOut() { try { return new PrintStream(s.getOutputStream()); } catch (IOException e) { ExceptionHandler.catchException(e); //To change body of catch statement use File | Settings | File Templates. } return null; } public PrintStream getErr() { try { return new PrintStream(s.getOutputStream()); } catch (IOException e) { ExceptionHandler.catchException(e); //To change body of catch statement use File | Settings | File Templates. } return null; } public void println(Object object) { this.getOut().println(object); } public void print(Object object) { this.getOut().print(object); } public void error(Object object) { this.getOut().println(object); } }; Interpreter interpreter = new Interpreter(ci); interpreter.eval(shell.getEvaluations()); interpreter.set("me", shell.get("me")); interpreter.set("current_interpreter", interpreter); interpreter.run(); } catch (Exception e) { ExceptionHandler.catchException(e); } } }; thread.start(); } }