You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2015/02/19 14:33:14 UTC
karaf git commit: [KARAF-3455] Improve custom parser so that they can
preprocess the command line which will be executed by gogo
Repository: karaf
Updated Branches:
refs/heads/master 22f73d75d -> 95fd0809a
[KARAF-3455] Improve custom parser so that they can preprocess the command line which will be executed by gogo
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/95fd0809
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/95fd0809
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/95fd0809
Branch: refs/heads/master
Commit: 95fd0809a5c37616f41e443067046e946d5a4b53
Parents: 22f73d7
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Feb 19 14:32:59 2015 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Thu Feb 19 14:32:59 2015 +0100
----------------------------------------------------------------------
.../apache/karaf/jdbc/command/parsing/JdbcParser.java | 12 ++++++++++++
.../org/apache/karaf/shell/api/console/Parser.java | 2 ++
.../karaf/shell/impl/action/command/ActionCommand.java | 9 +++++++++
.../karaf/shell/impl/console/ConsoleSessionImpl.java | 3 ++-
.../shell/impl/console/parsing/CommandLineParser.java | 8 +-------
.../karaf/shell/support/parsing/DefaultParser.java | 13 +++++++++++++
.../karaf/shell/impl/console/parsing/ParsingTest.java | 13 +++++++++++++
7 files changed, 52 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java b/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
index 90238c3..3aeb972 100644
--- a/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
+++ b/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
@@ -72,4 +72,16 @@ public class JdbcParser implements Parser {
command.substring(0, parser.position()));
}
+ @Override
+ public String preprocess(Session session, CommandLine cmdLine) {
+ StringBuilder parsed = new StringBuilder();
+ for (int i = 0 ; i < cmdLine.getArguments().length; i++) {
+ String arg = cmdLine.getArguments()[i];
+ if (i > 0) {
+ parsed.append(" ");
+ }
+ parsed.append(arg);
+ }
+ return parsed.toString();
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/main/java/org/apache/karaf/shell/api/console/Parser.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/api/console/Parser.java b/shell/core/src/main/java/org/apache/karaf/shell/api/console/Parser.java
index c653c27..acc0e07 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/api/console/Parser.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/api/console/Parser.java
@@ -25,4 +25,6 @@ public interface Parser {
CommandLine parse(Session session, String command, int cursor);
+ String preprocess(Session session, CommandLine commandLine);
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ActionCommand.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ActionCommand.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ActionCommand.java
index 9c33d34..ac4be9f 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ActionCommand.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ActionCommand.java
@@ -132,6 +132,15 @@ public class ActionCommand implements org.apache.karaf.shell.api.console.Command
}
throw new IllegalStateException("Could not find specified parser");
}
+
+ @Override
+ public String preprocess(Session session, CommandLine commandLine) {
+ Object service = session.getRegistry().getService(clazz);
+ if (service instanceof Parser) {
+ return ((Parser) service).preprocess(session, commandLine);
+ }
+ throw new IllegalStateException("Could not find specified parser");
+ }
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
index 4ff0c96..c1465e6 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/ConsoleSessionImpl.java
@@ -289,7 +289,8 @@ public class ConsoleSessionImpl implements Session {
@Override
public Object execute(CharSequence commandline) throws Exception {
- return session.execute(commandline);
+ String command = CommandLineParser.parse(this, commandline.toString());
+ return session.execute(command);
}
@Override
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/main/java/org/apache/karaf/shell/impl/console/parsing/CommandLineParser.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/parsing/CommandLineParser.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/parsing/CommandLineParser.java
index 5dbb6ff..a504c7c 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/parsing/CommandLineParser.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/parsing/CommandLineParser.java
@@ -84,13 +84,7 @@ public class CommandLineParser {
}
CommandLine cmdLine = cmdParser.parse(session, rem, rem.length());
- for (int i = 0 ; i < cmdLine.getArguments().length; i++) {
- String arg = cmdLine.getArguments()[i];
- if (i > 0) {
- parsed.append(" ");
- }
- parsed.append(arg);
- }
+ parsed.append(cmdParser.preprocess(session, cmdLine));
int length = cmdLine.getBuffer().length();
if (length < rem.length()) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/main/java/org/apache/karaf/shell/support/parsing/DefaultParser.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/support/parsing/DefaultParser.java b/shell/core/src/main/java/org/apache/karaf/shell/support/parsing/DefaultParser.java
index 7b01042..f5c4a07 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/support/parsing/DefaultParser.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/support/parsing/DefaultParser.java
@@ -40,4 +40,17 @@ public class DefaultParser implements Parser {
command.substring(0, parser.position()));
}
+ @Override
+ public String preprocess(Session session, CommandLine cmdLine) {
+ StringBuilder parsed = new StringBuilder();
+ for (int i = 0 ; i < cmdLine.getArguments().length; i++) {
+ String arg = cmdLine.getArguments()[i];
+ if (i > 0) {
+ parsed.append(" ");
+ }
+ parsed.append(arg);
+ }
+ return parsed.toString();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/95fd0809/shell/core/src/test/java/org/apache/karaf/shell/impl/console/parsing/ParsingTest.java
----------------------------------------------------------------------
diff --git a/shell/core/src/test/java/org/apache/karaf/shell/impl/console/parsing/ParsingTest.java b/shell/core/src/test/java/org/apache/karaf/shell/impl/console/parsing/ParsingTest.java
index ff605ee..440f96a 100644
--- a/shell/core/src/test/java/org/apache/karaf/shell/impl/console/parsing/ParsingTest.java
+++ b/shell/core/src/test/java/org/apache/karaf/shell/impl/console/parsing/ParsingTest.java
@@ -132,6 +132,19 @@ public class ParsingTest {
parser.position(),
command.substring(0, parser.position()));
}
+
+ @Override
+ public String preprocess(Session session, CommandLine cmdLine) {
+ StringBuilder parsed = new StringBuilder();
+ for (int i = 0 ; i < cmdLine.getArguments().length; i++) {
+ String arg = cmdLine.getArguments()[i];
+ if (i > 0) {
+ parsed.append(" ");
+ }
+ parsed.append(arg);
+ }
+ return parsed.toString();
+ }
}
}