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/25 16:56:22 UTC
svn commit: r698992 - in /geronimo/gshell/trunk:
gshell-api/src/main/java/org/apache/geronimo/gshell/alias/
gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/
gshell-support/gshell-io/src/main/java/org/apache/ge...
Author: jdillon
Date: Thu Sep 25 07:56:21 2008
New Revision: 698992
URL: http://svn.apache.org/viewvc?rev=698992&view=rev
Log:
More alias work, still not yet functional
Modified:
geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/Alias.java
geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/AliasManager.java
geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/AliasAction.java
geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/UnaliasAction.java
geronimo/gshell/trunk/gshell-support/gshell-io/src/main/java/org/apache/geronimo/gshell/io/IO.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/alias/AliasManagerImpl.java
Modified: geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/Alias.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/Alias.java?rev=698992&r1=698991&r2=698992&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/Alias.java (original)
+++ geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/Alias.java Thu Sep 25 07:56:21 2008
@@ -26,4 +26,11 @@
*/
public interface Alias
{
+ String getName();
+
+ String getTarget();
+
+ // Command getCommand()
+
+ // boolean isMasking()
}
Modified: geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/AliasManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/AliasManager.java?rev=698992&r1=698991&r2=698992&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/AliasManager.java (original)
+++ geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/alias/AliasManager.java Thu Sep 25 07:56:21 2008
@@ -19,11 +19,20 @@
package org.apache.geronimo.gshell.alias;
+import java.util.Collection;
+
/**
- * ???
+ * Component to manage {@link Alias} instances.
*
* @version $Rev$ $Date$
*/
public interface AliasManager
{
+ Collection<Alias> getAliases();
+
+ boolean isAliasDefined(String name);
+
+ Alias defineAlias(String name, String target);
+
+ void undefineAlias(String name);
}
\ No newline at end of file
Modified: geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/AliasAction.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/AliasAction.java?rev=698992&r1=698991&r2=698992&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/AliasAction.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-builtins/src/main/java/org/apache/geronimo/gshell/commands/builtins/AliasAction.java Thu Sep 25 07:56:21 2008
@@ -19,16 +19,19 @@
package org.apache.geronimo.gshell.commands.builtins;
+import org.apache.geronimo.gshell.alias.Alias;
+import org.apache.geronimo.gshell.alias.AliasManager;
+import org.apache.geronimo.gshell.clp.Argument;
import org.apache.geronimo.gshell.command.CommandAction;
import org.apache.geronimo.gshell.command.CommandContext;
-import org.apache.geronimo.gshell.clp.Argument;
-import org.apache.geronimo.gshell.io.IO;
import org.apache.geronimo.gshell.i18n.MessageSource;
-import org.apache.geronimo.gshell.alias.AliasManager;
+import org.apache.geronimo.gshell.io.IO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import java.util.Collection;
+
/**
* Define an alias.
*
@@ -55,8 +58,19 @@
if (name == null) {
log.debug("Listing defined aliases");
+
+ Collection<Alias> aliases = aliasManager.getAliases();
- // TODO: List aliases
+ if (aliases.isEmpty()) {
+ io.verbose("No aliases have been defined");
+ }
+ else {
+ io.info("Defined aliases:");
+
+ for (Alias alias : aliases) {
+ io.info(" {}='{}'", alias.getName(), alias.getTarget());
+ }
+ }
}
else if (target == null) {
io.error("Missing argument: {}", messages.getMessage("command.argument.target.token"));
@@ -65,7 +79,9 @@
else {
log.debug("Defining alias: {} -> {}", name, target);
- // TODO: Define alias
+ Alias alias = aliasManager.defineAlias(name, target);
+
+ log.debug("Alias: {}", alias);
}
return Result.SUCCESS;
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=698992&r1=698991&r2=698992&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 Thu Sep 25 07:56:21 2008
@@ -23,6 +23,7 @@
import org.apache.geronimo.gshell.command.CommandContext;
import org.apache.geronimo.gshell.clp.Argument;
import org.apache.geronimo.gshell.alias.AliasManager;
+import org.apache.geronimo.gshell.io.IO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,10 +46,16 @@
public Object execute(final CommandContext context) throws Exception {
assert context != null;
+ IO io = context.getIo();
log.debug("Undefining alias: {}", name);
- // TODO:
+ if (!aliasManager.isAliasDefined(name)) {
+ io.error("No alias defined with name: {}", name);
+ return Result.FAILURE;
+ }
+
+ aliasManager.undefineAlias(name);
return Result.SUCCESS;
}
Modified: geronimo/gshell/trunk/gshell-support/gshell-io/src/main/java/org/apache/geronimo/gshell/io/IO.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-io/src/main/java/org/apache/geronimo/gshell/io/IO.java?rev=698992&r1=698991&r2=698992&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-io/src/main/java/org/apache/geronimo/gshell/io/IO.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-io/src/main/java/org/apache/geronimo/gshell/io/IO.java Thu Sep 25 07:56:21 2008
@@ -288,6 +288,8 @@
//
// Output Helpers
//
+ // TODO: Hook up a MessageSource to make it even easier to handle i18n via these helpers
+ //
public void debug(final String msg) {
if (isDebug()) {
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/alias/AliasManagerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/alias/AliasManagerImpl.java?rev=698992&r1=698991&r2=698992&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/alias/AliasManagerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/alias/AliasManagerImpl.java Thu Sep 25 07:56:21 2008
@@ -19,15 +19,20 @@
package org.apache.geronimo.gshell.wisdom.alias;
-import org.apache.geronimo.gshell.command.CommandResult;
-import org.apache.geronimo.gshell.shell.ShellContext;
-import org.apache.geronimo.gshell.wisdom.command.CommandSupport;
+import org.apache.geronimo.gshell.alias.Alias;
import org.apache.geronimo.gshell.alias.AliasManager;
+import org.apache.geronimo.gshell.command.CommandRegistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
/**
- * Implementation of the {@link AliasManager} component.
+ * {@link AliasManager} component.
*
* @version $Rev$ $Date$
*/
@@ -36,5 +41,58 @@
{
private final Logger log = LoggerFactory.getLogger(getClass());
- // TODO:
+ @Autowired
+ private CommandRegistry commandRegistry;
+
+ private Map<String,Alias> aliases = new LinkedHashMap<String,Alias>();
+
+ public Collection<Alias> getAliases() {
+ return Collections.unmodifiableCollection(aliases.values());
+ }
+
+ public boolean isAliasDefined(final String name) {
+ assert name != null;
+
+ return aliases.containsKey(name);
+ }
+
+ public Alias defineAlias(final String name, final String target) {
+ assert name != null;
+
+ log.debug("Defining alias: {} -> {}", name, target);
+
+ Alias alias = new Alias() {
+ public String getName() {
+ return name;
+ }
+
+ public String getTarget() {
+ return target;
+ }
+ };
+
+ aliases.put(name, alias);
+
+ // TODO: Register AliasCommand
+
+ // TODO: Fire event?
+
+ return alias;
+ }
+
+ public void undefineAlias(final String name) {
+ assert name != null;
+
+ log.debug("Undefining alias: {}", name);
+
+ Alias alias = aliases.remove(name);
+ if (alias == null) {
+ log.debug("No alias defined; ignoring");
+ }
+ else {
+ // TODO: Unregister AliasCommand
+
+ // TODO: Fire event?
+ }
+ }
}