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/10/21 20:10:41 UTC
svn commit: r706701 - in
/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main:
java/org/apache/geronimo/gshell/wisdom/command/
java/org/apache/geronimo/gshell/wisdom/completer/ resources/META-INF/spring/
Author: jdillon
Date: Tue Oct 21 11:10:39 2008
New Revision: 706701
URL: http://svn.apache.org/viewvc?rev=706701&view=rev
Log:
Make command completer optional
Add our own NullCompleter, which has a singleton to be used in all cases
Added:
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java (contents, props changed)
- copied, changed from r706683, geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/AliasNameCompleter.java
Removed:
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/NullCommandCompleter.java
Modified:
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasCommand.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/GroupCommand.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/resources/META-INF/spring/components.xml
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasCommand.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasCommand.java?rev=706701&r1=706700&r2=706701&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasCommand.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasCommand.java Tue Oct 21 11:10:39 2008
@@ -54,7 +54,6 @@
setAction(new AliasCommandAction());
setDocumenter(new AliasCommandDocumenter());
- setCompleter(new NullCommandCompleter());
setMessages(new AliasCommandMessageSource());
}
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java?rev=706701&r1=706700&r2=706701&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/CommandSupport.java Tue Oct 21 11:10:39 2008
@@ -116,10 +116,7 @@
}
public CommandCompleter getCompleter() {
- if (completer == null) {
- throw new IllegalStateException("Missing required property: completer");
- }
-
+ // completer may be null
return completer;
}
@@ -232,12 +229,7 @@
// Setup the command action
try {
// Process command line options/arguments
- if (processArguments(io, action, args)) {
- // Abort if we have been asked to display --help
- throw new AbortExecutionNotification(new CommandResult.ValueResult(CommandAction.Result.SUCCESS));
- }
-
- // TODO: Add preferences processor
+ processArguments(io, action, args);
}
catch (Exception e) {
// Abort if preparation caused a failure
@@ -245,7 +237,7 @@
}
}
- protected boolean processArguments(final IO io, final CommandAction action, final Object[] args) throws Exception {
+ protected void processArguments(final IO io, final CommandAction action, final Object[] args) throws Exception {
assert io != null;
assert action != null;
assert args != null;
@@ -257,10 +249,6 @@
CommandLineProcessor clp = new CommandLineProcessor();
clp.addBean(action);
- // Attach some help context
- CommandDocumenter documenter = getDocumenter();
- clp.addBean(documenter);
-
HelpSupport help = new HelpSupport();
clp.addBean(help);
@@ -271,11 +259,11 @@
if (help.displayHelp) {
log.trace("Render command-line usage");
+ CommandDocumenter documenter = getDocumenter();
documenter.renderUsage(io.out);
- return true;
- }
- return false;
+ throw new AbortExecutionNotification(new CommandResult.ValueResult(CommandAction.Result.SUCCESS));
+ }
}
protected CommandResult executeAction(final ShellContext context, final Object[] args) {
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/GroupCommand.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/GroupCommand.java?rev=706701&r1=706700&r2=706701&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/GroupCommand.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/GroupCommand.java Tue Oct 21 11:10:39 2008
@@ -42,7 +42,6 @@
setFile(file);
setAction(new GroupCommandAction());
setDocumenter(new GroupCommandDocumenter());
- setCompleter(new NullCommandCompleter());
setMessages(new GroupCommandMessageSource());
}
@@ -50,6 +49,10 @@
this(null);
}
+ //
+ // FIXME: Make this a plain string, hind the mata:/commands stuff
+ //
+
public FileObject getFile() {
if (file == null) {
throw new IllegalStateException("Missing property: file");
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/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/completer/CommandsCompleter.java?rev=706701&r1=706700&r2=706701&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/CommandsCompleter.java Tue Oct 21 11:10:39 2008
@@ -21,8 +21,8 @@
import jline.ArgumentCompletor;
import jline.Completor;
-import jline.NullCompletor;
import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.command.CommandCompleter;
import org.apache.geronimo.gshell.console.completer.AggregateCompleter;
import org.apache.geronimo.gshell.console.completer.StringsCompleter;
import org.apache.geronimo.gshell.event.Event;
@@ -102,19 +102,20 @@
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());
+ CommandCompleter commandCompleter = command.getCompleter();
+ if (commandCompleter != null) {
+ Collection<Completor> commandCompleters = commandCompleter.createCompletors();
+ if (commandCompleters != null) {
+ for (Completor completer : commandCompleters) {
+ children.add(completer != null ? completer : NullCompleter.INSTANCE);
}
}
+ else {
+ children.add(NullCompleter.INSTANCE);
+ }
}
else {
- children.add(new NullCompletor());
+ children.add(NullCompleter.INSTANCE);
}
// Setup the root completer for the command
Copied: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java (from r706683, geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/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/completer/NullCompleter.java?p2=geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java&p1=geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/AliasNameCompleter.java&r1=706683&r2=706701&rev=706701&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/AliasNameCompleter.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java Tue Oct 21 11:10:39 2008
@@ -19,64 +19,15 @@
package org.apache.geronimo.gshell.wisdom.completer;
-import jline.Completor;
-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;
-import org.apache.geronimo.gshell.registry.AliasRegistry;
-import org.apache.geronimo.gshell.wisdom.registry.AliasRegisteredEvent;
-import org.apache.geronimo.gshell.wisdom.registry.AliasRemovedEvent;
-
-import javax.annotation.PostConstruct;
-import java.util.Collection;
-import java.util.List;
-
/**
- * {@link Completor} for alias names.
+ * Null or terminal completer.
*
* Keeps up to date automatically by handling alias-related events.
*
* @version $Rev$ $Date$
*/
-public class AliasNameCompleter
- implements Completor
+public final class NullCompleter
+ extends jline.NullCompletor
{
- private final EventManager eventManager;
-
- private final AliasRegistry aliasRegistry;
-
- private final StringsCompleter delegate = new StringsCompleter();
-
- public AliasNameCompleter(final EventManager eventManager, final AliasRegistry aliasRegistry) {
- assert eventManager != null;
- this.eventManager = eventManager;
- assert aliasRegistry != null;
- this.aliasRegistry = aliasRegistry;
- }
-
- @PostConstruct
- public void init() {
- // Populate the initial list of alias names
- Collection<String> names = aliasRegistry.getAliasNames();
- delegate.getStrings().addAll(names);
-
- // Register for updates to alias registrations
- eventManager.addListener(new EventListener() {
- public void onEvent(final Event event) throws Exception {
- if (event instanceof AliasRegisteredEvent) {
- AliasRegisteredEvent targetEvent = (AliasRegisteredEvent)event;
- delegate.getStrings().add(targetEvent.getName());
- }
- else if (event instanceof AliasRemovedEvent) {
- AliasRemovedEvent targetEvent = (AliasRemovedEvent)event;
- delegate.getStrings().remove(targetEvent.getName());
- }
- }
- });
- }
-
- public int complete(final String buffer, final int cursor, final List candidates) {
- return delegate.complete(buffer, cursor, candidates);
- }
+ public static final NullCompleter INSTANCE = new NullCompleter();
}
\ No newline at end of file
Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.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/completer/NullCompleter.java
------------------------------------------------------------------------------
svn:mergeinfo =
Propchange: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/completer/NullCompleter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=706701&r1=706700&r2=706701&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 Tue Oct 21 11:10:39 2008
@@ -284,15 +284,11 @@
</property>
</bean>
- <bean id="defaultCommandCompleter" class="org.apache.geronimo.gshell.wisdom.command.NullCommandCompleter" lazy-init="true"/>
-
<bean id="statelessCommandTemplate" class="org.apache.geronimo.gshell.wisdom.command.StatelessCommand" abstract="true">
<property name="documenter">
<bean class="org.apache.geronimo.gshell.wisdom.command.MessageSourceCommandDocumenter"/>
</property>
- <property name="completer" ref="defaultCommandCompleter"/>
-
<property name="messages">
<bean class="org.apache.geronimo.gshell.wisdom.command.CommandMessageSource"/>
</property>
@@ -303,8 +299,6 @@
<bean class="org.apache.geronimo.gshell.wisdom.command.MessageSourceCommandDocumenter"/>
</property>
- <property name="completer" ref="defaultCommandCompleter"/>
-
<property name="messages">
<bean class="org.apache.geronimo.gshell.wisdom.command.CommandMessageSource"/>
</property>