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