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 2011/06/15 11:08:00 UTC
svn commit: r1135967 - in /incubator/clerezza/trunk/parent:
platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/
shell/src/main/scala/org/apache/clerezza/shell/
Author: reto
Date: Wed Jun 15 09:08:00 2011
New Revision: 1135967
URL: http://svn.apache.org/viewvc?rev=1135967&view=rev
Log:
CLEREZZA-565: prevent jline from accessing the dimensions of the terminal window. Added commend-line argument to start without console shell
Modified:
incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/ClerezzaApp.java
incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/LauncherArguments.java
incubator/clerezza/trunk/parent/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
Modified: incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/ClerezzaApp.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/ClerezzaApp.java?rev=1135967&r1=1135966&r2=1135967&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/ClerezzaApp.java (original)
+++ incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/ClerezzaApp.java Wed Jun 15 09:08:00 2011
@@ -53,7 +53,7 @@ import org.wymiwyg.commons.util.dirbrows
* Clerezza Launcher Application.
*
*
- * @author daniel
+ * @author daniel, reto
*/
public class ClerezzaApp {
@@ -164,9 +164,11 @@ public class ClerezzaApp {
showUsage();
return;
}
+ start(arguments);
+ }
+ private void start(LauncherArguments arguments) throws Throwable {
Properties configProps = getConfigProps(arguments);
-
Policy.setPolicy(new Policy() {
@Override
@@ -364,7 +366,10 @@ public class ClerezzaApp {
return artsToBeInstalled;
}
- private void showUsage() {
+ /**
+ * Prints usage instructions to stdout
+ */
+ public static void showUsage() {
System.out.print("Usage: LaunchBundle ");
System.out.println(AnnotatedInterfaceArguments.getArgumentsSyntax(LauncherArguments.class));
PrintWriter out = new PrintWriter(System.out, true);
@@ -372,12 +377,20 @@ public class ClerezzaApp {
LauncherArguments.class, out);
out.flush();
}
+
private Properties getConfigProps(LauncherArguments arguments) {
Properties configProps = new Properties();
configProps.putAll(System.getProperties());
{
+ if (arguments.getNotConsoleShell()) {
+ configProps.put("clerezza.shell.disable",
+ "true");
+ }
+ }
+
+ {
String argLogLevel = arguments.getLogLevel();
if (argLogLevel == null) {
argLogLevel = "INFO";
Modified: incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/LauncherArguments.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/LauncherArguments.java?rev=1135967&r1=1135966&r2=1135967&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/LauncherArguments.java (original)
+++ incubator/clerezza/trunk/parent/platform.launcher.storageless.parent/platform.launcher.storageless/src/main/java/org/apache/clerezza/platform/launcher/LauncherArguments.java Wed Jun 15 09:08:00 2011
@@ -62,6 +62,9 @@ public interface LauncherArguments {
@CommandLine(longName = "https_keystore_clientauth", shortName = {}, required = false,
description = "Client Auth request, one of \"none\", \"want\" or \"need\"")
public String getClientAuth();
-
-
+
+ @CommandLine(longName = "noConsoleShell", shortName = {"NCS"}, required = false,
+ isSwitch = true, description = "Disable the console shell")
+ public boolean getNotConsoleShell();
+
}
Modified: incubator/clerezza/trunk/parent/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala?rev=1135967&r1=1135966&r2=1135967&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala (original)
+++ incubator/clerezza/trunk/parent/shell/src/main/scala/org/apache/clerezza/shell/Shell.scala Wed Jun 15 09:08:00 2011
@@ -32,11 +32,15 @@ import java.net._
import java.security.PrivilegedActionException
import java.security.AccessController
import java.security.PrivilegedAction
-import java.util.{ArrayList, Arrays};
+
import javax.script.ScriptContext
import javax.script.{ScriptEngineFactory => JavaxEngineFactory, Compilable,
CompiledScript, ScriptEngine, AbstractScriptEngine, Bindings,
SimpleBindings, ScriptException}
+import jline.CandidateListCompletionHandler
+import jline.{CompletionHandler, Completor, Terminal, ConsoleReader, ArgumentCompletor, History => JHistory}
+import java.util.{ArrayList, Arrays}
+
//import scala.collection.immutable.Map
import scala.actors.DaemonActor
import scala.collection.immutable
@@ -53,9 +57,10 @@ import scala.actors.Actor
import scala.actors.Actor._
import org.apache.clerezza.scala.scripting._
import java.io.File
-import jline.{ ConsoleReader, ArgumentCompletor, History => JHistory }
+import org.slf4j.scala.Logging
-class Shell(factory: InterpreterFactory, val inStream: InputStream, out: OutputStream, shellCommands: immutable.Set[ShellCommand]) {
+class Shell(factory: InterpreterFactory, val inStream: InputStream,
+ out: OutputStream, shellCommands: immutable.Set[ShellCommand]) extends Logging {
private var bundleContext: BundleContext = null
@@ -130,20 +135,73 @@ class Shell(factory: InterpreterFactory,
override lazy val completion = Option(interpreter) map (x => new Completion(x))
val consoleReader = {
- val r = new jline.ConsoleReader(inStream, out)
+ val terminal = new jline.UnixTerminal
+ /*val terminal = new jline.Terminal {
+ override def initializeTerminal() {logger.warn("JLINE: initializing echo")}
+
+ override def isEchoEnabled = { logger.warn("JLINE: is enabled echo")
+ true}
+
+ override def isSupported = { logger.warn("JLINE: is supported echo")
+ true}
+
+ override def enableEcho() { logger.warn("JLINE: enabling echo")}
+
+ override def disableEcho() {logger.warn("JLINE: disabling echo") }
+
+ override def getTerminalHeight = 24
+
+ override def getTerminalWidth = 80
+
+ override def getEcho = false
+ }*/
+ val r = new jline.ConsoleReader(inStream, out, null, terminal)
r setHistory (History().jhistory)
r setBellEnabled false
completion foreach { c =>
+ logger.warn("JLINE: adding completor : "+c.jline)
r addCompletor c.jline
r setAutoprintThreshhold 250
}
+ import java.util.List
+ r setCompletionHandler new CompletionHandler {
+ def complete(reader: ConsoleReader, candidates: List[_], pos: Int) = {
+ val buffer = reader.getCursorBuffer()
+ if (candidates.size == 1) {
+ CandidateListCompletionHandler.setBuffer(reader, candidates.get(0).toString, pos)
+ } else {
+ import collection.JavaConversions._
+ out.println()
+ out.println(candidates.mkString("\t"))
+ out.print(prompt)
+ out.print(reader.getCursorBuffer())
+ }
+ true
+ }
+ }
+
+ r addCompletor new Completor {
+ def complete(p1: String, p2: Int, candidates: java.util.List[_]) = {
+ logger.warn("JLINE: candidates : "+candidates)
+ val canStrings = candidates.asInstanceOf[List[String]]
+ canStrings.add("Clerezza")
+ canStrings.add("Apache")
+ try {
+ throw new RuntimeException
+ } catch {
+ case e => logger.warn("stack ", e)
+ }
+ 0
+ }
+ }
r
}
def readOneLine(prompt: String) = consoleReader readLine prompt
- val interactive = true
+ val interactive = false
}
+ //in = new SimpleReader(inStream, out, true)
loadFiles(settings)
try {