Author: gnodet
Date: Wed Dec 17 01:31:44 2008
New Revision: 727321
URL: http://svn.apache.org/viewvc?rev=727321&view=rev
Log:
GSHELL-154: Create interfaces to represent links and aliases
Added:
geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Alias.java
geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Link.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/AliasImpl.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/LinkImpl.java
Modified:
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java
geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/plugin/bundle/
CommandBundle.java
Added: geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Alias.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Alias.java?rev=727321&view=auto
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Alias.java (added)
+++ geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Alias.java Wed Dec 17 01:31:44 2008
@@ -0,0 +1,33 @@
+/*
+ * 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.geronimo.gshell.command;
+
+/**
+ * Convenient way to register an alias.
+ *
+ * @version $Rev: 705507 $ $Date: 2008-10-17 10:22:12 +0200 (Fri,
17 Oct 2008) $
+ */
+public interface Alias {
+
+ String getName();
+
+ String getAlias();
+
+}
Added: geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Link.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/Link.java?rev=727321&view=auto
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Link.java (added)
+++ geronimo/gshell/trunk/gshell-api/src/main/java/org/apache/
geronimo/gshell/command/Link.java Wed Dec 17 01:31:44 2008
@@ -0,0 +1,33 @@
+/*
+ * 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.geronimo.gshell.command;
+
+/**
+ * Provides a convenient way to register a link
+ *
+ * @version $Rev: 705507 $ $Date: 2008-10-17 10:22:12 +0200 (Fri,
17 Oct 2008) $
+ */
+public interface Link {
+
+ String getName();
+
+ String getTarget();
+
+}
Added: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/
main/java/org/apache/geronimo/gshell/wisdom/command/AliasImpl.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/AliasImpl.java?rev=727321&view=auto
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/AliasImpl.java (added)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/AliasImpl.java Wed
Dec 17 01:31:44 2008
@@ -0,0 +1,47 @@
+/*
+ * 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.geronimo.gshell.wisdom.command;
+
+import org.apache.geronimo.gshell.command.Alias;
+
+/**
+ * Simpe implementation of {...@link Alias} interface.
+ *
+ * @version $Rev: 706889 $ $Date: 2008-10-22 10:12:04 +0200 (Wed,
22 Oct 2008) $
+ */
+public class AliasImpl implements Alias {
+
+ private String name;
+ private String alias;
+
+ public AliasImpl(String name, String alias) {
+ this.name = name;
+ this.alias = alias;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+}
Added: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/
main/java/org/apache/geronimo/gshell/wisdom/command/LinkImpl.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/command/LinkImpl.java?rev=727321&view=auto
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/LinkImpl.java (added)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/command/LinkImpl.java Wed Dec
17 01:31:44 2008
@@ -0,0 +1,46 @@
+/*
+ * 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.geronimo.gshell.wisdom.command;
+
+import org.apache.geronimo.gshell.command.Link;
+
+/**
+ * Alias {...@link org.apache.geronimo.gshell.command.Command}
component.
+ *
+ * @version $Rev: 706889 $ $Date: 2008-10-22 10:12:04 +0200 (Wed,
22 Oct 2008) $
+ */
+public class LinkImpl implements Link {
+
+ private String name;
+ private String target;
+
+ public LinkImpl(String name, String target) {
+ this.name = name;
+ this.target = target;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getTarget() {
+ return target;
+ }
+}
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/
main/java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java?rev=727321&r1=727320&r2=727321&view=diff
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java
(original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/config/PluginParser.java Wed
Dec 17 01:31:44 2008
@@ -21,8 +21,12 @@
import
org
.apache.geronimo.gshell.wisdom.command.ConfigurableCommandCompleter;
import org.apache.geronimo.gshell.wisdom.command.LinkCommand;
+import org.apache.geronimo.gshell.wisdom.command.AliasImpl;
+import org.apache.geronimo.gshell.wisdom.command.LinkImpl;
import org.apache.geronimo.gshell.wisdom.plugin.bundle.CommandBundle;
import org.apache.geronimo.gshell.wisdom.registry.CommandLocationImpl;
+import org.apache.geronimo.gshell.command.Alias;
+import org.apache.geronimo.gshell.command.Link;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.BeanDefinitionStoreException;
@@ -103,6 +107,8 @@
private static final String LINK = "link";
+ private static final String LINKS = "links";
+
private static final String TARGET = "target";
@Override
@@ -387,13 +393,16 @@
ManagedList commands = new ManagedList();
// noinspection unchecked
commands.addAll(parseCommands(element));
- // noinspection unchecked
- commands.addAll(parseLinks(element));
bundle.addPropertyValue(COMMANDS, commands);
- ManagedMap aliases = new ManagedMap();
+ ManagedList links = new ManagedList();
// noinspection unchecked
- aliases.putAll(parseAliases(element));
+ links.addAll(parseLinks(element));
+ bundle.addPropertyValue(LINKS, links);
+
+ ManagedList aliases = new ManagedList();
+ // noinspection unchecked
+ aliases.addAll(parseAliases(element));
bundle.addPropertyValue(ALIASES, aliases);
return bundle;
@@ -543,27 +552,20 @@
// <gshell:link>
//
- private List<BeanDefinition> parseLinks(final Element
element) {
+ private List<Link> parseLinks(final Element element) {
assert element != null;
log.trace("Parse links; element; {}", element);
- List<BeanDefinition> links = new
ArrayList<BeanDefinition>();
+ List<Link> links = new ArrayList<Link>();
List<Element> children = getChildElements(element, LINK);
for (Element child : children) {
- BeanDefinitionBuilder link =
BeanDefinitionBuilder.rootBeanDefinition(LinkCommand.class);
- link.addConstructorArgReference("commandRegistry");
-
link.addConstructorArgValue(child.getAttribute(TARGET));
-
String name = child.getAttribute(NAME);
- BeanDefinition def = new GenericBeanDefinition();
-
def.setBeanClassName(CommandLocationImpl.class.getName());
-
def.getConstructorArgumentValues().addGenericArgumentValue(name);
- link.addPropertyValue(LOCATION, def);
+ String target = child.getAttribute(TARGET);
- links.add(link.getBeanDefinition());
+ links.add(new LinkImpl(name, target));
}
return links;
@@ -573,12 +575,12 @@
// <gshell:alias>
//
- private Map<String,String> parseAliases(final Element
element) {
+ private List<Alias> parseAliases(final Element element) {
assert element != null;
log.trace("Parse aliases; element; {}", element);
- Map<String,String> aliases = new
LinkedHashMap<String,String>();
+ List<Alias> aliases = new ArrayList<Alias>();
List<Element> children = getChildElements(element, ALIAS);
@@ -586,7 +588,7 @@
String name = child.getAttribute(NAME);
String alias = child.getAttribute(ALIAS);
- aliases.put(name, alias);
+ aliases.add(new AliasImpl(name, alias));
}
return aliases;
Modified: geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/
main/java/org/apache/geronimo/gshell/wisdom/plugin/bundle/
CommandBundle.java
URL:
http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/java/org/apache/geronimo/gshell/wisdom/plugin/bundle/CommandBundle.java?rev=727321&r1=727320&r2=727321&view=diff
=
=
=
=
=
=
=
=
======================================================================
--- geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/plugin/bundle/
CommandBundle.java (original)
+++ geronimo/gshell/trunk/gshell-wisdom/gshell-wisdom-core/src/main/
java/org/apache/geronimo/gshell/wisdom/plugin/bundle/
CommandBundle.java Wed Dec 17 01:31:44 2008
@@ -20,11 +20,16 @@
package org.apache.geronimo.gshell.wisdom.plugin.bundle;
import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.command.Alias;
+import org.apache.geronimo.gshell.command.Link;
import org.apache.geronimo.gshell.registry.AliasRegistry;
import org.apache.geronimo.gshell.registry.CommandRegistry;
+import org.apache.geronimo.gshell.wisdom.command.LinkCommand;
+import
org.apache.geronimo.gshell.wisdom.registry.CommandLocationImpl;
import java.util.List;
import java.util.Map;
+import java.util.ArrayList;
/**
* A bundle of {...@link Command} instances.
@@ -40,7 +45,11 @@
private List<Command> commands;
- private Map<String,String> aliases;
+ private List<Link> links;
+
+ private List<Alias> aliases;
+
+ private List<Command> linkCommands;
public CommandBundle(final CommandRegistry commandRegistry,
final AliasRegistry aliasRegistry, final String name) {
super(name);
@@ -60,23 +69,47 @@
this.commands = commands;
}
- public Map<String, String> getAliases() {
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ public void setLinks(List<Link> links) {
+ assert links != null;
+
+ this.links = links;
+ }
+
+ public List<Alias> getAliases() {
return aliases;
}
- public void setAliases(final Map<String,String> aliases) {
+ public void setAliases(final List<Alias> aliases) {
assert aliases != null;
this.aliases = aliases;
}
protected void doEnable() throws Exception {
+ // Create links commands
+ if (linkCommands == null) {
+ linkCommands = new ArrayList<Command>();
+ for (Link link : links) {
+ LinkCommand cmd = new LinkCommand(commandRegistry,
link.getTarget());
+ cmd.setLocation(new
CommandLocationImpl(link.getName()));
+ linkCommands.add(cmd);
+ }
+ }
+
for (Command command : commands) {
commandRegistry.registerCommand(command);
}
- for (String name : aliases.keySet()) {
- aliasRegistry.registerAlias(name, aliases.get(name));
+ for (Command command : linkCommands) {
+ commandRegistry.registerCommand(command);
+ }
+
+ for (Alias alias : aliases) {
+ aliasRegistry.registerAlias(alias.getName(),
alias.getAlias());
}
}
@@ -85,8 +118,12 @@
commandRegistry.removeCommand(command);
}
- for (String name : aliases.keySet()) {
- aliasRegistry.removeAlias(name);
+ for (Command command : linkCommands) {
+ commandRegistry.removeCommand(command);
+ }
+
+ for (Alias alias : aliases) {
+ aliasRegistry.removeAlias(alias.getName());
}
}
}
\ No newline at end of file