You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2012/08/11 12:05:49 UTC

svn commit: r1371902 - in /incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell: ConsoleShell.scala Shell.scala ShellFactory.scala

Author: reto
Date: Sat Aug 11 10:05:49 2012
New Revision: 1371902

URL: http://svn.apache.org/viewvc?rev=1371902&view=rev
Log:
CLEREZZA-619: using platform specific terminal, Hopefully it works on windows too now.

Modified:
    incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ConsoleShell.scala
    incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
    incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ShellFactory.scala

Modified: incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ConsoleShell.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ConsoleShell.scala?rev=1371902&r1=1371901&r2=1371902&view=diff
==============================================================================
--- incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ConsoleShell.scala (original)
+++ incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ConsoleShell.scala Sat Aug 11 10:05:49 2012
@@ -54,12 +54,12 @@ class ConsoleShell()  {
 				stoppedBundle = Some(bundle)
 			}
 			//this call sets the console terminal to the right settings
-			//and it mast not be invoked when there is no console input, or the system will stop
-			jline.Terminal.setupTerminal()
+			//and it must not be invoked when there is no console input, or the system will stop
+			val terminalOption = Some(jline.Terminal.setupTerminal())
 			val in =  Channels.newInputStream(
 				(new FileInputStream(FileDescriptor.in)).getChannel());
 			interruptibleIn = new InterruptibleInputStream(in)
-			val shell = factory.createShell(interruptibleIn, System.out)
+			val shell = factory.createShell(interruptibleIn, System.out, terminalOption)
 			shell.start()
 			shellOption = Some(shell)
 		}

Modified: incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala?rev=1371902&r1=1371901&r2=1371902&view=diff
==============================================================================
--- incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala (original)
+++ incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala Sat Aug 11 10:05:49 2012
@@ -60,7 +60,7 @@ import java.io.File
 import org.slf4j.scala.Logging
 
 class Shell(factory: InterpreterFactory, val inStream: InputStream, 
-			out: OutputStream, shellCommands: immutable.Set[ShellCommand]) extends Logging {
+			out: OutputStream, shellCommands: immutable.Set[ShellCommand], terminalOption: Option[Terminal] = None ) extends Logging {
 
 
 	private var bundleContext: BundleContext = null
@@ -69,7 +69,10 @@ class Shell(factory: InterpreterFactory,
 	private var imports = Set[String]()
 	private var terminationListeners = Set[Shell.TerminationListener]();
 
-	val terminal = new jline.UnixTerminal
+	val terminal = terminalOption match {
+	  case Some(x) => x
+	  case None => new jline.UnixTerminal
+	}
 
 	val interpreterLoop = new InterpreterLoop(new BufferedReader(new InputStreamReader(inStream)), new PrintWriter(out, true)) {
 		override def createInterpreter() {

Modified: incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ShellFactory.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ShellFactory.scala?rev=1371902&r1=1371901&r2=1371902&view=diff
==============================================================================
--- incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ShellFactory.scala (original)
+++ incubator/clerezza/trunk/shell/src/main/scala/org/apache/clerezza/shell/ShellFactory.scala Sat Aug 11 10:05:49 2012
@@ -21,13 +21,13 @@ package org.apache.clerezza.shell;
 
 
 
-import org.osgi.service.component.ComponentContext;
-
+import org.osgi.service.component.ComponentContext
 import java.io.InputStream
 import java.io.OutputStream
 import java.security.AccessController
 import java.security.PrivilegedAction
 import org.apache.clerezza.scala.scripting.InterpreterFactory
+import jline.Terminal
 
 
 class ShellFactory()  {
@@ -47,14 +47,20 @@ class ShellFactory()  {
 		this.componentContext = componentContext
 	}
 
-	def createShell(pIn: InputStream, pOut: OutputStream) = {
+	/* 
+	 * Using overloading instead of default, as default is not supported when calling from java
+	 */
+	def createShell(pIn: InputStream, pOut: OutputStream): Shell = {
+	  createShell(pIn, pOut, None)
+	}
+	def createShell(pIn: InputStream, pOut: OutputStream, terminalOption: Option[Terminal]): Shell = {
     var security: SecurityManager = System.getSecurityManager
     if (security != null) {
       AccessController.checkPermission(new ShellPermission())
     }
 		AccessController.doPrivileged(new PrivilegedAction[Shell] {
 				override def run() = {
-					val shell = new Shell(interpreterFactory, pIn, pOut, commands)
+					val shell = new Shell(interpreterFactory, pIn, pOut, commands, terminalOption)
 					//shell.bind("bundleContext", classOf[BundleContext].getName, componentContext.getBundleContext)
 					//shell.bind("componentContext", classOf[ComponentContext].getName, componentContext)
 					shell.bind("osgiDsl", classOf[OsgiDsl].getName, new OsgiDsl(componentContext, pOut))