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/06/03 09:58:49 UTC

svn commit: r662685 - in /geronimo/gshell/trunk: gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/ gshell-core/src/main/java/org/apache/geronimo/gshell/registry/ gshell-model/src/main/java/org/apache/geronim...

Author: jdillon
Date: Tue Jun  3 00:58:48 2008
New Revision: 662685

URL: http://svn.apache.org/viewvc?rev=662685&view=rev
Log:
Finish up removing the old CommandSet model muck, using new Plugin bits now

Added:
    geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java   (contents, props changed)
      - copied, changed from r662630, geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorExtractor.java
    geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java   (contents, props changed)
      - copied, changed from r662630, geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorGleaner.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/PlexusCommandWrapper.java
      - copied, changed from r662630, geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PlexusCommandWrapper.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java   (with props)
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java   (contents, props changed)
      - copied, changed from r662630, geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentSetDescriptorAdapter.java
Removed:
    geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorExtractor.java
    geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorGleaner.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/CommandSet.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/CommandSetMarshaller.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/CommandCollector.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/CommandContainer.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/CommandDiscoverer.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentDescriptorAdapter.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentSetDescriptorAdapter.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/DefaultPluginManager.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PlexusCommandWrapper.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginContainer.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginContext.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginManager.java
Modified:
    geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/DescriptorMojo.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/DefaultCommandRegistry.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/Model.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/ApplicationMarshaller.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Branding.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Command.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Parameter.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Requirement.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DescriptorSupport.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/Marshaller.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/MarshallerSupport.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java
    geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/plugin/PluginMarshallerTest.java
    geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/plugin/plugin1.xml
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginCollector.java
    geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginDiscoverer.java

Copied: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java (from r662630, geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorExtractor.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java?p2=geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java&p1=geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorExtractor.java&r1=662630&r2=662685&rev=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorExtractor.java (original)
+++ geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java Tue Jun  3 00:58:48 2008
@@ -35,11 +35,11 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * Extracts {@link org.apache.geronimo.gshell.model.command.Command} instances from class files.
+ * Extracts {@link Command} instances from class files.
  *
  * @version $Id$
  */
-public class CommandDescriptorExtractor
+public class CommandExtractor
 {
     public static enum Scope
     {
@@ -49,7 +49,7 @@
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    private CommandDescriptorGleaner gleaner = new CommandDescriptorGleaner();
+    private CommandGleaner gleaner = new CommandGleaner();
 
     public List<Command> extract(final MavenProject project, final Scope scope) throws Exception {
         assert project != null;

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandExtractor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java (from r662630, geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorGleaner.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java?p2=geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java&p1=geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorGleaner.java&r1=662630&r2=662685&rev=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandDescriptorGleaner.java (original)
+++ geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java Tue Jun  3 00:58:48 2008
@@ -34,11 +34,11 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * ????
+ * Gleans off command elements from annotations.
  *
  * @version $Id$
  */
-public class CommandDescriptorGleaner
+public class CommandGleaner
 {
     private static final String EMPTY_STRING = "";
 

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/CommandGleaner.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/DescriptorMojo.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/DescriptorMojo.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/DescriptorMojo.java (original)
+++ geronimo/gshell/trunk/gshell-buildsupport/gshell-maven-plugin/src/main/java/org/apache/geronimo/gshell/maven/gshell/DescriptorMojo.java Tue Jun  3 00:58:48 2008
@@ -26,8 +26,8 @@
 import java.util.List;
 
 import org.apache.geronimo.gshell.model.command.Command;
-import org.apache.geronimo.gshell.model.command.CommandSet;
-import org.apache.geronimo.gshell.model.command.CommandSetMarshaller;
+import org.apache.geronimo.gshell.model.plugin.PluginMarshaller;
+import org.apache.geronimo.gshell.model.plugin.Plugin;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -35,10 +35,10 @@
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
-import org.apache.geronimo.gshell.maven.gshell.CommandDescriptorExtractor.Scope;
+import org.apache.geronimo.gshell.maven.gshell.CommandExtractor.Scope;
 
 /**
- * Generates a GShell <tt>commands.xml</tt> descriptor.
+ * Generates a GShell <tt>plugin.xml</tt> descriptor.
  *
  * @goal descriptor
  * @phase process-classes
@@ -55,14 +55,16 @@
      * @parameter expression="${project.build.outputDirectory}"
      * @required
      */
+    @SuppressWarnings({"UnusedDeclaration"})
     private File outputDirectory;
 
     /**
      * The filename of the descriptor.
      *
-     * @parameter expression="META-INF/gshell/commands.xml"
+     * @parameter expression="META-INF/gshell/plugin.xml"
      * @required
      */
+    @SuppressWarnings({"UnusedDeclaration"})
     private String fileName;
 
     /**
@@ -70,6 +72,7 @@
      * @readonly
      * @required
      */
+    @SuppressWarnings({"UnusedDeclaration"})
     private MavenProject project;
 
     public void execute() throws MojoExecutionException {
@@ -90,32 +93,40 @@
         assert scope != null;
         assert outputFile != null;
 
-        List<Command> descriptors = new ArrayList<Command>();
+        List<Command> commands = new ArrayList<Command>();
 
-        CommandDescriptorExtractor extractor = new CommandDescriptorExtractor();
+        CommandExtractor extractor = new CommandExtractor();
 
         try {
             List<Command> list = extractor.extract(project, scope);
 
             if (list != null && !list.isEmpty()) {
-                descriptors.addAll(list);
+                commands.addAll(list);
             }
         }
         catch (Exception e) {
             throw new MojoExecutionException("Failed to extract descriptors", e);
         }
 
-        if (descriptors.size() == 0) {
+        if (commands.size() == 0) {
             getLog().debug("No commands found");
         }
         else {
-            getLog().info("Discovered " + descriptors.size() + " command descriptors(s)");
+            getLog().info("Discovered " + commands.size() + " commands");
 
-            CommandSet commands = new CommandSet(project.getId()); // .getArtifactId());
-            commands.setCommands(descriptors);
+            Plugin plugin = new Plugin();
+            
+            plugin.setGroupId(project.getGroupId());
+            plugin.setArtifactId(project.getArtifactId());
+            plugin.setVersion(project.getVersion());
+            plugin.setDescription(project.getDescription());
 
+            for (Command command : commands) {
+                plugin.add(command);
+            }
+            
             try {
-                writeDescriptor(commands, outputFile);
+                writeDescriptor(plugin, outputFile);
             }
             catch (Exception e) {
                 throw new MojoExecutionException("Failed to write descriptor: " + outputFile, e);
@@ -123,18 +134,18 @@
         }
     }
 
-    private void writeDescriptor(final CommandSet commands, final File outputFile) throws Exception {
-        assert commands != null;
+    private void writeDescriptor(final Plugin plugin, final File outputFile) throws Exception {
+        assert plugin != null;
         assert outputFile != null;
 
         FileUtils.forceMkdir(outputFile.getParentFile());
 
         BufferedWriter output = new BufferedWriter(new FileWriter(outputFile));
 
-        CommandSetMarshaller marshaller = new CommandSetMarshaller();
+        PluginMarshaller marshaller = new PluginMarshaller();
 
         try {
-            marshaller.marshal(commands, output);
+            marshaller.marshal(plugin, output);
             output.flush();
         }
         finally {

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/DefaultCommandRegistry.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/DefaultCommandRegistry.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/DefaultCommandRegistry.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/DefaultCommandRegistry.java Tue Jun  3 00:58:48 2008
@@ -21,8 +21,7 @@
 
 import org.apache.geronimo.gshell.model.command.Command;
 import org.apache.geronimo.gshell.plexus.GShellPlexusContainer;
-import org.apache.geronimo.gshell.plugin.CommandCollector;
-import org.apache.geronimo.gshell.plugin.PlexusCommandWrapper;
+import org.apache.geronimo.gshell.plugin.PluginCollector;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -53,7 +52,7 @@
     private GShellPlexusContainer container;
 
     @Requirement
-    private CommandCollector collector;
+    private PluginCollector collector;
     
     private Map<String, org.apache.geronimo.gshell.command.Command> commands = new HashMap<String, org.apache.geronimo.gshell.command.Command>();
 
@@ -87,15 +86,15 @@
         assert id != null;
         
         if (!commands.containsKey(id)) {
-            Command descriptor = collector.getCommandDescriptor(id);
+            Command command = collector.getCommand(id);
 
-            if (descriptor == null) {
+            if (command == null) {
                 throw new NotRegisteredException(id);
             }
 
             log.debug("Registering command id: {}", id);
             
-            register(new PlexusCommandWrapper(container, descriptor));
+            register(new PlexusCommandWrapper(container, command));
         }
     }
 

Copied: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/PlexusCommandWrapper.java (from r662630, geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PlexusCommandWrapper.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/PlexusCommandWrapper.java?p2=geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/PlexusCommandWrapper.java&p1=geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PlexusCommandWrapper.java&r1=662630&r2=662685&rev=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PlexusCommandWrapper.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/registry/PlexusCommandWrapper.java Tue Jun  3 00:58:48 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.geronimo.gshell.plugin;
+package org.apache.geronimo.gshell.registry;
 
 import org.apache.geronimo.gshell.command.CommandContext;
 import org.apache.geronimo.gshell.model.command.Command;
@@ -58,6 +58,8 @@
     public Object execute(final CommandContext context, final Object... args) throws Exception {
         assert context != null;
 
+        log.trace("Executing w/context={}, args={}", context, args);
+        
         org.apache.geronimo.gshell.command.Command command =
             container.lookupComponent(org.apache.geronimo.gshell.command.Command.class, descriptor.getId());
 

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/Model.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/Model.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/Model.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/Model.java Tue Jun  3 00:58:48 2008
@@ -19,8 +19,6 @@
 
 package org.apache.geronimo.gshell.model;
 
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
 import org.apache.geronimo.gshell.model.marshal.Marshaller;
 
 /**
@@ -33,9 +31,11 @@
 {
     private transient Marshaller marshaller;
 
+    /*
     @XStreamAlias("version")
     @XStreamAsAttribute
     private String modelVersion;
+    */
 
     public Marshaller getMarshaller() {
     	if (marshaller == null) {
@@ -49,6 +49,7 @@
         this.marshaller = marshaller;
     }
 
+    /*
     public String getModelVersion() {
         return modelVersion;
     }
@@ -56,4 +57,5 @@
     public void setModelVersion(final String modelVersion) {
         this.modelVersion = modelVersion;
     }
+    */
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/ApplicationMarshaller.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/ApplicationMarshaller.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/ApplicationMarshaller.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/ApplicationMarshaller.java Tue Jun  3 00:58:48 2008
@@ -19,10 +19,10 @@
 
 package org.apache.geronimo.gshell.model.application;
 
-import org.apache.geronimo.gshell.model.marshal.MarshallerSupport;
-import org.apache.geronimo.gshell.model.layout.CommandNode;
-import org.apache.geronimo.gshell.model.layout.AliasNode;
 import com.thoughtworks.xstream.XStream;
+import org.apache.geronimo.gshell.model.layout.AliasNode;
+import org.apache.geronimo.gshell.model.layout.CommandNode;
+import org.apache.geronimo.gshell.model.marshal.MarshallerSupport;
 
 /**
  * Marshaller for {@link Application} models.

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Branding.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Branding.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Branding.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Branding.java Tue Jun  3 00:58:48 2008
@@ -20,12 +20,11 @@
 package org.apache.geronimo.gshell.model.application;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-
 import org.apache.geronimo.gshell.model.Element;
 import org.codehaus.plexus.util.StringUtils;
 
-import java.util.Properties;
 import java.io.File;
+import java.util.Properties;
 
 /**
  * Branding configuration element.

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Command.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Command.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Command.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Command.java Tue Jun  3 00:58:48 2008
@@ -20,10 +20,8 @@
 package org.apache.geronimo.gshell.model.command;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-
 import org.apache.geronimo.gshell.model.Element;
 
-import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -36,8 +34,6 @@
 public class Command
     extends Element
 {
-    private URI source;
-
     private String id;
 
     private String implementation;
@@ -50,14 +46,6 @@
 
     private List<Requirement> requirements;
 
-    public URI getSource() {
-        return source;
-    }
-
-    public void setSource(final URI source) {
-        this.source = source;
-    }
-
     public String getId() {
         return id;
     }

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Parameter.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Parameter.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Parameter.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Parameter.java Tue Jun  3 00:58:48 2008
@@ -20,7 +20,6 @@
 package org.apache.geronimo.gshell.model.command;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-
 import org.apache.geronimo.gshell.model.Element;
 
 /**

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Requirement.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Requirement.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Requirement.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/command/Requirement.java Tue Jun  3 00:58:48 2008
@@ -20,7 +20,6 @@
 package org.apache.geronimo.gshell.model.command;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-
 import org.apache.geronimo.gshell.model.Element;
 
 /**

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java Tue Jun  3 00:58:48 2008
@@ -22,8 +22,8 @@
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import com.thoughtworks.xstream.annotations.XStreamImplicit;
 
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Groups dependency elements to allow artifact configuration to be shared.

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DescriptorSupport.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DescriptorSupport.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DescriptorSupport.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DescriptorSupport.java Tue Jun  3 00:58:48 2008
@@ -19,10 +19,10 @@
 
 package org.apache.geronimo.gshell.model.common;
 
-import java.util.Properties;
-
 import org.apache.geronimo.gshell.model.Model;
 
+import java.util.Properties;
+
 /**
  * Support for descriptor models.
  *

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java Tue Jun  3 00:58:48 2008
@@ -20,11 +20,10 @@
 package org.apache.geronimo.gshell.model.common;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.geronimo.gshell.model.Element;
 
 import java.io.File;
 
-import org.apache.geronimo.gshell.model.Element;
-
 /**
  * Local repository configuration.
  *

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java Tue Jun  3 00:58:48 2008
@@ -20,12 +20,11 @@
 package org.apache.geronimo.gshell.model.common;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
+import org.apache.geronimo.gshell.model.Element;
 
 import java.net.URI;
 import java.net.URISyntaxException;
 
-import org.apache.geronimo.gshell.model.Element;
-
 /**
  * Remote repository configuration.
  *

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/Marshaller.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/Marshaller.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/Marshaller.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/Marshaller.java Tue Jun  3 00:58:48 2008
@@ -22,8 +22,8 @@
 import org.apache.geronimo.gshell.model.Model;
 
 import java.io.InputStream;
-import java.io.Reader;
 import java.io.OutputStream;
+import java.io.Reader;
 import java.io.Writer;
 
 /**

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/MarshallerSupport.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/MarshallerSupport.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/MarshallerSupport.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/marshal/MarshallerSupport.java Tue Jun  3 00:58:48 2008
@@ -22,19 +22,18 @@
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.DomDriver;
 import com.thoughtworks.xstream.io.xml.XppDriver;
+import org.apache.geronimo.gshell.model.Model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.io.InputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.Reader;
 import java.io.StringReader;
-import java.io.OutputStream;
 import java.io.Writer;
 import java.net.URL;
 
-import org.apache.geronimo.gshell.model.Model;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * Support for model {@link Marshaller} implementations.
  *

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java Tue Jun  3 00:58:48 2008
@@ -21,8 +21,6 @@
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import org.apache.geronimo.gshell.model.command.Command;
-import org.apache.geronimo.gshell.model.common.Dependency;
-import org.apache.geronimo.gshell.model.common.DependencyGroup;
 import org.apache.geronimo.gshell.model.common.DescriptorSupport;
 import org.apache.geronimo.gshell.model.layout.Layout;
 
@@ -38,59 +36,29 @@
 public class Plugin
     extends DescriptorSupport
 {
-    //
-    // FIXME: Might not really need these here, since we are using the pom.xml information to load dependencies/plugins
-    //
-    
-    private List<Dependency> dependencies;
-
-    private List<DependencyGroup> dependencyGroups;
-
     private List<Command> commands;
 
     private Layout layout;
 
-    public List<DependencyGroup> dependencyGroups() {
-        if (dependencyGroups == null) {
-            dependencyGroups = new ArrayList<DependencyGroup>();
+    public List<Command> commands() {
+        if (commands == null) {
+            commands = new ArrayList<Command>();
         }
-
-        return dependencyGroups;
+        
+        return commands;
     }
 
-    public void add(final DependencyGroup group) {
-        assert group != null;
-
-        dependencyGroups().add(group);
+    public void add(final Command command) {
+        assert command != null;
+        
+        commands().add(command);
     }
 
-    public List<Dependency> dependencies() {
-        if (dependencies == null) {
-            dependencies = new ArrayList<Dependency>();
-        }
-
-        return dependencies;
+    public Layout getLayout() {
+        return layout;
     }
 
-    public List<Dependency> dependencies(boolean includeGroups) {
-        if (!includeGroups) {
-            return dependencies();
-        }
-
-        List<Dependency> list = new ArrayList<Dependency>();
-
-        list.addAll(dependencies());
-
-        for (DependencyGroup group : dependencyGroups()) {
-            list.addAll(group.dependencies());
-        }
-
-        return list;
-    }
-
-    public void add(final Dependency dependency) {
-        assert dependency != null;
-
-        dependencies().add(dependency);
+    public void setLayout(final Layout layout) {
+        this.layout = layout;
     }
-}
\ No newline at end of file
+}

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java Tue Jun  3 00:58:48 2008
@@ -20,13 +20,12 @@
 package org.apache.geronimo.gshell.model.settings;
 
 import com.thoughtworks.xstream.annotations.XStreamAlias;
-
 import org.apache.geronimo.gshell.model.Model;
 import org.apache.geronimo.gshell.model.common.RemoteRepository;
 
-import java.util.Properties;
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
 
 /**
  * User settings model root element.

Modified: geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/plugin/PluginMarshallerTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/plugin/PluginMarshallerTest.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/plugin/PluginMarshallerTest.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/plugin/PluginMarshallerTest.java Tue Jun  3 00:58:48 2008
@@ -50,26 +50,6 @@
         props.setProperty("a", "b");
         root.setProperties(props);
 
-        Dependency d1 = new Dependency();
-        d1.setGroupId("a");
-        d1.setArtifactId("b");
-        d1.setVersion("c");
-        root.add(d1);
-
-        DependencyGroup g1 = new DependencyGroup();
-        g1.setGroupId("d");
-        g1.setVersion("e");
-        root.add(g1);
-
-        Dependency d2 = new Dependency();
-        d2.setArtifactId("f");
-        g1.add(d2);
-
-        Dependency d3 = new Dependency();
-        d3.setArtifactId("g");
-        d3.setClassifier("h");
-        g1.add(d3);
-
         String xml = marshaller.marshal(root);
         assertNotNull(xml);
 

Modified: geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/plugin/plugin1.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/plugin/plugin1.xml?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/plugin/plugin1.xml (original)
+++ geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/plugin/plugin1.xml Tue Jun  3 00:58:48 2008
@@ -30,26 +30,4 @@
     <properties>
         <property name="a" value="b"/>
     </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>a</groupId>
-            <artifactId>b</artifactId>
-            <version>c</version>
-        </dependency>
-    </dependencies>
-
-    <dependencyGroups>
-        <dependencyGroup>
-            <groupId>d</groupId>
-            <version>e</version>
-            <dependency>
-                <artifactId>f</artifactId>
-            </dependency>
-            <dependency>
-                <artifactId>g</artifactId>
-                <classifier>h</classifier>
-            </dependency>
-        </dependencyGroup>
-    </dependencyGroups>
 </plugin>
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java (original)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java Tue Jun  3 00:58:48 2008
@@ -19,7 +19,6 @@
 
 package org.apache.geronimo.gshell.application;
 
-import org.apache.geronimo.gshell.application.DefaultEnvironment;
 import org.apache.geronimo.gshell.common.tostring.ReflectionToStringBuilder;
 import org.apache.geronimo.gshell.common.tostring.ToStringStyle;
 import org.apache.geronimo.gshell.io.IO;

Modified: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java (original)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java Tue Jun  3 00:58:48 2008
@@ -29,8 +29,8 @@
 import org.apache.geronimo.gshell.model.interpolate.InterpolatorSupport;
 import org.apache.geronimo.gshell.model.settings.Settings;
 import org.apache.geronimo.gshell.plexus.GShellPlexusContainer;
-import org.apache.geronimo.gshell.plugin.CommandCollector;
-import org.apache.geronimo.gshell.plugin.CommandDiscoverer;
+import org.apache.geronimo.gshell.plugin.PluginCollector;
+import org.apache.geronimo.gshell.plugin.PluginDiscoverer;
 import org.apache.geronimo.gshell.settings.SettingsManager;
 import org.apache.geronimo.gshell.shell.Environment;
 import org.apache.geronimo.gshell.shell.Shell;
@@ -56,9 +56,9 @@
 
 import java.io.File;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -209,12 +209,8 @@
         config.setName(application.getId());
         config.setClassWorld(world);
         config.setRealm(realm);
-        
-        // FIXME: For now use the old Command* bits to get things working, then refactor to use the new Plugin* bits
-        config.addComponentDiscoverer(new CommandDiscoverer());
-        config.addComponentDiscoveryListener(new CommandCollector());
-        // config.addComponentDiscoverer(new PluginDiscoverer());
-        // config.addComponentDiscoveryListener(new PluginCollector());
+        config.addComponentDiscoverer(new PluginDiscoverer());
+        config.addComponentDiscoveryListener(new PluginCollector());
 
         GShellPlexusContainer child = parentContainer.createChild(config);
 

Modified: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginCollector.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginCollector.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginCollector.java (original)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginCollector.java Tue Jun  3 00:58:48 2008
@@ -19,14 +19,23 @@
 
 package org.apache.geronimo.gshell.plugin;
 
+import org.apache.geronimo.gshell.model.command.Command;
+import org.apache.geronimo.gshell.model.plugin.Plugin;
+import org.apache.geronimo.gshell.plugin.descriptor.PluginDescriptor;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.discovery.ComponentDiscoveryEvent;
 import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
+import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
- * ???
+ * Collects discovered GShell plugins and makes them available for registry lookups.
  *
  * @version $Rev$ $Date$
  */
@@ -36,6 +45,10 @@
 {
     private final Logger log = LoggerFactory.getLogger(getClass());
 
+    private final List<PluginDescriptor> descriptors = new ArrayList<PluginDescriptor>();
+
+    private final Map<String,Command> commands = new LinkedHashMap<String,Command>();
+
     public String getId() {
         return getClass().getSimpleName();
     }
@@ -43,6 +56,43 @@
     public void componentDiscovered(final ComponentDiscoveryEvent event) {
         assert event != null;
 
-        // TODO: Track plugin component set descriptors
+        log.trace("Component discovered: {}", event);
+
+        ComponentSetDescriptor descriptor = event.getComponentSetDescriptor();
+
+        if (descriptor instanceof PluginDescriptor) {
+            collect((PluginDescriptor)descriptor);
+        }
+    }
+
+    private void collect(final PluginDescriptor descriptor) {
+        assert descriptor != null;
+
+        Plugin plugin = descriptor.getPlugin();
+
+        log.trace("Collecting plugin components for: {}", plugin.getId());
+
+        for (Command command : plugin.commands()) {
+            log.debug("Found command: {}", command.getId());
+            log.trace("Command model: {}", command);
+            
+            commands.put(command.getId(), command);
+        }
+
+        descriptors.add(descriptor);
+    }
+
+    public List<PluginDescriptor> getDescriptors() {
+        return descriptors;
+    }
+
+    public Map<String, Command> getCommands() {
+        return commands;
+    }
+
+    public Command getCommand(final String id) {
+        assert id != null;
+
+        return commands.get(id);
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginDiscoverer.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginDiscoverer.java?rev=662685&r1=662684&r2=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginDiscoverer.java (original)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/PluginDiscoverer.java Tue Jun  3 00:58:48 2008
@@ -21,9 +21,10 @@
 
 import org.apache.geronimo.gshell.model.plugin.Plugin;
 import org.apache.geronimo.gshell.model.plugin.PluginMarshaller;
+import org.apache.geronimo.gshell.plugin.descriptor.PluginDescriptor;
+import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.discovery.AbstractComponentDiscoverer;
 import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,7 +32,7 @@
 import java.io.Reader;
 
 /**
- * ???
+ * Handles the discovery of GShell plugins from <tt>plugin.xml</tt> models.
  *
  * @version $Rev$ $Date$
  */
@@ -55,12 +56,16 @@
         assert reader != null;
         assert source != null;
 
-        log.debug("Discovered plugin: {}", source);
+        log.trace("Loading plugin model from: {}", source);
 
         Plugin plugin = marshaller.unmarshal(reader);
 
-        // TODO: Build plexus component set descriptor
-
-        return null;
+        log.debug("Discovered plugin: {}", plugin.getId());
+        log.trace("Plugin model: {}", plugin);
+        
+        PluginDescriptor descriptor = new PluginDescriptor(plugin);
+        descriptor.setSource(source);
+        
+        return descriptor;
     }
 }
\ No newline at end of file

Added: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java?rev=662685&view=auto
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java (added)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java Tue Jun  3 00:58:48 2008
@@ -0,0 +1,120 @@
+/*
+ * 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.plugin.descriptor;
+
+import org.apache.geronimo.gshell.common.tostring.ReflectionToStringBuilder;
+import org.apache.geronimo.gshell.common.tostring.ToStringStyle;
+import org.apache.geronimo.gshell.model.command.Command;
+import org.apache.geronimo.gshell.model.command.Parameter;
+import org.apache.geronimo.gshell.model.command.Requirement;
+import org.codehaus.plexus.component.repository.ComponentDescriptor;
+import org.codehaus.plexus.component.repository.ComponentRequirement;
+import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
+
+/**
+ * Descriptor for a GShell command's plexus component.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CommandDescriptor
+    extends ComponentDescriptor
+{
+    private final Command command;
+
+    public CommandDescriptor(final Command command) {
+        assert command != null;
+
+        this.command = command;
+
+        setDescription(command.getDescription());
+
+        setAlias(null);
+
+        setRole(org.apache.geronimo.gshell.command.Command.class.getName());
+
+        setRoleHint(command.getId());
+
+        setImplementation(command.getImplementation());
+
+        setVersion(command.getVersion());
+
+        setComponentType(null);
+
+        setLifecycleHandler(null);
+
+        setComponentProfile(null);
+
+        setComponentFactory(null);
+
+        setComponentComposer(null);
+
+        setComponentConfigurator(null);
+
+        setRealmId(null);
+
+        setIsolatedRealm(false);
+
+        setInstantiationStrategy("per-lookup");
+
+        if (command.hasParameters()) {
+            XmlPlexusConfiguration root = new XmlPlexusConfiguration("configuration");
+
+            for (Parameter param : command.getParameters()) {
+                XmlPlexusConfiguration child = new XmlPlexusConfiguration(param.getName());
+
+                child.setValue(param.getValue());
+
+                root.addChild(child);
+            }
+
+            setConfiguration(root);
+        }
+
+        if (command.hasRequirements()) {
+            for (Requirement requirement : command.getRequirements()) {
+                addRequirement(translate(requirement));
+            }
+        }
+    }
+
+    public Command getCommand() {
+        return command;
+    }
+
+    private ComponentRequirement translate(final Requirement source) {
+        assert source != null;
+
+        ComponentRequirement requirement = new ComponentRequirement();
+
+        requirement.setRole(source.getType());
+
+        requirement.setRoleHint(source.getId());
+
+        requirement.setFieldName(source.getName());
+
+        requirement.setFieldMappingType(null);
+
+        return requirement;
+    }
+
+    public String toString() {
+        return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
+    }
+}
\ No newline at end of file

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/CommandDescriptor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java (from r662630, geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentSetDescriptorAdapter.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java?p2=geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java&p1=geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentSetDescriptorAdapter.java&r1=662630&r2=662685&rev=662685&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/ComponentSetDescriptorAdapter.java (original)
+++ geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java Tue Jun  3 00:58:48 2008
@@ -17,59 +17,53 @@
  * under the License.
  */
 
-package org.apache.geronimo.gshell.plugin;
+package org.apache.geronimo.gshell.plugin.descriptor;
 
 import org.apache.geronimo.gshell.common.tostring.ReflectionToStringBuilder;
 import org.apache.geronimo.gshell.common.tostring.ToStringStyle;
 import org.apache.geronimo.gshell.model.command.Command;
-import org.apache.geronimo.gshell.model.command.CommandSet;
-import org.codehaus.plexus.component.repository.ComponentDescriptor;
+import org.apache.geronimo.gshell.model.plugin.Plugin;
 import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
 
 /**
- * ???
+ * Descriptor for a GShell plugin's plexus component set.
  *
  * @version $Rev$ $Date$
  */
-public class ComponentSetDescriptorAdapter
+public class PluginDescriptor
     extends ComponentSetDescriptor
 {
-    private final CommandSet commands;
+    private final Plugin plugin;
 
-    public ComponentSetDescriptorAdapter(final CommandSet commands) {
-        assert commands != null;
+    public PluginDescriptor(final Plugin plugin) {
+        assert plugin != null;
 
-        this.commands = commands;
+        this.plugin = plugin;
 
-        setId(commands.getId());
+        setId(plugin.getId());
 
         setIsolatedRealm(false);
 
-        if (!commands.isEmpty()) {
-            for (Command command : commands.getCommands()) {
-                ComponentDescriptor component = new ComponentDescriptorAdapter(command);
-                
-                addComponentDescriptor(component);
-
-                //
-                // TODO: Should we attach our selves?
-                //
-                // component.setComponentSetDescriptor(this);
-            }
+        for (Command command : plugin.commands()) {
+            addCommand(command);
         }
+    }
 
-        //
-        // TODO: Need to figure out dependencies
-        //
+    private void addCommand(final Command command) {
+        assert command != null;
         
-        setDependencies(null);
+        CommandDescriptor descriptor = new CommandDescriptor(command);
+        descriptor.setComponentSetDescriptor(this);
+        descriptor.setSource(getSource());
+
+        addComponentDescriptor(descriptor);
     }
 
-    public String toString() {
-        return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
+    public Plugin getPlugin() {
+        return plugin;
     }
 
-    public CommandSet getCommands() {
-        return commands;
+    public String toString() {
+        return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
     }
-}
+}
\ No newline at end of file

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-plugin/src/main/java/org/apache/geronimo/gshell/plugin/descriptor/PluginDescriptor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain