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