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 2014/02/14 13:44:11 UTC

[01/15] git commit: [KARAF-2756] Hide Completer services

Updated Branches:
  refs/heads/master d79376eed -> 22bae9241


[KARAF-2756] Hide Completer services


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/3cef88c5
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/3cef88c5
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/3cef88c5

Branch: refs/heads/master
Commit: 3cef88c538c6530bb4d5d5c33b1ade6e2b02ed36
Parents: ef7ba25
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 11:41:23 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../org/apache/karaf/bundle/command/ListBundleServices.java  | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/3cef88c5/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
----------------------------------------------------------------------
diff --git a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
index 682e2bd..f9c234f 100644
--- a/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
+++ b/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundleServices.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.apache.felix.service.command.Function;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.util.ShellUtil;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
@@ -61,7 +62,7 @@ public class ListBundleServices extends BundlesCommand {
         for (ServiceReference<?> serviceRef : refs) {
             String[] objectClass = (String[]) serviceRef.getProperty(Constants.OBJECTCLASS);
 
-            boolean print = showAll || !isCommand(objectClass);
+            boolean print = showAll || !isCommandOrCompleter(objectClass);
 
             // Print header if we have not already done so.
             if (!headerPrinted) {
@@ -89,9 +90,10 @@ public class ListBundleServices extends BundlesCommand {
         }
     }
 
-    private boolean isCommand(String[] objectClasses) {
+    private boolean isCommandOrCompleter(String[] objectClasses) {
         for (String objectClass : objectClasses) {
-            if (objectClass.equals(Function.class.getName())) {
+            if (objectClass.equals(Function.class.getName())
+                    || objectClass.equals(Completer.class.getName())) {
                 return true;
             }
         }


[07/15] git commit: [KARAF-2756] Use @Completer for kar commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for kar commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/edfae484
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/edfae484
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/edfae484

Branch: refs/heads/master
Commit: edfae484f05dafa4d76d0731a14daebed7b68282
Parents: 2a12fbb
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Feb 12 23:00:54 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../OSGI-INF/blueprint/features-command.xml     |  6 +-----
 kar/command/pom.xml                             |  4 ++++
 .../karaf/kar/command/CreateKarCommand.java     |  3 +++
 .../karaf/kar/command/UninstallKarCommand.java  |  3 +++
 .../OSGI-INF/blueprint/kar-command.xml          | 21 +++++++-------------
 5 files changed, 18 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/edfae484/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
----------------------------------------------------------------------
diff --git a/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml b/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
index 9b4afb3..b7789e5 100644
--- a/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
+++ b/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
@@ -98,10 +98,6 @@
     <bean id="installedRepoNameCompleter" class="org.apache.karaf.features.command.completers.InstalledRepoNameCompleter">
         <property name="featuresService" ref="featuresService"/>
     </bean>
-    <service ref="installedRepoNameCompleter" auto-export="all-classes">
-        <service-properties>
-            <entry key="name" value="installedRepoNameCompleter"/>
-        </service-properties>
-    </service>
+    <service ref="installedRepoNameCompleter" auto-export="all-classes"/>
 
 </blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/edfae484/kar/command/pom.xml
----------------------------------------------------------------------
diff --git a/kar/command/pom.xml b/kar/command/pom.xml
index d6762ef..c4cdab5 100644
--- a/kar/command/pom.xml
+++ b/kar/command/pom.xml
@@ -57,6 +57,10 @@
             <artifactId>org.apache.karaf.shell.table</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.karaf.features</groupId>
+            <artifactId>org.apache.karaf.features.command</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/karaf/blob/edfae484/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
index 58562f4..96c99c7 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/CreateKarCommand.java
@@ -18,13 +18,16 @@ package org.apache.karaf.kar.command;
 
 import java.util.List;
 
+import org.apache.karaf.features.command.completers.InstalledRepoNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "kar", name = "create", description = "Create a kar file for a list of feature repos")
 public class CreateKarCommand extends KarCommandSupport {
     
     @Argument(index = 0, name = "repoName", description = "Repository name. The kar will contain all features of the named repository by default", required = true, multiValued = false)
+    @Completer(InstalledRepoNameCompleter.class)
     private String repoName;
     
     @Argument(index = 1, name = "features", description = "Names of the features to include. If set then only these features will be added", required = false, multiValued = true)

http://git-wip-us.apache.org/repos/asf/karaf/blob/edfae484/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
----------------------------------------------------------------------
diff --git a/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java b/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
index e3f4dca..a02efb5 100644
--- a/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
+++ b/kar/command/src/main/java/org/apache/karaf/kar/command/UninstallKarCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.kar.command;
 
+import org.apache.karaf.kar.command.completers.KarCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "kar", name = "uninstall", description = "Uninstall a KAR file.")
 public class UninstallKarCommand extends KarCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the KAR file to uninstall.", required = true, multiValued = false)
+    @Completer(KarCompleter.class)
     private String name;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/edfae484/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
----------------------------------------------------------------------
diff --git a/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml b/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
index 2997601..17acba1 100644
--- a/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
+++ b/kar/command/src/main/resources/OSGI-INF/blueprint/kar-command.xml
@@ -17,14 +17,6 @@
     -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
-    <reference id="karService" interface="org.apache.karaf.kar.KarService"/>
-    
-    <bean id="karCompleter" class="org.apache.karaf.kar.command.completers.KarCompleter">
-        <property name="karService" ref="karService"/>
-    </bean>
-
-    <reference id="installedRepoNameCompleter" interface="org.apache.karaf.shell.console.Completer" filter="(name=installedRepoNameCompleter)"/>
-
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
         <command>
             <action class="org.apache.karaf.kar.command.ListKarCommand">
@@ -40,18 +32,19 @@
             <action class="org.apache.karaf.kar.command.UninstallKarCommand">
                 <property name="karService" ref="karService"/>
             </action>
-            <completers>
-                <ref component-id="karCompleter"/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.kar.command.CreateKarCommand">
                 <property name="karService" ref="karService"/>
             </action>
-            <completers>
-                <ref component-id="installedRepoNameCompleter"/>
-            </completers>
         </command>
     </command-bundle>
 
+    <reference id="karService" interface="org.apache.karaf.kar.KarService"/>
+
+    <bean id="karCompleter" class="org.apache.karaf.kar.command.completers.KarCompleter">
+        <property name="karService" ref="karService"/>
+    </bean>
+    <service ref="karCompleter" auto-export="all-classes"/>
+
 </blueprint>
\ No newline at end of file


[02/15] git commit: [KARAF-2756] Fix @Completer to correctly handle multi-valued arguments

Posted by gn...@apache.org.
[KARAF-2756] Fix @Completer to correctly handle multi-valued arguments


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/ef7ba257
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/ef7ba257
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/ef7ba257

Branch: refs/heads/master
Commit: ef7ba257f8517fafdd84fd61486df76bf1dee6d0
Parents: 83042cf
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 11:41:07 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../shell/console/completer/ArgumentCompleter.java  | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/ef7ba257/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
index ea6a5d4..26090b0 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
@@ -67,7 +67,6 @@ public class ArgumentCompleter implements Completer {
     final Map<Option, Field> fields = new HashMap<Option, Field>();
     final Map<String, Option> options = new HashMap<String, Option>();
     final Map<Integer, Field> arguments = new HashMap<Integer, Field>();
-    final Map<Field, org.apache.karaf.shell.commands.Completer> completerAnnotations = new HashMap<Field, org.apache.karaf.shell.commands.Completer>();
     boolean strict = true;
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -98,12 +97,6 @@ public class ArgumentCompleter implements Completer {
                         arguments.put(key, field);
                     }
                 }
-                if (option != null || argument != null) {
-                    org.apache.karaf.shell.commands.Completer completer = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
-                    if (completer != null) {
-                        completerAnnotations.put(field, completer);
-                    }
-                }
             }
         }
         options.put(HelpOption.HELP.name(), HelpOption.HELP);
@@ -115,11 +108,14 @@ public class ArgumentCompleter implements Completer {
             Map<String, Completer> focl = ((CompletableFunction) function).getOptionalCompleters();
             List<Completer> fcl = ((CompletableFunction) function).getCompleters();
             if (focl == null && fcl == null) {
+                boolean multi = false;
                 for (int key = 0; key < arguments.size(); key++) {
                     Completer completer = null;
                     Field field = arguments.get(key);
                     if (field != null) {
-                        org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+                        Argument argument = field.getAnnotation(Argument.class);
+                        multi = (argument != null && argument.multiValued());
+                        org.apache.karaf.shell.commands.Completer ann = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
                         if (ann != null) {
                             Class clazz = ann.value();
                             String[] values = ann.values();
@@ -138,7 +134,7 @@ public class ArgumentCompleter implements Completer {
                     }
                     argsCompleters.add(completer);
                 }
-                if (argsCompleters.isEmpty()) {
+                if (argsCompleters.isEmpty() || !multi) {
                     argsCompleters.add(NullCompleter.INSTANCE);
                 }
                 optionalCompleters = new HashMap<String, Completer>();
@@ -146,7 +142,7 @@ public class ArgumentCompleter implements Completer {
                     Completer completer = null;
                     Field field = fields.get(option);
                     if (field != null) {
-                        org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+                        org.apache.karaf.shell.commands.Completer ann = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
                         if (ann != null) {
                             Class clazz = ann.value();
                             String[] values = ann.values();


[10/15] git commit: [KARAF-2756] Allow simple StringsCompleter definitions using @Completer

Posted by gn...@apache.org.
[KARAF-2756] Allow simple StringsCompleter definitions using @Completer


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/334121ea
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/334121ea
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/334121ea

Branch: refs/heads/master
Commit: 334121ead51a45cd61c8bbd932c24b18825d892f
Parents: bdb8f07
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Feb 13 15:06:38 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../apache/karaf/shell/commands/Completer.java    |  4 ++++
 .../console/completer/ArgumentCompleter.java      | 18 ++++++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/334121ea/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java b/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
index 6724dc6..ece3e1d 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
@@ -27,4 +27,8 @@ public @interface Completer {
 
     Class<? extends org.apache.karaf.shell.console.Completer> value();
 
+    String[] values() default { };
+
+    boolean caseSensitive() default false;
+
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/334121ea/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
index 1424bd6..ea6a5d4 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
@@ -122,9 +122,14 @@ public class ArgumentCompleter implements Completer {
                         org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
                         if (ann != null) {
                             Class clazz = ann.value();
+                            String[] values = ann.values();
                             if (clazz != null) {
-                                BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
-                                completer = new ProxyServiceCompleter(context, clazz);
+                                if (values.length > 0 && clazz == StringsCompleter.class) {
+                                    completer = new StringsCompleter(values, ann.caseSensitive());
+                                } else {
+                                    BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
+                                    completer = new ProxyServiceCompleter(context, clazz);
+                                }
                             }
                         }
                     }
@@ -144,9 +149,14 @@ public class ArgumentCompleter implements Completer {
                         org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
                         if (ann != null) {
                             Class clazz = ann.value();
+                            String[] values = ann.values();
                             if (clazz != null) {
-                                BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
-                                completer = new ProxyServiceCompleter(context, clazz);
+                                if (values.length > 0 && clazz == StringsCompleter.class) {
+                                    completer = new StringsCompleter(values, ann.caseSensitive());
+                                } else {
+                                    BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
+                                    completer = new ProxyServiceCompleter(context, clazz);
+                                }
                             }
                         }
                     }


[12/15] git commit: [KARAF-2756] Use @Completer for jndi commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for jndi commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/7d80946e
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/7d80946e
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/7d80946e

Branch: refs/heads/master
Commit: 7d80946ed022b28c88db7d3d7edffcc49140d369
Parents: 680ad58
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 13:19:45 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:58 2014 +0100

----------------------------------------------------------------------
 .../apache/karaf/jndi/command/AliasCommand.java |  5 +++
 .../apache/karaf/jndi/command/BindCommand.java  |  5 +++
 .../karaf/jndi/command/ContextsCommand.java     |  3 ++
 .../karaf/jndi/command/CreateCommand.java       |  3 ++
 .../karaf/jndi/command/DeleteCommand.java       |  3 ++
 .../apache/karaf/jndi/command/NamesCommand.java |  3 ++
 .../karaf/jndi/command/UnbindCommand.java       |  3 ++
 .../OSGI-INF/blueprint/jndi-command.xml         | 34 +++-----------------
 8 files changed, 30 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
index f5243a5..86a126e 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/AliasCommand.java
@@ -16,16 +16,21 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
+import org.apache.karaf.jndi.command.completers.NamesCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jndi", name = "alias", description = "Create a JNDI alias on a given name.")
 public class AliasCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The JNDI name", required = true, multiValued = false)
+    @Completer(NamesCompleter.class)
     String name;
 
     @Argument(index = 1, name = "alias", description = "The JNDI alias", required = true, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String alias;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
index 87b0213..a0560d3 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/BindCommand.java
@@ -16,16 +16,21 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
+import org.apache.karaf.jndi.command.completers.ServicesIdCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jndi", name = "bind", description = "Bind an OSGi service in the JNDI context")
 public class BindCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "service", description = "The ID of the OSGi service to bind", required = true, multiValued = false)
+    @Completer(ServicesIdCompleter.class)
     Long serviceId;
 
     @Argument(index = 1, name = "name", description = "The JNDI name to bind the OSGi service", required = true, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String name;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
index b766c25..b50f3c3 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/ContextsCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.table.ShellTable;
 
 import java.util.List;
@@ -26,6 +28,7 @@ import java.util.List;
 public class ContextsCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "context", description = "The base JNDI context", required = false, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String context;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
index 1338cb6..dfaa108 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/CreateCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jndi",  name = "create", description = "Create a new JNDI sub-context.")
 public class CreateCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "context", description = "The JNDI sub-context name", required = true, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String context;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
index 4ab41d6..0370859 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/DeleteCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jndi", name = "delete", description = "Delete a JNDI sub-context.")
 public class DeleteCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "context", description = "The JNDI sub-context name", required = true, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String context;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
index 165a5be..661dbbf 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/NamesCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.ContextsCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.table.ShellTable;
 
 import java.util.Map;
@@ -26,6 +28,7 @@ import java.util.Map;
 public class NamesCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "context", description = "The JNDI context to display the names", required = false, multiValued = false)
+    @Completer(ContextsCompleter.class)
     String context;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java b/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
index acac41f..10b9740 100644
--- a/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
+++ b/jndi/command/src/main/java/org/apache/karaf/jndi/command/UnbindCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jndi.command;
 
+import org.apache.karaf.jndi.command.completers.NamesCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jndi", name = "unbind", description = "Unbind a JNDI name.")
 public class UnbindCommand extends JndiCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The JNDI name to unbind", required = true, multiValued = false)
+    @Completer(NamesCompleter.class)
     String name;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/7d80946e/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
----------------------------------------------------------------------
diff --git a/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml b/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
index cccba60..d9b9f14 100644
--- a/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
+++ b/jndi/command/src/main/resources/OSGI-INF/blueprint/jndi-command.xml
@@ -24,76 +24,52 @@
             <action class="org.apache.karaf.jndi.command.AliasCommand">
                 <property name="jndiService" ref="jndiService" />
             </action>
-            <completers>
-                <ref component-id="namesCompleter" />
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.ContextsCommand">
                 <property name="jndiService" ref="jndiService" />
             </action>
-            <completers>
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.NamesCommand">
                 <property name="jndiService" ref="jndiService" />
             </action>
-            <completers>
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.CreateCommand">
                 <property name="jndiService" ref="jndiService"/>
             </action>
-            <completers>
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.DeleteCommand">
                 <property name="jndiService" ref="jndiService"/>
             </action>
-            <completers>
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.BindCommand">
                 <property name="jndiService" ref="jndiService"/>
             </action>
-            <completers>
-                <ref component-id="servicesIdCompleter" />
-                <ref component-id="contextsCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jndi.command.UnbindCommand">
                 <property name="jndiService" ref="jndiService" />
             </action>
-            <completers>
-                <ref component-id="namesCompleter" />
-            </completers>
         </command>
     </command-bundle>
 
     <bean id="namesCompleter" class="org.apache.karaf.jndi.command.completers.NamesCompleter">
         <property name="jndiService" ref="jndiService" />
     </bean>
+    <service ref="namesCompleter" auto-export="all-classes"/>
+
     <bean id="contextsCompleter" class="org.apache.karaf.jndi.command.completers.ContextsCompleter">
         <property name="jndiService" ref="jndiService" />
     </bean>
+    <service ref="contextsCompleter" auto-export="all-classes"/>
+
     <bean id="servicesIdCompleter" class="org.apache.karaf.jndi.command.completers.ServicesIdCompleter">
         <property name="bundleContext" ref="blueprintBundleContext" />
     </bean>
+    <service ref="servicesIdCompleter" auto-export="all-classes"/>
 
 </blueprint>
\ No newline at end of file


[03/15] git commit: [KARAF-2756] Use @Completer for config commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for config commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/61fc1b68
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/61fc1b68
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/61fc1b68

Branch: refs/heads/master
Commit: 61fc1b685318a7403403fd9d2d8d3581c141fd2c
Parents: ec6c1ba
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Feb 12 22:35:24 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../command/ConfigPropertyCommandSupport.java   |  3 ++
 .../karaf/config/command/DeleteCommand.java     |  3 ++
 .../karaf/config/command/EditCommand.java       |  3 ++
 .../karaf/config/command/PropAppendCommand.java |  3 ++
 .../karaf/config/command/PropSetCommand.java    |  3 ++
 .../OSGI-INF/blueprint/shell-config.xml         | 38 ++------------------
 6 files changed, 17 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
index c4086bd..3e6af04 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java
@@ -19,6 +19,8 @@ package org.apache.karaf.config.command;
 import java.util.Dictionary;
 import java.util.Properties;
 
+import org.apache.karaf.config.command.completers.ConfigurationCompleter;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 
 /**
@@ -27,6 +29,7 @@ import org.apache.karaf.shell.commands.Option;
 public abstract class ConfigPropertyCommandSupport extends ConfigCommandSupport {
 
     @Option(name = "-p", aliases = "--pid", description = "The configuration pid", required = false, multiValued = false)
+    @Completer(ConfigurationCompleter.class)
     protected String pid;
 
     @SuppressWarnings("rawtypes")

http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
index ff9a469..7e8b3d2 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java
@@ -16,14 +16,17 @@
  */
 package org.apache.karaf.config.command;
 
+import org.apache.karaf.config.command.completers.ConfigurationCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 
 @Command(scope = "config", name = "delete", description = "Delete a configuration.")
 public class DeleteCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, name = "pid", description = "PID of the configuration", required = true, multiValued = false)
+    @Completer(ConfigurationCompleter.class)
     String pid;
 
     @Option(name = "--force", aliases = {}, description = "Force the edition of this config, even if another one was under edition", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
index 60ba76e..3f494c7 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java
@@ -18,8 +18,10 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 
+import org.apache.karaf.config.command.completers.ConfigurationCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.osgi.service.cm.Configuration;
 
@@ -27,6 +29,7 @@ import org.osgi.service.cm.Configuration;
 public class EditCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, name = "pid", description = "PID of the configuration or of the factory if --factory is given. Pid can also be specified as ldap query", required = true, multiValued = false)
+    @Completer(ConfigurationCompleter.class)
     String pid;
 
     @Option(name = "--force", aliases = {}, description = "Force the edition of this config, even if another one was under edition", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
index 8ff76c7..9c04638 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java
@@ -18,13 +18,16 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 
+import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "config", name = "property-append", description = "Appends the given value to an existing property or creates the property with the specified name and value.")
 public class PropAppendCommand extends ConfigPropertyCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the property", required = true, multiValued = false)
+    @Completer(ConfigurationPropertyCompleter.class)
     String prop;
 
     @Argument(index = 1, name = "value", description = "The value to append to the property", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
----------------------------------------------------------------------
diff --git a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
index de2ac2e..30135d8 100644
--- a/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
+++ b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java
@@ -18,13 +18,16 @@ package org.apache.karaf.config.command;
 
 import java.util.Dictionary;
 
+import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "config", name = "property-set", description = "Sets a property in the currently edited configuration.")
 public class PropSetCommand extends ConfigPropertyCommandSupport {
 
     @Argument(index = 0, name = "property", description = "The name of the property to set", required = true, multiValued = false)
+    @Completer(ConfigurationPropertyCompleter.class)
     String prop;
 
     @Argument(index = 1, name = "value", description = "The value of the property", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/61fc1b68/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
----------------------------------------------------------------------
diff --git a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index c1a6da6..def3594 100644
--- a/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/config/command/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -32,71 +32,36 @@
             <action class="org.apache.karaf.config.command.DeleteCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <completers>
-                <ref component-id="configCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.EditCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <completers>
-                <ref component-id="configCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.ListCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <optional-completers>
-                <entry key="-p" value-ref="configCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.PropDelCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <completers>
-                <ref component-id="configPropertyCompleter" />
-                <null/>
-            </completers>
-            <optional-completers>
-                <entry key="-p" value-ref="configCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.PropListCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <optional-completers>
-                <entry key="-p" value-ref="configCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.PropSetCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <completers>
-                <ref component-id="configPropertyCompleter" />
-                <null/>
-            </completers>
-            <optional-completers>
-                <entry key="-p" value-ref="configCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.PropAppendCommand">
                 <property name="configRepository" ref="configRepo"/>
             </action>
-            <completers>
-                <ref component-id="configPropertyCompleter" />
-                <null/>
-            </completers>
-            <optional-completers>
-                <entry key="-p" value-ref="configCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.config.command.UpdateCommand">
@@ -108,11 +73,12 @@
     <bean id="configCompleter" class="org.apache.karaf.config.command.completers.ConfigurationCompleter" init-method="init">
         <property name="admin" ref="configAdmin"/>
     </bean>
-    <service ref="configCompleter" interface="org.osgi.service.cm.ConfigurationListener" />
+    <service ref="configCompleter" auto-export="all-classes" />
 
     <bean id="configPropertyCompleter" class="org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter">
         <property name="configAdmin" ref="configAdmin"/>
     </bean>
+    <service ref="configPropertyCompleter" auto-export="all-classes" />
 
     <reference id="configRepo" interface="org.apache.karaf.config.core.ConfigRepository" />
     <reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin" />


[15/15] git commit: [KARAF-2756] Use @Completer for jms commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for jms commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/680ad584
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/680ad584
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/680ad584

Branch: refs/heads/master
Commit: 680ad584da737d9a16e2118344b3a5551c19b588
Parents: 456effe
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 12:56:48 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:58 2014 +0100

----------------------------------------------------------------------
 .../karaf/jms/command/ConsumeCommand.java       |  1 -
 .../apache/karaf/jms/command/CreateCommand.java |  3 ++
 .../apache/karaf/jms/command/DeleteCommand.java |  3 ++
 .../command/JmsConnectionCommandSupport.java    |  3 ++
 .../apache/karaf/jms/command/MoveCommand.java   |  1 +
 .../OSGI-INF/blueprint/jms-command.xml          | 39 ++------------------
 6 files changed, 13 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
index d7c732d..84e1d19 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/ConsumeCommand.java
@@ -23,7 +23,6 @@ import org.apache.karaf.shell.commands.Option;
 @Command(scope = "jms", name = "consume", description = "Consume messages from a JMS queue.")
 public class ConsumeCommand extends JmsConnectionCommandSupport {
 
-
     @Argument(index = 1, name = "queue", description = "The JMS queue where to consume messages", required = true, multiValued = false)
     String queue;
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
index 9e029f5..dcea101 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/CreateCommand.java
@@ -18,7 +18,9 @@ package org.apache.karaf.jms.command;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
 
 @Command(scope = "jms", name = "create", description = "Create a JMS connection factory.")
 public class CreateCommand extends JmsCommandSupport {
@@ -27,6 +29,7 @@ public class CreateCommand extends JmsCommandSupport {
     String name;
 
     @Option(name = "-t", aliases = { "--type" }, description = "The JMS connection factory type (ActiveMQ or WebsphereMQ)", required = false, multiValued = false)
+    @Completer(value = StringsCompleter.class, values = { "activemq", "webspheremq" })
     String type = "ActiveMQ";
 
     @Option(name = "--url", description = "URL of the JMS broker. For WebsphereMQ type, the URL is hostname/port/queuemanager/channel", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
index b9d1656..882c318 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/DeleteCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jms.command;
 
+import org.apache.karaf.jms.command.completers.ConnectionFactoriesFileNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jms", name = "delete", description = "Delete a JMS connection factory")
 public class DeleteCommand extends JmsCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The JMS connection factory name", required = true, multiValued = false)
+    @Completer(ConnectionFactoriesFileNameCompleter.class)
     String name;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/java/org/apache/karaf/jms/command/JmsConnectionCommandSupport.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/JmsConnectionCommandSupport.java b/jms/command/src/main/java/org/apache/karaf/jms/command/JmsConnectionCommandSupport.java
index 00f0a95..cb89717 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/JmsConnectionCommandSupport.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/JmsConnectionCommandSupport.java
@@ -16,7 +16,9 @@
  */
 package org.apache.karaf.jms.command;
 
+import org.apache.karaf.jms.command.completers.ConnectionFactoriesNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 
 /**
@@ -25,6 +27,7 @@ import org.apache.karaf.shell.commands.Option;
 public abstract class JmsConnectionCommandSupport extends JmsCommandSupport {
 
     @Argument(index = 0, name = "connectionFactory", description = "The JMS connection factory name", required = true, multiValued = false)
+    @Completer(ConnectionFactoriesNameCompleter.class)
     String connectionFactory;
 
     @Option(name = "-u", aliases = { "--username" }, description = "Username to connect to the JMS broker", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
----------------------------------------------------------------------
diff --git a/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java b/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
index f1bc85b..4ab8b46 100644
--- a/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
+++ b/jms/command/src/main/java/org/apache/karaf/jms/command/MoveCommand.java
@@ -22,6 +22,7 @@ import org.apache.karaf.shell.commands.Option;
 
 @Command(scope = "jms", name = "move", description = "Move messages from one JMS queue to another one.")
 public class MoveCommand extends JmsConnectionCommandSupport {
+
     @Argument(index = 1, name = "source", description = "The source JMS queue", required = true, multiValued = false)
     String source;
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/680ad584/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
----------------------------------------------------------------------
diff --git a/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml b/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
index 008fa6e..be81647 100644
--- a/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
+++ b/jms/command/src/main/resources/OSGI-INF/blueprint/jms-command.xml
@@ -24,10 +24,6 @@
             <action class="org.apache.karaf.jms.command.BrowseCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.ConnectionFactoriesCommand">
@@ -38,19 +34,11 @@
             <action class="org.apache.karaf.jms.command.ConsumeCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.CountCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.CreateCommand">
@@ -61,63 +49,42 @@
             <action class="org.apache.karaf.jms.command.DeleteCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesFileNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.InfoCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.MoveCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.QueuesCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.SendCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jms.command.TopicsCommand">
                 <property name="jmsService" ref="jmsService"/>
             </action>
-            <completers>
-                <ref component-id="connectionFactoriesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
     </command-bundle>
 
     <bean id="connectionFactoriesNameCompleter" class="org.apache.karaf.jms.command.completers.ConnectionFactoriesNameCompleter">
         <property name="jmsService" ref="jmsService"/>
     </bean>
+    <service ref="connectionFactoriesNameCompleter" auto-export="all-classes"/>
+
     <bean id="connectionFactoriesFileNameCompleter" class="org.apache.karaf.jms.command.completers.ConnectionFactoriesFileNameCompleter">
         <property name="jmsService" ref="jmsService"/>
     </bean>
+    <service ref="connectionFactoriesFileNameCompleter" auto-export="all-classes"/>
 
 </blueprint>
\ No newline at end of file


[11/15] git commit: [KARAF-2756] Use @Completer for shell commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for shell commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/22bae924
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/22bae924
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/22bae924

Branch: refs/heads/master
Commit: 22bae92410976befe0a56b1f4f29ee55ff2e0eff
Parents: fe817d2
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 13:28:22 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:58 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/karaf/shell/commands/impl/WatchAction.java  | 3 +++
 .../src/main/resources/OSGI-INF/blueprint/shell-commands.xml    | 5 +----
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/22bae924/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
----------------------------------------------------------------------
diff --git a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
index 7edcb9b..2850c76 100644
--- a/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
+++ b/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/WatchAction.java
@@ -28,8 +28,10 @@ import org.apache.felix.service.command.CommandProcessor;
 import org.apache.felix.service.command.CommandSession;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
+import org.apache.karaf.shell.console.completer.CommandsCompleter;
 
 @Command(scope = "shell", name = "watch", description = "Watches & refreshes the output of a command")
 public class WatchAction extends AbstractAction {
@@ -41,6 +43,7 @@ public class WatchAction extends AbstractAction {
     private boolean append = false;
 
     @Argument(index = 0, name = "command", description = "The command to watch / refresh", required = true, multiValued = true)
+    @Completer(CommandsCompleter.class)
     private String[] arguments;
 
     CommandProcessor commandProcessor;

http://git-wip-us.apache.org/repos/asf/karaf/blob/22bae924/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
----------------------------------------------------------------------
diff --git a/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml b/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
index 45c547c..9258998 100644
--- a/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
+++ b/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
@@ -101,10 +101,6 @@
             <action class="org.apache.karaf.shell.commands.impl.WatchAction">
                 <property name="commandProcessor" ref="commandProcessor"/>
             </action>
-            <completers>
-                <ref component-id="commandCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.shell.commands.impl.WcAction"/>
@@ -117,6 +113,7 @@
     </command-bundle>
 
    <bean id="commandCompleter" class="org.apache.karaf.shell.console.completer.CommandsCompleter"/>
+   <service ref="commandCompleter" auto-export="all-classes"/>
 
    <bean class="org.osgi.util.tracker.BundleTracker" init-method="open"
         destroy-method="close">


[13/15] git commit: [KARAF-2756] Use @Completer for jdbc commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for jdbc commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/456effe6
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/456effe6
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/456effe6

Branch: refs/heads/master
Commit: 456effe6a9fa4479b54896eb427d62cb4ca28f54
Parents: 3cef88c
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 11:42:01 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:58 2014 +0100

----------------------------------------------------------------------
 .../karaf/jdbc/command/CreateCommand.java       |  3 +++
 .../karaf/jdbc/command/DeleteCommand.java       |  3 +++
 .../karaf/jdbc/command/ExecuteCommand.java      |  3 +++
 .../apache/karaf/jdbc/command/InfoCommand.java  |  3 +++
 .../apache/karaf/jdbc/command/QueryCommand.java |  3 +++
 .../karaf/jdbc/command/TablesCommand.java       |  3 +++
 .../OSGI-INF/blueprint/jdbc-command.xml         | 27 ++++----------------
 7 files changed, 23 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
index 35f3940..775f9ad 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/CreateCommand.java
@@ -18,7 +18,9 @@ package org.apache.karaf.jdbc.command;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
 
 @Command(scope = "jdbc", name = "create", description = "Create a JDBC datasource")
 public class CreateCommand extends JdbcCommandSupport {
@@ -27,6 +29,7 @@ public class CreateCommand extends JdbcCommandSupport {
     String name;
 
     @Option(name = "-t", aliases = { "--type" }, description = "The JDBC datasource type (generic, MySQL, Oracle, Postgres, H2, HSQL, Derby)", required = false, multiValued = false)
+    @Completer(value = StringsCompleter.class, values = { "db2", "derby", "generic", "h2", "hsql", "mysql", "oracle", "postgres" })
     String type;
 
     @Option(name = "-d", aliases = { "--driver" }, description = "The classname of the JDBC driver to use. NB: this option is used only the type generic", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
index b4c8c5a..20982bb 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/DeleteCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jdbc.command;
 
+import org.apache.karaf.jdbc.command.completers.DataSourcesFileNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jdbc", name = "delete", description = "Delete a JDBC datasource")
 public class DeleteCommand extends JdbcCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The JDBC datasource name (the one used at creation time)", required = true, multiValued = false)
+    @Completer(DataSourcesFileNameCompleter.class)
     String name;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
index dbbca62..42f0a76 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/ExecuteCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.jdbc.command;
 
+import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "jdbc", name = "execute", description = "Execute a SQL command on a given JDBC datasource")
 public class ExecuteCommand extends JdbcCommandSupport {
 
     @Argument(index = 0, name = "datasource", description = "The JDBC datasource", required = true, multiValued = false)
+    @Completer(DataSourcesNameCompleter.class)
     String datasource;
 
     @Argument(index = 1, name = "command", description = "The SQL command to execute", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
index 772fbdc..89bca19 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/InfoCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.jdbc.command;
 
+import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.table.ShellTable;
 
 import java.util.Map;
@@ -26,6 +28,7 @@ import java.util.Map;
 public class InfoCommand extends JdbcCommandSupport {
 
     @Argument(index = 0, name = "datasource", description = "The JDBC datasource name", required = true, multiValued = false)
+    @Completer(DataSourcesNameCompleter.class)
     String datasource;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
index 6644657..7fc641a 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/QueryCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.jdbc.command;
 
+import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.table.Row;
 import org.apache.karaf.shell.table.ShellTable;
 
@@ -28,6 +30,7 @@ import java.util.Map;
 public class QueryCommand extends JdbcCommandSupport {
 
     @Argument(index = 0, name = "datasource", description = "The JDBC datasource to use", required = true, multiValued = false)
+    @Completer(DataSourcesNameCompleter.class)
     String datasource;
 
     @Argument(index = 1, name = "query", description = "The SQL query to execute", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
index 976f2d4..6256cbc 100644
--- a/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
+++ b/jdbc/command/src/main/java/org/apache/karaf/jdbc/command/TablesCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.jdbc.command;
 
+import org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.table.Row;
 import org.apache.karaf.shell.table.ShellTable;
 
@@ -28,6 +30,7 @@ import java.util.Map;
 public class TablesCommand extends JdbcCommandSupport {
 
     @Argument(index = 0, name = "datasource", description = "The JDBC datasource to use", required = true, multiValued = false)
+    @Completer(DataSourcesNameCompleter.class)
     String datasource;
 
     public Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/456effe6/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
----------------------------------------------------------------------
diff --git a/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml b/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
index fe501f4..2433e00 100644
--- a/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
+++ b/jdbc/command/src/main/resources/OSGI-INF/blueprint/jdbc-command.xml
@@ -29,10 +29,6 @@
             <action class="org.apache.karaf.jdbc.command.DeleteCommand">
                 <property name="jdbcService" ref="jdbcService"/>
             </action>
-            <completers>
-                <ref component-id="datasourcesFileNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jdbc.command.DataSourcesCommand">
@@ -43,45 +39,32 @@
             <action class="org.apache.karaf.jdbc.command.QueryCommand">
                 <property name="jdbcService" ref="jdbcService"/>
             </action>
-            <completers>
-                <ref component-id="datasourcesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jdbc.command.ExecuteCommand">
                 <property name="jdbcService" ref="jdbcService"/>
             </action>
-            <completers>
-                <ref component-id="datasourcesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jdbc.command.InfoCommand">
                 <property name="jdbcService" ref="jdbcService"/>
             </action>
-            <completers>
-                <ref component-id="datasourcesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jdbc.command.TablesCommand">
                 <property name="jdbcService" ref="jdbcService"/>
             </action>
-            <completers>
-                <ref component-id="datasourcesNameCompleter"/>
-                <null/>
-            </completers>
         </command>
     </command-bundle>
 
-    <bean id="datasourcesNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter">
+    <bean id="dataSourcesNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesNameCompleter">
         <property name="jdbcService" ref="jdbcService" />
     </bean>
-    <bean id="datasourcesFileNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesFileNameCompleter">
+    <service ref="dataSourcesNameCompleter" auto-export="all-classes"/>
+
+    <bean id="dataSourcesFileNameCompleter" class="org.apache.karaf.jdbc.command.completers.DataSourcesFileNameCompleter">
         <property name="jdbcService" ref="jdbcService" />
     </bean>
+    <service ref="dataSourcesFileNameCompleter" auto-export="all-classes"/>
 
 </blueprint>
\ No newline at end of file


[14/15] git commit: [KARAF-2756] Use @Completer for service commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for service commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/fe817d27
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/fe817d27
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/fe817d27

Branch: refs/heads/master
Commit: fe817d2717bae1fd28b9c062974e1e787554dc96
Parents: 7d80946
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 13:21:08 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:58 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/karaf/service/command/ListServices.java     | 5 ++++-
 .../src/main/resources/OSGI-INF/blueprint/shell-services.xml    | 5 +----
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/fe817d27/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
----------------------------------------------------------------------
diff --git a/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java b/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
index 558d1af..9b8f389 100644
--- a/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
+++ b/service/command/src/main/java/org/apache/karaf/service/command/ListServices.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import org.apache.felix.service.command.Function;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.karaf.shell.util.ShellUtil;
@@ -36,8 +37,10 @@ import org.osgi.framework.ServiceReference;
 
 @Command(scope = "service", name = "list", description = "Lists OSGi services.")
 public class ListServices extends OsgiCommandSupport {
-    @Argument(index = 0, name = "objectClass", description = "Name of service objectClass to filter for", required = false, 
+
+    @Argument(index = 0, name = "objectClass", description = "Name of service objectClass to filter for", required = false,
         multiValued = false)
+    @Completer(ObjectClassCompleter.class)
     String objectClass;
     
     @Option(name = "-a", aliases = {}, description = "Shows all services. (By default Karaf commands are hidden)", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/fe817d27/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
----------------------------------------------------------------------
diff --git a/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml b/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
index d3b7f83..8bc4308 100644
--- a/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
+++ b/service/command/src/main/resources/OSGI-INF/blueprint/shell-services.xml
@@ -23,10 +23,6 @@
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
         <command>
             <action class="org.apache.karaf.service.command.ListServices"/>
-            <completers>
-                <ref component-id="objectClassCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.service.command.Wait"/>
@@ -36,4 +32,5 @@
     <bean id="objectClassCompleter" class="org.apache.karaf.service.command.ObjectClassCompleter">
         <property name="context" ref="blueprintBundleContext"/>
     </bean>
+    <service ref="objectClassCompleter" auto-export="all-classes"/>
 </blueprint>
\ No newline at end of file


[05/15] git commit: [KARAF-2756] Use @Completer for instance commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for instance commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2a12fbb6
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2a12fbb6
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2a12fbb6

Branch: refs/heads/master
Commit: 2a12fbb6ac05f05185cbd64716df37617e0906df
Parents: a7c642c
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Feb 12 22:55:33 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../instance/command/ChangeOptsCommand.java     |  3 +
 .../command/ChangeRmiRegistryPortCommand.java   |  3 +
 .../command/ChangeRmiServerPortCommand.java     |  3 +
 .../instance/command/ChangeSshPortCommand.java  |  3 +
 .../karaf/instance/command/CloneCommand.java    |  3 +
 .../karaf/instance/command/ConnectCommand.java  |  3 +
 .../karaf/instance/command/CreateCommand.java   |  5 ++
 .../karaf/instance/command/DestroyCommand.java  |  3 +
 .../karaf/instance/command/RenameCommand.java   |  3 +
 .../karaf/instance/command/StartCommand.java    |  3 +
 .../karaf/instance/command/StatusCommand.java   |  3 +
 .../karaf/instance/command/StopCommand.java     |  3 +
 .../OSGI-INF/blueprint/instance-command.xml     | 62 ++------------------
 13 files changed, 43 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
index 7b443fd..3db7cec 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeOptsCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "instance", name = "opts-change", description = "Changes the Java options of an existing container instance.")
 public class ChangeOptsCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description="The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     @Argument(index = 1, name = "javaOpts", description = "The new Java options to set", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
index a35c153..d889fa2 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiRegistryPortCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "instance", name = "rmi-registry-port-change", description = "Changes the RMI registry port (used by management layer) of an existing container instance.")
 public class ChangeRmiRegistryPortCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     @Argument(index = 1, name = "port", description = "The new RMI registry port to set", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
index 60f75b2..1bef267 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeRmiServerPortCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "instance", name = "rmi-server-port-change", description = "Changes the RMI server port (used by management layer) of an existing instance.")
 public class ChangeRmiServerPortCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     @Argument(index = 1, name = "port", description = "The new RMI server port to set", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
index 91c8281..9977971 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ChangeSshPortCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "instance", name = "ssh-port-change", description = "Changes the secure shell port of an existing container instance.")
 public class ChangeSshPortCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description="The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     @Argument(index = 1, name = "port", description = "The new secure shell port to set", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
index fcde463..5e6b2b4 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/CloneCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.instance.core.InstanceSettings;
 
@@ -46,6 +48,7 @@ public class CloneCommand extends InstanceCommandSupport {
     boolean verbose = false;
 
     @Argument(index = 0, name = "name", description = "The name of the source container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     String name;
 
     @Argument(index = 1, name = "cloneName", description = "The name of the cloned container instance", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
index a2a542a..6c909e9 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/ConnectCommand.java
@@ -20,6 +20,8 @@ package org.apache.karaf.instance.command;
 
 import java.util.List;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
@@ -34,6 +36,7 @@ public class ConnectCommand extends InstanceCommandSupport {
     private String password;
 
     @Argument(index = 0, name="name", description="The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     @Argument(index = 1, name = "command", description = "Optional command to execute", required = false, multiValued = true)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
index 219690d..a3c8595 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
@@ -18,8 +18,11 @@ package org.apache.karaf.instance.command;
 
 import java.util.List;
 
+import org.apache.karaf.features.command.completers.AllFeatureCompleter;
+import org.apache.karaf.features.command.completers.InstalledRepoUriCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.instance.core.InstanceSettings;
 
@@ -46,10 +49,12 @@ public class CreateCommand extends InstanceCommandSupport
     
     @Option(name = "-f", aliases = {"--feature"},
             description = "Initial features. This option can be specified multiple times to enable multiple initial features", required = false, multiValued = true)
+    @Completer(AllFeatureCompleter.class)
     List<String> features;
     
     @Option(name = "-furl", aliases = {"--featureURL"}, 
             description = "Additional feature descriptor URLs. This option can be specified multiple times to add multiple URLs", required = false, multiValued = true)
+    @Completer(InstalledRepoUriCompleter.class)
     List<String> featureURLs;
 
     @Option(name = "-v", aliases = {"--verbose"}, description = "Display actions performed by the command (disabled by default)", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
index b2162da..3e41be0 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/DestroyCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 /**
  * Destroy an existing instance.
@@ -26,6 +28,7 @@ import org.apache.karaf.shell.commands.Command;
 public class DestroyCommand extends InstanceCommandSupport
 {
     @Argument(index = 0, name = "name", description= "The name of the container instance to destroy", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     protected Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
index bb0067b..5b57774 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/RenameCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 
 @Command(scope = "instance", name = "rename", description = "Rename an existing container instance.")
@@ -27,6 +29,7 @@ public class RenameCommand extends InstanceCommandSupport {
     boolean verbose = false;
 
     @Argument(index = 0, name = "name", description = "The name of the container instance to rename", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     String instance = null;
 
     @Argument(index = 1, name = "new-name", description = "The new name of the container instance", required = true, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
index 82807be..1f3c13b 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StartCommand.java
@@ -16,8 +16,10 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.instance.core.Instance;
 
@@ -34,6 +36,7 @@ public class StartCommand extends InstanceCommandSupport {
     private boolean wait;
 
     @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     static final String DEBUG_OPTS = " -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005";

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
index d66580e..fce8d5f 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StatusCommand.java
@@ -16,15 +16,18 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.instance.core.Instance;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 
 @Command(scope = "instance", name = "status", description = "Check the current status of an instance.")
 public class StatusCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String name;
 
     protected Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
----------------------------------------------------------------------
diff --git a/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java b/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
index b2c35fd..ad4cce5 100644
--- a/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
+++ b/instance/command/src/main/java/org/apache/karaf/instance/command/StopCommand.java
@@ -16,13 +16,16 @@
  */
 package org.apache.karaf.instance.command;
 
+import org.apache.karaf.instance.command.completers.InstanceCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 
 @Command(scope = "instance", name = "stop", description = "Stop an existing container instance.")
 public class StopCommand extends InstanceCommandSupport {
 
     @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = false)
+    @Completer(InstanceCompleter.class)
     private String instance = null;
 
     protected Object doExecute() throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/2a12fbb6/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
----------------------------------------------------------------------
diff --git a/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml b/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
index d23b5b2..1db1a0e 100644
--- a/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
+++ b/instance/command/src/main/resources/OSGI-INF/blueprint/instance-command.xml
@@ -25,19 +25,11 @@
             <action class="org.apache.karaf.instance.command.CreateCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <optional-completers>
-                   <entry key="-f" value-ref="allFeatureCompleter"/>
-                   <entry key="-furl" value-ref="featureUrlCompleter"/>
-            </optional-completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ConnectCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ListCommand">
@@ -48,107 +40,63 @@
             <action class="org.apache.karaf.instance.command.StartCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.StopCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.DestroyCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.RenameCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.CloneCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ChangeSshPortCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ChangeRmiRegistryPortCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ChangeRmiServerPortCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.ChangeOptsCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.instance.command.StatusCommand">
                 <property name="instanceService" ref="instanceService" />
             </action>
-            <completers>
-                <ref component-id="instanceCompleter" />
-                <null/>
-            </completers>
         </command>
     </command-bundle>
 
+    <!-- Services -->
+
     <reference id="instanceService" interface="org.apache.karaf.instance.core.InstanceService" />
-    <reference id="featuresService" interface="org.apache.karaf.features.FeaturesService" />
+
+    <!-- Completers -->
 
     <bean id="instanceCompleter" class="org.apache.karaf.instance.command.completers.InstanceCompleter">
         <property name="instanceService" ref="instanceService" />
     </bean>
-
-    <bean id="allFeatureCompleter" class="org.apache.karaf.features.command.completers.AllFeatureCompleter">
-        <property name="featuresService" ref="featuresService" />
-    </bean>
-
-    <bean id="featureUrlCompleter" class="org.apache.karaf.features.command.completers.InstalledRepoUriCompleter">
-        <property name="featuresService" ref="featuresService" />
-    </bean>
+    <service ref="instanceCompleter" auto-export="all-classes"/>
 
 </blueprint>


[04/15] git commit: [KARAF-2756] Define an annotation for completers and retrieve them from the OSGi Service Registry

Posted by gn...@apache.org.
[KARAF-2756] Define an annotation for completers and retrieve them from the OSGi Service Registry


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/ec6c1ba3
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/ec6c1ba3
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/ec6c1ba3

Branch: refs/heads/master
Commit: ec6c1ba355556ddab7d0df9b7844aea0b6057f4b
Parents: d79376e
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Feb 12 22:23:48 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../apache/karaf/shell/commands/Completer.java  | 30 +++++++
 .../console/completer/ArgumentCompleter.java    | 93 ++++++++++++++++++--
 2 files changed, 118 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/ec6c1ba3/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java b/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
new file mode 100644
index 0000000..6724dc6
--- /dev/null
+++ b/shell/console/src/main/java/org/apache/karaf/shell/commands/Completer.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.karaf.shell.commands;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface Completer {
+
+    Class<? extends org.apache.karaf.shell.console.Completer> value();
+
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/ec6c1ba3/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
index 967edb4..1424bd6 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
@@ -43,6 +43,9 @@ import org.apache.karaf.shell.console.CommandSessionHolder;
 import org.apache.karaf.shell.console.CompletableFunction;
 import org.apache.karaf.shell.console.Completer;
 import org.apache.karaf.shell.console.NameScoping;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,6 +67,7 @@ public class ArgumentCompleter implements Completer {
     final Map<Option, Field> fields = new HashMap<Option, Field>();
     final Map<String, Option> options = new HashMap<String, Option>();
     final Map<Integer, Field> arguments = new HashMap<Integer, Field>();
+    final Map<Field, org.apache.karaf.shell.commands.Completer> completerAnnotations = new HashMap<Field, org.apache.karaf.shell.commands.Completer>();
     boolean strict = true;
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
@@ -94,6 +98,12 @@ public class ArgumentCompleter implements Completer {
                         arguments.put(key, field);
                     }
                 }
+                if (option != null || argument != null) {
+                    org.apache.karaf.shell.commands.Completer completer = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
+                    if (completer != null) {
+                        completerAnnotations.put(field, completer);
+                    }
+                }
             }
         }
         options.put(HelpOption.HELP.name(), HelpOption.HELP);
@@ -102,14 +112,61 @@ public class ArgumentCompleter implements Completer {
         argsCompleters = new ArrayList<Completer>();
 
         if (function instanceof CompletableFunction) {
-            optionalCompleters = ((CompletableFunction) function).getOptionalCompleters();
+            Map<String, Completer> focl = ((CompletableFunction) function).getOptionalCompleters();
             List<Completer> fcl = ((CompletableFunction) function).getCompleters();
-            if (fcl != null) {
-                for (Completer c : fcl) {
-                    argsCompleters.add(c == null ? NullCompleter.INSTANCE : c);
+            if (focl == null && fcl == null) {
+                for (int key = 0; key < arguments.size(); key++) {
+                    Completer completer = null;
+                    Field field = arguments.get(key);
+                    if (field != null) {
+                        org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+                        if (ann != null) {
+                            Class clazz = ann.value();
+                            if (clazz != null) {
+                                BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
+                                completer = new ProxyServiceCompleter(context, clazz);
+                            }
+                        }
+                    }
+                    if (completer == null) {
+                        completer = NullCompleter.INSTANCE;
+                    }
+                    argsCompleters.add(completer);
+                }
+                if (argsCompleters.isEmpty()) {
+                    argsCompleters.add(NullCompleter.INSTANCE);
+                }
+                optionalCompleters = new HashMap<String, Completer>();
+                for (Option option : fields.keySet()) {
+                    Completer completer = null;
+                    Field field = fields.get(option);
+                    if (field != null) {
+                        org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+                        if (ann != null) {
+                            Class clazz = ann.value();
+                            if (clazz != null) {
+                                BundleContext context = FrameworkUtil.getBundle(function.getClass()).getBundleContext();
+                                completer = new ProxyServiceCompleter(context, clazz);
+                            }
+                        }
+                    }
+                    if (completer == null) {
+                        completer = NullCompleter.INSTANCE;
+                    }
+                    optionalCompleters.put(option.name(), completer);
+                    if (option.aliases() != null) {
+                        for (String alias : option.aliases()) {
+                            optionalCompleters.put(alias, completer);
+                        }
+                    }
                 }
             } else {
-                argsCompleters.add(NullCompleter.INSTANCE);
+                if (fcl != null) {
+                    for (Completer c : fcl) {
+                        argsCompleters.add(c == null ? NullCompleter.INSTANCE : c);
+                    }
+                }
+                optionalCompleters = focl;
             }
         } else {
             optionalCompleters = new HashMap<String, Completer>();
@@ -454,4 +511,30 @@ public class ArgumentCompleter implements Completer {
             return this.bufferPosition;
         }
     }
+
+    public static class ProxyServiceCompleter implements Completer {
+        private final BundleContext context;
+        private final Class<? extends Completer> clazz;
+
+        public ProxyServiceCompleter(BundleContext context, Class<? extends Completer> clazz) {
+            this.context = context;
+            this.clazz = clazz;
+        }
+
+        @Override
+        public int complete(String buffer, int cursor, List<String> candidates) {
+            ServiceReference<? extends Completer> ref = context.getServiceReference(clazz);
+            if (ref != null) {
+                Completer completer = context.getService(ref);
+                if (completer != null) {
+                    try {
+                        return completer.complete(buffer, cursor, candidates);
+                    } finally {
+                        context.ungetService(ref);
+                    }
+                }
+            }
+            return -1;
+        }
+    }
 }


[06/15] git commit: [KARAF-2756] Use @Completer for feature commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for feature commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a7c642c0
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a7c642c0
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a7c642c0

Branch: refs/heads/master
Commit: a7c642c01fcf950a5ff9b084dd75923410282251
Parents: 61fc1b6
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Wed Feb 12 22:46:43 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../features/command/InfoFeatureCommand.java    |  3 ++
 .../features/command/InstallFeatureCommand.java |  3 ++
 .../command/ListFeatureVersionsCommand.java     |  3 ++
 .../karaf/features/command/RepoAddCommand.java  |  3 ++
 .../features/command/RepoRefreshCommand.java    |  3 ++
 .../features/command/RepoRemoveCommand.java     |  3 ++
 .../command/UninstallFeatureCommand.java        |  3 ++
 .../OSGI-INF/blueprint/features-command.xml     | 47 +++++++-------------
 8 files changed, 37 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
index 3286a2a..2b27dfe 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/InfoFeatureCommand.java
@@ -22,8 +22,10 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.karaf.features.Conditional;
+import org.apache.karaf.features.command.completers.AllFeatureCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.features.BundleInfo;
 import org.apache.karaf.features.ConfigFileInfo;
@@ -39,6 +41,7 @@ public class InfoFeatureCommand extends FeaturesCommandSupport {
     private static final String CONDITIONAL_CONTENT = "Conditional(%s)";
 
 	@Argument(index = 0, name = "name", description = "The name of the feature", required = true, multiValued = false)
+    @Completer(AllFeatureCompleter.class)
     private String name;
 
     @Argument(index = 1, name = "version", description = "The version of the feature", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
index 371ce2f..01d805f 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/InstallFeatureCommand.java
@@ -19,6 +19,8 @@ package org.apache.karaf.features.command;
 import java.util.EnumSet;
 import java.util.List;
 
+import org.apache.karaf.features.command.completers.AvailableFeatureCompleter;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.shell.commands.Argument;
@@ -30,6 +32,7 @@ public class InstallFeatureCommand extends FeaturesCommandSupport {
     private static String DEFAULT_VERSION = "0.0.0";
 
     @Argument(index = 0, name = "feature", description = "The name and version of the features to install. A feature id looks like name/version. The version is optional.", required = true, multiValued = true)
+    @Completer(AvailableFeatureCompleter.class)
     List<String> features;
     @Option(name = "-c", aliases = "--no-clean", description = "Do not uninstall bundles on failure", required = false, multiValued = false)
     boolean noClean;

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
index 9d09297..2ab942f 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/ListFeatureVersionsCommand.java
@@ -21,8 +21,10 @@ import java.util.Arrays;
 import org.apache.karaf.features.Feature;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
+import org.apache.karaf.features.command.completers.AllFeatureCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.table.ShellTable;
 
@@ -30,6 +32,7 @@ import org.apache.karaf.shell.table.ShellTable;
 public class ListFeatureVersionsCommand extends FeaturesCommandSupport {
 
 	@Argument(index = 0, name = "feature", description = "Name of feature.", required = true, multiValued = false)
+    @Completer(AllFeatureCompleter.class)
 	String feature;
 
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
index ede1376..f2fb614 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/RepoAddCommand.java
@@ -19,8 +19,10 @@ package org.apache.karaf.features.command;
 import java.net.URI;
 
 import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.features.command.completers.AvailableRepoNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
 
@@ -28,6 +30,7 @@ import org.apache.karaf.shell.console.AbstractAction;
 public class RepoAddCommand extends AbstractAction {
 
     @Argument(index = 0, name = "name/url", description = "Shortcut name of the features repository or the full URL", required = true, multiValued = false)
+    @Completer(AvailableRepoNameCompleter.class)
     private String nameOrUrl;
     
     @Argument(index = 1, name = "version", description = "The version of the features repository if using features repository name as first argument. It should be empty if using the URL", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/RepoRefreshCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RepoRefreshCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RepoRefreshCommand.java
index 0dfac1d..6e1bbb5 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/RepoRefreshCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/RepoRefreshCommand.java
@@ -20,13 +20,16 @@ import java.net.URI;
 
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
+import org.apache.karaf.features.command.completers.InstalledRepoUriCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.console.AbstractAction;
 
 @Command(scope = "feature", name = "repo-refresh", description = "Refresh a features repository")
 public class RepoRefreshCommand extends AbstractAction {
     @Argument(index = 0, name = "Feature name or uri", description = "Shortcut name of the feature repository or the full URI", required = false, multiValued = false)
+    @Completer(InstalledRepoUriCompleter.class)
     private String nameOrUrl;
     
     @Argument(index = 1, name = "Feature version", description = "The version of the feature if using the feature name. Should be empty if using the uri", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java
index 6801d16..a82f0f9 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/RepoRemoveCommand.java
@@ -18,8 +18,10 @@ package org.apache.karaf.features.command;
 
 import java.net.URI;
 
+import org.apache.karaf.features.command.completers.InstalledRepoNameCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.features.FeaturesService;
 import org.apache.karaf.features.Repository;
@@ -28,6 +30,7 @@ import org.apache.karaf.features.Repository;
 public class RepoRemoveCommand extends FeaturesCommandSupport {
 
     @Argument(index = 0, name = "repository", description = "Name or url of the repository to remove.", required = true, multiValued = false)
+    @Completer(InstalledRepoNameCompleter.class)
     private String repository;
 
     @Option(name = "-u", aliases = { "--uninstall-all" }, description = "Uninstall all features from the repository", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/java/org/apache/karaf/features/command/UninstallFeatureCommand.java
----------------------------------------------------------------------
diff --git a/features/command/src/main/java/org/apache/karaf/features/command/UninstallFeatureCommand.java b/features/command/src/main/java/org/apache/karaf/features/command/UninstallFeatureCommand.java
index cc25943..5c7795a 100644
--- a/features/command/src/main/java/org/apache/karaf/features/command/UninstallFeatureCommand.java
+++ b/features/command/src/main/java/org/apache/karaf/features/command/UninstallFeatureCommand.java
@@ -16,9 +16,11 @@
  */
 package org.apache.karaf.features.command;
 
+import org.apache.karaf.features.command.completers.InstalledFeatureCompleter;
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.features.FeaturesService;
+import org.apache.karaf.shell.commands.Completer;
 
 import java.util.List;
 
@@ -26,6 +28,7 @@ import java.util.List;
 public class UninstallFeatureCommand extends FeaturesCommandSupport {
 
     @Argument(index = 0, name = "features", description = "The name and version of the features to uninstall. A feature id looks like name/version. The version is optional.", required = true, multiValued = true)
+    @Completer(InstalledFeatureCompleter.class)
     List<String> features;
 
     protected void doExecute(FeaturesService admin) throws Exception {

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7c642c0/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
----------------------------------------------------------------------
diff --git a/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml b/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
index 799a5b6..9b4afb3 100644
--- a/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
+++ b/features/command/src/main/resources/OSGI-INF/blueprint/features-command.xml
@@ -19,72 +19,47 @@
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" default-activation="lazy">
 
+    <!-- Commands -->
+
     <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
         <command>
             <action class="org.apache.karaf.features.command.RepoListCommand"/>
         </command>
         <command>
              <action class="org.apache.karaf.features.command.RepoRemoveCommand"/>
-             <completers>
-                 <ref component-id="installedRepoNameCompleter" />
-             </completers>
          </command>
         <command>
             <action class="org.apache.karaf.features.command.RepoAddCommand">
                 <property name="featureFinder" ref="featureFinder" />
                 <property name="featuresService" ref="featuresService" />
             </action>
-            <completers>
-                <ref component-id="availableRepoNameCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.RepoRefreshCommand">
                 <property name="featureFinder" ref="featureFinder" />
                 <property name="featuresService" ref="featuresService" />
             </action>
-            <completers>
-                <ref component-id="installedRepoUriCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.InstallFeatureCommand"/>
-            <completers>
-                <ref component-id="uninstalledFeatureCompleter" />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.UninstallFeatureCommand"/>
-            <completers>
-                <ref component-id="installedFeatureCompleter" />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.ListFeaturesCommand"/>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.ListFeatureVersionsCommand"/>
-            <completers>
-                <ref component-id="allFeatureCompleter" />
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.features.command.InfoFeatureCommand"/>
-            <completers>
-                <ref component-id="allFeatureCompleter" />
-            </completers>
         </command>
     </command-bundle>
 
-    <bean id="availableRepoNameCompleter" class="org.apache.karaf.features.command.completers.AvailableRepoNameCompleter">
-        <property name="featureFinder" ref="featureFinder" />
-    </bean>
-
-    <bean id="featureFinder" class="org.apache.karaf.features.command.FeatureFinder">
-    </bean> 
+    <!-- Services -->
 
+    <bean id="featureFinder" class="org.apache.karaf.features.command.FeatureFinder"/>
     <service ref="featureFinder" interface="org.osgi.service.cm.ManagedService" >
         <service-properties>
             <entry key="service.pid" value="org.apache.karaf.features.repos" />
@@ -93,27 +68,37 @@
 
     <reference id="featuresService" interface="org.apache.karaf.features.FeaturesService" />
 
+    <!-- Completers -->
+
+    <bean id="availableRepoNameCompleter" class="org.apache.karaf.features.command.completers.AvailableRepoNameCompleter">
+        <property name="featureFinder" ref="featureFinder" />
+    </bean>
+    <service ref="availableRepoNameCompleter" auto-export="all-classes"/>
+
     <bean id="uninstalledFeatureCompleter" class="org.apache.karaf.features.command.completers.AvailableFeatureCompleter">
         <property name="featuresService" ref="featuresService" />
     </bean>
+    <service ref="uninstalledFeatureCompleter" auto-export="all-classes"/>
 
     <bean id="installedFeatureCompleter" class="org.apache.karaf.features.command.completers.InstalledFeatureCompleter">
         <property name="featuresService" ref="featuresService" />
     </bean>
+    <service ref="installedFeatureCompleter" auto-export="all-classes"/>
 
     <bean id="allFeatureCompleter" class="org.apache.karaf.features.command.completers.AllFeatureCompleter">
         <property name="featuresService" ref="featuresService" />
     </bean>
+    <service ref="allFeatureCompleter" auto-export="all-classes"/>
 
     <bean id="installedRepoUriCompleter" class="org.apache.karaf.features.command.completers.InstalledRepoUriCompleter">
         <property name="featuresService" ref="featuresService" />
     </bean>
+    <service ref="installedRepoUriCompleter" auto-export="all-classes"/>
     
     <bean id="installedRepoNameCompleter" class="org.apache.karaf.features.command.completers.InstalledRepoNameCompleter">
         <property name="featuresService" ref="featuresService"/>
     </bean>
-    
-    <service ref="installedRepoNameCompleter" interface="org.apache.karaf.shell.console.Completer">
+    <service ref="installedRepoNameCompleter" auto-export="all-classes">
         <service-properties>
             <entry key="name" value="installedRepoNameCompleter"/>
         </service-properties>


[09/15] git commit: [KARAF-2756] Use @Completer for jaas commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for jaas commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/bdb8f07c
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/bdb8f07c
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/bdb8f07c

Branch: refs/heads/master
Commit: bdb8f07c17687102ffb48a84f50401c23cbf9e61
Parents: edfae48
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Feb 13 14:42:07 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../org/apache/karaf/jaas/command/ManageRealmCommand.java   | 5 +++++
 .../src/main/resources/OSGI-INF/blueprint/jaas-command.xml  | 9 +++------
 2 files changed, 8 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/bdb8f07c/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
index 89b5195..24d0646 100644
--- a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
+++ b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
@@ -16,7 +16,10 @@
 package org.apache.karaf.jaas.command;
 
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
+import org.apache.karaf.jaas.command.completers.LoginModuleNameCompleter;
+import org.apache.karaf.jaas.command.completers.RealmCompleter;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
@@ -30,12 +33,14 @@ import java.util.Queue;
 public class ManageRealmCommand extends JaasCommandSupport {
 
     @Option(name = "--realm", description = "JAAS Realm", required = false, multiValued = false)
+    @Completer(RealmCompleter.class)
     String realmName;
 
     @Option(name = "--index", description = "Realm Index", required = false, multiValued = false)
     int index;
 
     @Option(name = "--module", description = "JAAS Login Module Class Name", required = false, multiValued = false)
+    @Completer(LoginModuleNameCompleter.class)
     String moduleName;
 
     @Option(name = "-f", aliases = { "--force" }, description = "Force the management of this realm, even if another one was under management", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/bdb8f07c/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
----------------------------------------------------------------------
diff --git a/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml b/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
index 9767676..cf5ea15 100644
--- a/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
+++ b/jaas/command/src/main/resources/OSGI-INF/blueprint/jaas-command.xml
@@ -24,11 +24,6 @@
             <action class="org.apache.karaf.jaas.command.ManageRealmCommand">
                 <property name="realms" ref="realms"/>
             </action>
-            <completers>
-                <ref component-id="realmCompleter" />
-                <ref component-id="moduleClassNameCompleter" />
-                <null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.jaas.command.UpdateCommand">
@@ -93,9 +88,11 @@
     <bean id="realmCompleter" class="org.apache.karaf.jaas.command.completers.RealmCompleter">
         <property name="realms" ref="realms"/>
     </bean>
+    <service ref="realmCompleter" auto-export="all-classes"/>
 
-    <bean id="moduleClassNameCompleter" class="org.apache.karaf.jaas.command.completers.LoginModuleNameCompleter">
+    <bean id="loginModuleNameCompleter" class="org.apache.karaf.jaas.command.completers.LoginModuleNameCompleter">
         <property name="realms" ref="realms"/>
     </bean>
+    <service ref="loginModuleNameCompleter" auto-export="all-classes"/>
 
 </blueprint>


[08/15] git commit: [KARAF-2756] Use @Completer for log commands

Posted by gn...@apache.org.
[KARAF-2756] Use @Completer for log commands


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/83042cf7
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/83042cf7
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/83042cf7

Branch: refs/heads/master
Commit: 83042cf71b799b1d4401d42eb5ba0f5d7a4f3635
Parents: 334121e
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Thu Feb 13 15:09:15 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100

----------------------------------------------------------------------
 .../org/apache/karaf/log/command/LogEntry.java  |  3 +
 .../apache/karaf/log/command/SetLogLevel.java   |  3 +
 .../command/completers/LogLevelCompleter.java   | 43 -------------
 .../resources/OSGI-INF/blueprint/shell-log.xml  | 21 -------
 .../completers/LogLevelCompleterTest.java       | 65 --------------------
 5 files changed, 6 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/83042cf7/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java b/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
index 05062e8..4bb53d0 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/LogEntry.java
@@ -18,8 +18,10 @@ package org.apache.karaf.log.command;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.AbstractAction;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
 import org.osgi.service.log.LogService;
 
 import java.util.HashMap;
@@ -32,6 +34,7 @@ public class LogEntry extends AbstractAction {
     private String message;
 
     @Option(name = "--level", aliases = {"-l"}, description = "The level the message will be logged at", required = false, multiValued = false)
+    @Completer(value = StringsCompleter.class, values = { "DEBUG", "INFO", "WARNING", "ERROR" })
     private String level = "INFO";
 
     private LogService logService;

http://git-wip-us.apache.org/repos/asf/karaf/blob/83042cf7/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java b/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
index 03e5576..ae41b7d 100644
--- a/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
+++ b/log/command/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
@@ -18,6 +18,8 @@ package org.apache.karaf.log.command;
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Completer;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
 
 /**
  * Set the log level for a given logger
@@ -26,6 +28,7 @@ import org.apache.karaf.shell.commands.Command;
 public class SetLogLevel extends LogCommandSupport {
     
     @Argument(index = 0, name = "level", description = "The log level to set (TRACE, DEBUG, INFO, WARN, ERROR) or DEFAULT to unset", required = true, multiValued = false)
+    @Completer(value = StringsCompleter.class, values = { "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "DEFAULT" })
     String level;
 
     @Argument(index = 1, name = "logger", description = "Logger name or ROOT (default)", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/83042cf7/log/command/src/main/java/org/apache/karaf/log/command/completers/LogLevelCompleter.java
----------------------------------------------------------------------
diff --git a/log/command/src/main/java/org/apache/karaf/log/command/completers/LogLevelCompleter.java b/log/command/src/main/java/org/apache/karaf/log/command/completers/LogLevelCompleter.java
deleted file mode 100644
index 7cd396e..0000000
--- a/log/command/src/main/java/org/apache/karaf/log/command/completers/LogLevelCompleter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.log.command.completers;
-
-import java.util.List;
-
-import org.apache.karaf.log.core.Level;
-import org.apache.karaf.shell.console.Completer;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
-
-/**
- * {@link Completer} implementation for completing log levels  
- */
-public class LogLevelCompleter extends StringsCompleter {
-    
-    public LogLevelCompleter() {
-        super(Level.strings());
-    }
-    
-    @Override
-    public int complete(String buffer, int cursor, @SuppressWarnings("rawtypes") List candidates) {
-        if (buffer == null) {
-            return super.complete(null, cursor, candidates);
-        } else {
-            // support completing lower case as well with the toUpperCase() call
-            return super.complete(buffer.toUpperCase(), cursor, candidates);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/karaf/blob/83042cf7/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
----------------------------------------------------------------------
diff --git a/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml b/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
index 59905ba..0b94658 100644
--- a/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
+++ b/log/command/src/main/resources/OSGI-INF/blueprint/shell-log.xml
@@ -47,10 +47,6 @@
             <action class="org.apache.karaf.log.command.SetLogLevel" >
                 <property name="logService" ref="logService" />
             </action>
-            <completers>
-            	<ref component-id="logLevelCompleter"/>
-            	<null/>
-            </completers>
         </command>
         <command>
             <action class="org.apache.karaf.log.command.LogTail">
@@ -62,28 +58,11 @@
             <action class="org.apache.karaf.log.command.LogEntry">
                 <argument ref="osgiLogService" />
             </action>
-            <optional-completers>
-                <entry key="--level" value-ref="osgiLogLevelsCompleter"/>
-            </optional-completers>
         </command>
     </command-bundle>
 
-    <bean id="osgiLogLevelsCompleter" class="org.apache.karaf.shell.console.completer.StringsCompleter">
-        <argument type="java.util.Collection" >
-            <list>
-                <value>WARNING</value>
-                <value>DEBUG</value>
-                <value>INFO</value>
-                <value>ERROR</value>
-            </list>
-        </argument>
-        <argument value="false" />
-    </bean>
-    
     <reference id="formatter" interface="org.apache.karaf.log.core.LogEventFormatter"/>
     <reference id="logService" interface="org.apache.karaf.log.core.LogService"/>
     <reference id="osgiLogService" interface="org.osgi.service.log.LogService"/>
 
-    <bean id="logLevelCompleter" class="org.apache.karaf.log.command.completers.LogLevelCompleter"/>
-
 </blueprint>

http://git-wip-us.apache.org/repos/asf/karaf/blob/83042cf7/log/command/src/test/java/org/apache/karaf/log/command/completers/LogLevelCompleterTest.java
----------------------------------------------------------------------
diff --git a/log/command/src/test/java/org/apache/karaf/log/command/completers/LogLevelCompleterTest.java b/log/command/src/test/java/org/apache/karaf/log/command/completers/LogLevelCompleterTest.java
deleted file mode 100644
index f81c115..0000000
--- a/log/command/src/test/java/org/apache/karaf/log/command/completers/LogLevelCompleterTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.karaf.log.command.completers;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import junit.framework.TestCase;
-
-import org.apache.karaf.log.core.Level;
-
-/**
- * Test cases for {@link LogLevelCompleter}
- */
-public class LogLevelCompleterTest extends TestCase {
-    
-    private final LogLevelCompleter completer = new LogLevelCompleter();
-    
-    public void testComplete() throws Exception {
-        assertCompletions("I", Level.INFO.name());
-        assertCompletions("D", Level.DEBUG.name(), Level.DEFAULT.name());
-    }
-    
-    public void testCompleteLowerCase() throws Exception {
-        assertCompletions("i", Level.INFO.name());
-        assertCompletions("d", Level.DEBUG.name(), Level.DEFAULT.name());
-    }
-    
-    public void testCompleteWithNullBuffer() throws Exception {
-        // an empty buffer should return all available options
-        assertCompletions(null, Level.strings());
-    }
-
-    private void assertCompletions(String buffer, String... results) {
-        List<String> candidates = new LinkedList<String>();
-        assertEquals("Completer should have found a match", 0, completer.complete(buffer, 0, candidates));
-        assertEquals(results.length, candidates.size());
-        for (String result : results) {
-            assertContains(result, candidates);
-        }
-    }
-    
-    private void assertContains(String value, List<String> values) {
-        for (String element : values) {
-            if (value.trim().equals(element.trim())) {
-                return;
-            }
-        }
-        fail("Element " + value + " not found in array");
-    }
-}