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/10/26 14:05:33 UTC

[karaf] 01/05: [KARAF-5445] Completers should be followed by a space when complete

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf.git

commit 1c6a3371116c3f48a7f6405be1cc17fd7c06ef8c
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Oct 26 12:42:56 2017 +0200

    [KARAF-5445] Completers should be followed by a space when complete
---
 .../completers/BundleSymbolicNameCompleter.java    | 17 ++++-----------
 .../command/completers/ConfigurationCompleter.java |  6 +++---
 .../ConnectionFactoriesNameCompleter.java          |  2 +-
 .../impl/action/command/ArgumentCompleter.java     | 25 ++++++++++------------
 .../shell/impl/console/CommandsCompleter.java      |  2 +-
 .../shell/support/completers/StringsCompleter.java |  4 ++--
 6 files changed, 22 insertions(+), 34 deletions(-)

diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/command/completers/BundleSymbolicNameCompleter.java b/bundle/core/src/main/java/org/apache/karaf/bundle/command/completers/BundleSymbolicNameCompleter.java
index c0b56f7..0b2ec36 100644
--- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/completers/BundleSymbolicNameCompleter.java
+++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/completers/BundleSymbolicNameCompleter.java
@@ -18,14 +18,13 @@ package org.apache.karaf.bundle.command.completers;
 
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
-import org.apache.karaf.shell.api.console.Candidate;
 import org.apache.karaf.shell.api.console.CommandLine;
 import org.apache.karaf.shell.api.console.Completer;
 import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
-import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -36,19 +35,11 @@ public class BundleSymbolicNameCompleter implements Completer {
 
     @Override
     public int complete(Session session, CommandLine commandLine, List<String> candidates) {
-        List<Candidate> cands = new ArrayList<>();
-        completeCandidates(session, commandLine, cands);
-        for (Candidate cand : cands) {
-            candidates.add(cand.value());
-        }
-        return candidates.isEmpty() ? -1 : 0;
-    }
-
-    @Override
-    public void completeCandidates(Session session, CommandLine commandLine, List<Candidate> candidates) {
+        StringsCompleter delegate = new StringsCompleter();
         for (Bundle bundle : bundleContext.getBundles()) {
-            candidates.add(new Candidate(bundle.getSymbolicName(), true));
+            delegate.getStrings().add(bundle.getSymbolicName());
         }
+        return delegate.complete(session, commandLine, candidates);
     }
 
 }
diff --git a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java b/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
index 19cc0df..b0cef13 100644
--- a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
+++ b/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java
@@ -77,7 +77,7 @@ public class ConfigurationCompleter implements Completer, ConfigurationListener
 
         Collection<String> pids = new ArrayList<>();
         for (Configuration config : configs) {
-            pids.add(config.getPid() + " ");
+            pids.add(config.getPid());
         }
 
         delegate.getStrings().addAll(pids);
@@ -95,9 +95,9 @@ public class ConfigurationCompleter implements Completer, ConfigurationListener
     public void configurationEvent(ConfigurationEvent configurationEvent) {
         String pid = configurationEvent.getPid();
         if (configurationEvent.getType() == ConfigurationEvent.CM_DELETED) {
-            delegate.getStrings().remove(pid + " ");
+            delegate.getStrings().remove(pid);
         } else if (configurationEvent.getType() == ConfigurationEvent.CM_UPDATED) {
-            delegate.getStrings().add(pid + " ");
+            delegate.getStrings().add(pid);
         }
     }
 }
diff --git a/jms/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java b/jms/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
index 2fd8d2a..98f97b3 100644
--- a/jms/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
+++ b/jms/src/main/java/org/apache/karaf/jms/command/completers/ConnectionFactoriesNameCompleter.java
@@ -40,7 +40,7 @@ public class ConnectionFactoriesNameCompleter implements Completer {
         StringsCompleter delegate = new StringsCompleter();
         try {
             for (String connectionFactory : jmsService.connectionFactories()) {
-                delegate.getStrings().add(connectionFactory + " ");
+                delegate.getStrings().add(connectionFactory);
             }
         } catch (Exception e) {
             // nothing to do
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ArgumentCompleter.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ArgumentCompleter.java
index 25e259e..0a4a5e1 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ArgumentCompleter.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/ArgumentCompleter.java
@@ -22,6 +22,7 @@ import java.io.File;
 import java.lang.reflect.Field;
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashMap;
@@ -119,12 +120,10 @@ public class ArgumentCompleter implements Completer {
                 if (ann != null) {
                     Class<?> clazz = ann.value();
                     String[] value = ann.values();
-                    if (clazz != null) {
-                        if (value.length > 0 && clazz == StringsCompleter.class) {
-                            completer = new StringsCompleter(value, ann.caseSensitive());
-                        } else {
-                            completer = command.getCompleter(clazz);
-                        }
+                    if (value.length > 0) {
+                        completer = new StringsCompleter(Arrays.asList(value), ann.caseSensitive());
+                    } else {
+                        completer = command.getCompleter(clazz);
                     }
                 } else {
                     completer = getDefaultCompleter(field, multi);
@@ -148,12 +147,10 @@ public class ArgumentCompleter implements Completer {
                     try {
                         Class clazz = ann.value();
                         String[] value = ann.values();
-                        if (clazz != null) {
-                            if (clazz == StringsCompleter.class) {
-                                completer = new StringsCompleter(value, ann.caseSensitive());
-                            } else {
-                                completer = command.getCompleter(clazz);
-                            }
+                        if (value.length > 0) {
+                            completer = new StringsCompleter(Arrays.asList(value), ann.caseSensitive());
+                        } else {
+                            completer = command.getCompleter(clazz);
                         }
                     } catch (Throwable t) {
                         // Ignore in case the completer class is not even available
@@ -189,13 +186,13 @@ public class ArgumentCompleter implements Completer {
         } else if (type.isAssignableFrom(File.class)) {
             completer = new FileCompleter();
         } else if (type.isAssignableFrom(Boolean.class) || type.isAssignableFrom(boolean.class)) {
-            completer = new StringsCompleter(new String[] {"false", "true"}, false);
+            completer = new StringsCompleter(Arrays.asList("false", "true"));
         } else if (Enum.class.isAssignableFrom(type)) {
             Set<String> values = new HashSet<>();
             for (Object o : EnumSet.allOf((Class<Enum>) type)) {
                 values.add(o.toString());
             }
-            completer = new StringsCompleter(values, false);
+            completer = new StringsCompleter(values);
         }
         return completer;
     }
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/CommandsCompleter.java b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/CommandsCompleter.java
index 84f87c6..b75489b 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/impl/console/CommandsCompleter.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/impl/console/CommandsCompleter.java
@@ -97,7 +97,7 @@ public class CommandsCompleter extends org.apache.karaf.shell.support.completers
                 }
             }
             if (!subShell.equals(Session.SCOPE_GLOBAL)) {
-                completers.add(new StringsCompleter(new String[] { "exit" }));
+                completers.add(new StringsCompleter(Collections.singletonList("exit")));
             }
             completers.forEach(c -> c.completeCandidates(session, commandLine, candidates));
             return;
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/support/completers/StringsCompleter.java b/shell/core/src/main/java/org/apache/karaf/shell/support/completers/StringsCompleter.java
index 7eff78d..4a57aef 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/support/completers/StringsCompleter.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/support/completers/StringsCompleter.java
@@ -39,7 +39,7 @@ public class StringsCompleter
     private final boolean caseSensitive;
 
     public StringsCompleter() {
-        this(true);
+        this(false);
     }
 
     public StringsCompleter(final boolean caseSensitive) {
@@ -95,7 +95,7 @@ public class StringsCompleter
             }
 
             // noinspection unchecked
-            candidates.add(match);
+            candidates.add(match + " ");
         }
 
         return candidates.isEmpty() ? -1 : commandLine.getBufferPosition() - commandLine.getArgumentPosition();

-- 
To stop receiving notification emails like this one, please contact
"commits@karaf.apache.org" <co...@karaf.apache.org>.