You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/27 20:50:23 UTC

svn commit: r699716 - in /geronimo/gshell/trunk: gshell-api/src/main/java/org/apache/geronimo/gshell/command/ gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/ gshell-commands/gshell-builtins/src/main/resources...

Author: jdillon
Date: Sat Sep 27 11:50:23 2008
New Revision: 699716

URL: http://svn.apache.org/viewvc?rev=699716&view=rev
Log:
Dropped Completer interface, just use poorly named jline.Completor for now
Changed CommandCompleter to expose createCompleters() as we need a list to determine if/when to add null termination to completion
Renamed AliasNameCompleter to AliasesCompleter
Implemented CommandsCompleter muck to hook up command-name + any specific command completers
Moved completers to prototype beans, as looks like we might wanna re-use them
Started to figure out how to reuse the AliasesCompleter stuff to support completion for the 'unalias' command

Added:
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java   (contents, props changed)
      - copied, changed from r699708, geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasNameCompleter.java
Removed:
    geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/Completer.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasNameCompleter.java
Modified:
    geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandCompleter.java
    geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java
    geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/spring/components.xml
    geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/MuxCompleter.java
    geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/StringsCompleter.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandNameCompleter.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandsCompleter.java
    geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml

Modified: geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandCompleter.java Sat Sep 27 11:50:23 2008
@@ -21,6 +21,8 @@
 
 import jline.Completor;
 
+import java.util.Collection;
+
 /**
  * Provides completion support for a command.
  *
@@ -28,9 +30,5 @@
  */
 public interface CommandCompleter
 {
-    //
-    // FIXME: Use Completer here from gshell-console instead
-    //
-
-    Completor createCompletor();
+    Collection<Completor> createCompletors();
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java Sat Sep 27 11:50:23 2008
@@ -21,6 +21,7 @@
 
 import org.apache.geronimo.gshell.command.CommandAction;
 import org.apache.geronimo.gshell.command.CommandContext;
+import org.apache.geronimo.gshell.command.CommandCompleter;
 import org.apache.geronimo.gshell.clp.Argument;
 import org.apache.geronimo.gshell.io.IO;
 import org.apache.geronimo.gshell.registry.AliasRegistry;
@@ -28,6 +29,11 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import jline.Completor;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * Undefine an alias.
@@ -62,4 +68,22 @@
             return Result.FAILURE;
         }
     }
+
+    public static class Completer
+        implements CommandCompleter
+    {
+        // TODO: The AliasesCompleter class is not in scope, so have to inject it manually me thinks, or use qualifiers?
+        // @Autowired
+        // private AliasesCompleter aliasesCompleter;
+
+        public Collection<Completor> createCompletors() {
+            List<Completor> completers = new ArrayList<Completor>(2);
+
+            // TODO: Hook up a *wired* AliasesCompleter instance
+            // completers.add(aliasesCompleter)
+            completers.add(null);
+
+            return completers;
+        }
+    }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/spring/components.xml?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/spring/components.xml (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/resources/META-INF/spring/components.xml Sat Sep 27 11:50:23 2008
@@ -73,6 +73,10 @@
 
             <gshell:command name="unalias">
                 <gshell:action class="org.apache.geronimo.gshell.commands.builtins.UnaliasAction"/>
+                <!--
+                FIXME: Need to resolve some binding issues...
+                <gshell:completer class="org.apache.geronimo.gshell.commands.builtins.UnaliasAction$Completer"/>
+                -->
             </gshell:command>
             
             <gshell:command name="history">

Modified: geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/MuxCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/MuxCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/MuxCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/MuxCompleter.java Sat Sep 27 11:50:23 2008
@@ -19,6 +19,8 @@
 
 package org.apache.geronimo.gshell.console.completer;
 
+import jline.Completor;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -30,19 +32,19 @@
  * @version $Rev$ $Date$
  */
 public class MuxCompleter
-    implements Completer
+    implements Completor
 {
-    private final List<Completer> completers = new ArrayList<Completer>();
+    private final List<Completor> completers = new ArrayList<Completor>();
 
     public MuxCompleter() {}
 
-    public MuxCompleter(final Collection<Completer> completers) {
+    public MuxCompleter(final Collection<Completor> completers) {
         assert completers != null;
 
         getCompleters().addAll(completers);
     }
 
-    public Collection<Completer> getCompleters() {
+    public Collection<Completor> getCompleters() {
         return completers;
     }
 
@@ -54,7 +56,7 @@
 
         // Run each completer, saving its completion results
         int max = -1;
-        for (Completer completer : completers) {
+        for (Completor completer : completers) {
             Completion completion = new Completion(candidates);
             completion.complete(completer, buffer, cursor);
 
@@ -88,7 +90,7 @@
             this.candidates = new LinkedList<String>(candidates);
         }
 
-        public void complete(final Completer completer, final String buffer, final int cursor) {
+        public void complete(final Completor completer, final String buffer, final int cursor) {
             assert completer != null;
 
             this.cursor = completer.complete(buffer, cursor, candidates);

Modified: geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/StringsCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/StringsCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/StringsCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-console/src/main/java/org/apache/geronimo/gshell/console/completer/StringsCompleter.java Sat Sep 27 11:50:23 2008
@@ -19,10 +19,13 @@
 
 package org.apache.geronimo.gshell.console.completer;
 
+import jline.Completor;
+
 import java.util.Collection;
 import java.util.List;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.Arrays;
 
 /**
  * Completer for a set of strings.
@@ -30,7 +33,7 @@
  * @version $Rev$ $Date$
  */
 public class StringsCompleter
-    implements Completer
+    implements Completor
 {
     private final SortedSet<String> strings = new TreeSet<String>();
 
@@ -42,6 +45,10 @@
         getStrings().addAll(strings);
     }
 
+    public StringsCompleter(final String[] strings) {
+        this(Arrays.asList(strings));
+    }
+
     public Collection<String> getStrings() {
         return strings;
     }

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java Sat Sep 27 11:50:23 2008
@@ -22,6 +22,8 @@
 import jline.Completor;
 import org.apache.geronimo.gshell.command.CommandCompleter;
 
+import java.util.Collection;
+
 /**
  * A <em>null</em> {@link CommandCompleter}.
  *
@@ -30,9 +32,7 @@
 public class NullCommandCompleter
     implements CommandCompleter
 {
-    public Completor createCompletor() {
-        // Nothing
-
+    public Collection<Completor> createCompletors() {
         return null;
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/ShellImpl.java Sat Sep 27 11:50:23 2008
@@ -20,6 +20,7 @@
 package org.apache.geronimo.gshell.wisdom.shell;
 
 import jline.History;
+import jline.Completor;
 import org.apache.geronimo.gshell.ansi.Renderer;
 import org.apache.geronimo.gshell.ansi.Code;
 import org.apache.geronimo.gshell.application.Application;
@@ -29,7 +30,6 @@
 import org.apache.geronimo.gshell.console.Console.ErrorHandler;
 import org.apache.geronimo.gshell.console.Console.Prompter;
 import org.apache.geronimo.gshell.console.JLineConsole;
-import org.apache.geronimo.gshell.console.completer.Completer;
 import org.apache.geronimo.gshell.console.completer.MuxCompleter;
 import org.apache.geronimo.gshell.event.Event;
 import org.apache.geronimo.gshell.event.EventListener;
@@ -76,7 +76,7 @@
     @Autowired
     private History history;
 
-    private List<Completer> completers;
+    private List<Completor> completers;
 
     private ShellContext context;
 
@@ -86,7 +86,7 @@
 
     private ErrorHandler errorHandler;
 
-    public void setCompleters(final List<Completer> completers) {
+    public void setCompleters(final List<Completor> completers) {
         assert completers != null;
 
         this.completers = completers;
@@ -268,7 +268,7 @@
                 buff.append(hostName);
                 buff.append(":");
                 buff.append(Renderer.encode(appName, Code.BOLD));
-                buff.append(">");
+                buff.append("> ");
 
                 return renderer.render(buff.toString());
             }

Copied: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java (from r699708, geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasNameCompleter.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java?p2=geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java&p1=geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasNameCompleter.java&r1=699708&r2=699716&rev=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasNameCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java Sat Sep 27 11:50:23 2008
@@ -19,7 +19,6 @@
 
 package org.apache.geronimo.gshell.wisdom.shell.completer;
 
-import org.apache.geronimo.gshell.console.completer.Completer;
 import org.apache.geronimo.gshell.console.completer.StringsCompleter;
 import org.apache.geronimo.gshell.event.Event;
 import org.apache.geronimo.gshell.event.EventListener;
@@ -35,13 +34,15 @@
 import java.util.Collection;
 import java.util.List;
 
+import jline.Completor;
+
 /**
- * {@link Completer} for alias names.
+ * {@link Completor} for alias names.
  *
  * @version $Rev$ $Date$
  */
-public class AliasNameCompleter
-    implements Completer
+public class AliasesCompleter
+    implements Completor
 {
     private final Logger log = LoggerFactory.getLogger(getClass());
 

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/AliasesCompleter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandNameCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandNameCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandNameCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandNameCompleter.java Sat Sep 27 11:50:23 2008
@@ -19,7 +19,6 @@
 
 package org.apache.geronimo.gshell.wisdom.shell.completer;
 
-import org.apache.geronimo.gshell.console.completer.Completer;
 import org.apache.geronimo.gshell.console.completer.StringsCompleter;
 import org.apache.geronimo.gshell.event.Event;
 import org.apache.geronimo.gshell.event.EventListener;
@@ -35,13 +34,15 @@
 import java.util.Collection;
 import java.util.List;
 
+import jline.Completor;
+
 /**
- * {@link Completer} for command names.
+ * {@link Completor} for command names.
  *
  * @version $Rev$ $Date$
  */
 public class CommandNameCompleter
-    implements Completer
+    implements Completor
 {
     private final Logger log = LoggerFactory.getLogger(getClass());
 

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandsCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandsCompleter.java?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandsCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/shell/completer/CommandsCompleter.java Sat Sep 27 11:50:23 2008
@@ -19,7 +19,12 @@
 
 package org.apache.geronimo.gshell.wisdom.shell.completer;
 
-import org.apache.geronimo.gshell.console.completer.Completer;
+import jline.ArgumentCompletor;
+import jline.Completor;
+import jline.NullCompletor;
+import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.console.completer.MuxCompleter;
+import org.apache.geronimo.gshell.console.completer.StringsCompleter;
 import org.apache.geronimo.gshell.event.Event;
 import org.apache.geronimo.gshell.event.EventListener;
 import org.apache.geronimo.gshell.event.EventManager;
@@ -31,16 +36,19 @@
 import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.PostConstruct;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
- * {@link Completer} for commands.
+ * {@link Completor} for commands, including support for command-specific sub-completion.
  *
  * @version $Rev$ $Date$
  */
 public class CommandsCompleter
-    implements Completer
+    implements Completor
 {
     private final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -50,31 +58,77 @@
     @Autowired
     private CommandRegistry commandRegistry;
 
+    private final Map<String,Completor> completors = new HashMap<String,Completor>();
+
+    private final MuxCompleter delegate = new MuxCompleter();
+
     @PostConstruct
-    public void init() {
+    public void init() throws Exception {
         log.debug("Initializing");
 
-        // Populate the initial list of command names
+        // Populate the initial list of completers from the currently registered commands
         Collection<String> names = commandRegistry.getCommandNames();
-        // TODO:
+        for (String name : names) {
+            Command command = commandRegistry.getCommand(name);
+            addCompleter(name, command);
+        }
 
         // Register for updates to command registrations
         eventManager.addListener(new EventListener() {
             public void onEvent(final Event event) throws Exception {
                 if (event instanceof CommandRegisteredEvent) {
                     CommandRegisteredEvent targetEvent = (CommandRegisteredEvent)event;
-                    // TODO:
+                    addCompleter(targetEvent.getName(), targetEvent.getCommand());
                 }
                 else if (event instanceof CommandRemovedEvent) {
                     CommandRemovedEvent targetEvent = (CommandRemovedEvent)event;
-                    // TODO:
+                    removeCompleter(targetEvent.getName());
                 }
             }
         });
     }
 
+    private void addCompleter(final String name, final Command command) {
+        assert name != null;
+        assert command != null;
+
+        List<Completor> children = new ArrayList<Completor>();
+
+        // Attach completion for the command name
+        children.add(new StringsCompleter(new String[] { name }));
+
+        // Then attach any command specific completers
+        Collection<Completor> commandCompleters = command.getCompleter().createCompletors();
+        if (commandCompleters != null) {
+            for (Completor completer : commandCompleters) {
+                if (completer != null) {
+                    children.add(completer);
+                }
+                else {
+                    children.add(new NullCompletor());
+                }
+            }
+        }
+        else {
+            children.add(new NullCompletor());
+        }
+
+        // Setup the root completer for the command
+        Completor root = new ArgumentCompletor(children);
+
+        // Track and attach
+        completors.put(name, root);
+        delegate.getCompleters().add(root);
+    }
+
+    private void removeCompleter(final String name) {
+        assert name != null;
+
+        Completor completer = completors.remove(name);
+        delegate.getCompleters().remove(completer);
+    }
+    
     public int complete(final String buffer, final int cursor, final List candidates) {
-        // TODO:
-        return -1;
+        return delegate.complete(buffer, cursor, candidates);
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml?rev=699716&r1=699715&r2=699716&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml Sat Sep 27 11:50:23 2008
@@ -41,11 +41,17 @@
 
     <bean id="shellInfo" class="org.apache.geronimo.gshell.wisdom.shell.ShellInfoImpl"/>
 
+    <bean id="commandNameCompleter" class="org.apache.geronimo.gshell.wisdom.shell.completer.CommandNameCompleter" scope="prototype"/>
+
+    <bean id="commandsCompleter" class="org.apache.geronimo.gshell.wisdom.shell.completer.CommandsCompleter" scope="prototype"/>
+
+    <bean id="aliasesCompleter" class="org.apache.geronimo.gshell.wisdom.shell.completer.AliasesCompleter" scope="prototype"/>
+
     <bean id="shell" class="org.apache.geronimo.gshell.wisdom.shell.ShellImpl">
         <property name="completers">
             <list>
-                <bean class="org.apache.geronimo.gshell.wisdom.shell.completer.CommandNameCompleter"/>
-                <bean class="org.apache.geronimo.gshell.wisdom.shell.completer.AliasNameCompleter"/>
+                <ref bean="commandsCompleter"/>
+                <ref bean="aliasesCompleter"/>
             </list>
         </property>
     </bean>