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))


Reply via email to