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 2017/09/01 13:42:05 UTC
karaf git commit: [KARAF-5331] Use shell command access control lists
during command completion
Repository: karaf
Updated Branches:
refs/heads/master 6d5355e48 -> e1f7aff43
[KARAF-5331] Use shell command access control lists during command completion
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/e1f7aff4
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/e1f7aff4
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/e1f7aff4
Branch: refs/heads/master
Commit: e1f7aff434bbb548e7ddfbdbc1f284504224365c
Parents: 6d5355e
Author: Guillaume Nodet <gn...@apache.org>
Authored: Fri Sep 1 15:41:52 2017 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Fri Sep 1 15:41:52 2017 +0200
----------------------------------------------------------------------
.../shell/impl/console/ConsoleSessionImpl.java | 24 ++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/e1f7aff4/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 7e3d5fe..2a4a516 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
@@ -35,6 +35,7 @@ import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import org.apache.felix.gogo.jline.ParsedLineImpl;
import org.apache.felix.gogo.jline.Shell;
@@ -71,6 +72,8 @@ import org.jline.terminal.impl.DumbTerminal;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.felix.gogo.jline.Shell.VAR_SCOPE;
+
public class ConsoleSessionImpl implements Session {
private static final String SUPPRESS_WELCOME = "karaf.shell.suppress.welcome";
@@ -221,11 +224,28 @@ public class ConsoleSessionImpl implements Session {
}
@Override
public Set<String> getCommands() {
- return Shell.getCommands(session);
+ return factory.getRegistry().getCommands().stream()
+ .map(c -> c.getScope() + ":" + c.getName())
+ .collect(Collectors.toSet());
}
@Override
public String resolveCommand(String command) {
- return Shell.resolve(session, command);
+ String resolved = command;
+ if (command.indexOf(':') < 0) {
+ Set<String> commands = getCommands();
+ Object path = session.get(VAR_SCOPE);
+ String scopePath = (null == path ? "*" : path.toString());
+ for (String scope : scopePath.split(":")) {
+ for (String entry : commands) {
+ if ("*".equals(scope) && entry.endsWith(":" + command)
+ || entry.equals(scope + ":" + command)) {
+ resolved = entry;
+ break;
+ }
+ }
+ }
+ }
+ return resolved;
}
@Override
public String commandName(String command) {