You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2009/12/29 08:54:01 UTC

svn commit: r894321 [1/2] - in /geronimo/server/trunk/framework/modules/geronimo-shell-base: ./ src/main/java/org/apache/geronimo/shell/ src/main/java/org/apache/geronimo/shell/cluster/ src/main/java/org/apache/geronimo/shell/completers/ src/main/java/...

Author: genspring
Date: Tue Dec 29 07:53:50 2009
New Revision: 894321

URL: http://svn.apache.org/viewvc?rev=894321&view=rev
Log:
GERONIMO-4948 To migrate existing geronimo gshell commands to karaf based shell. --- committing migrated commands into shell-base.  Thanks Vanessa for her help. 

Added:
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/ClusterCommand.java
      - copied, changed from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ClusterCommand.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/AssembleServerCommand.java
      - copied, changed from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/AssembleServerCommand.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ConnectCommand.java
      - copied, changed from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConnectCommand.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/ProcessLauncher.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/ServerProxy.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/StartClientCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/StartServerCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/StartServerstrapper.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/StopServerCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/WaitForServerCommand.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/resources/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/resources/OSGI-INF/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/resources/OSGI-INF/blueprint/
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/resources/OSGI-INF/blueprint/shell-deploy.xml   (with props)
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/resources/OSGI-INF/blueprint/shell-geronimo.xml   (with props)
Removed:
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/AssembleServerCommand.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ClusterCommand.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConnectCommand.java
Modified:
    geronimo/server/trunk/framework/modules/geronimo-shell-base/pom.xml
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/BaseCommandSupport.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConfigurationManagerCommandSupport.java
    geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/KernelCommandSupport.java

Modified: geronimo/server/trunk/framework/modules/geronimo-shell-base/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/pom.xml?rev=894321&r1=894320&r2=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/pom.xml (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/pom.xml Tue Dec 29 07:53:50 2009
@@ -10,8 +10,9 @@
     </parent>
     <groupId>org.apache.geronimo.framework</groupId>
     <artifactId>geronimo-shell-base</artifactId>
+    <packaging>bundle</packaging>
     <version>3.0-SNAPSHOT</version>
-    <name>geronimo-shell-base</name>
+    <name>Apache Geronimo :: Shell</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.geronimo.framework</groupId>
@@ -36,5 +37,16 @@
             <artifactId>org.apache.felix.karaf.shell.console</artifactId>
             <version>1.1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
     </dependencies>
 </project>

Modified: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/BaseCommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/BaseCommandSupport.java?rev=894321&r1=894320&r2=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/BaseCommandSupport.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/BaseCommandSupport.java Tue Dec 29 07:53:50 2009
@@ -32,6 +32,7 @@
 /**
  * @version $Rev$ $Date$
  */
+
 public abstract class BaseCommandSupport extends OsgiCommandSupport implements ConsoleReader {
 
 

Modified: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConfigurationManagerCommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConfigurationManagerCommandSupport.java?rev=894321&r1=894320&r2=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConfigurationManagerCommandSupport.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConfigurationManagerCommandSupport.java Tue Dec 29 07:53:50 2009
@@ -27,6 +27,7 @@
 /**
  * @version $Rev$ $Date$
  */
+
 public abstract class ConfigurationManagerCommandSupport extends KernelCommandSupport {
     protected void doExecute(Kernel kernel) throws Exception {
         ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);

Modified: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/KernelCommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/KernelCommandSupport.java?rev=894321&r1=894320&r2=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/KernelCommandSupport.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/KernelCommandSupport.java Tue Dec 29 07:53:50 2009
@@ -26,18 +26,19 @@
 /**
  * @version $Rev$ $Date$
  */
+
 public abstract class KernelCommandSupport extends BaseCommandSupport {
     protected Object doExecute() throws Exception {
 
         ServiceReference ref = getBundleContext().getServiceReference(Kernel.class.getName());
         if (ref == null) {
-            System.out.println("FeaturesService service is unavailable.");
+            println("FeaturesService service is unavailable.");
             return null;
         }
         try {
             Kernel kernel = (Kernel) getBundleContext().getService(ref);
             if (kernel == null) {
-                System.out.println("FeaturesService service is unavailable.");
+                println("FeaturesService service is unavailable.");
                 return null;
             }
 

Copied: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/ClusterCommand.java (from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ClusterCommand.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/ClusterCommand.java?p2=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/ClusterCommand.java&p1=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ClusterCommand.java&r1=894297&r2=894321&rev=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ClusterCommand.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/cluster/ClusterCommand.java Tue Dec 29 07:53:50 2009
@@ -18,7 +18,7 @@
  */
 
 
-package org.apache.geronimo.shell;
+package org.apache.geronimo.shell.cluster;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -36,6 +36,7 @@
 import org.apache.geronimo.deployment.cli.ServerConnection;
 import org.apache.geronimo.deployment.cli.CommandListConfigurations;
 import org.apache.geronimo.deployment.plugin.jmx.RemoteDeploymentManager;
+import org.apache.geronimo.shell.deploy.ConnectCommand;
 import org.apache.geronimo.system.plugin.Farm;
 import org.apache.geronimo.system.plugin.DownloadResults;
 
@@ -44,6 +45,7 @@
 /**
  * @version $Rev$ $Date$
  */
+
 @Command(scope = "geronimo", name = "cluster", description = "administer cluster")
 public class ClusterCommand extends ConnectCommand {
     @Option(name="-c", aliases={"--cluster"}, description="Cluster to perform action on")

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,84 @@
+/*
+ * 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.shell.completers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.felix.karaf.shell.console.Completer;
+import org.apache.felix.karaf.shell.console.completer.StringsCompleter;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.cm.ConfigurationEvent;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+public class GeronimoCompleter implements Completer {
+
+    private final StringsCompleter delegate = new StringsCompleter();
+
+    private ConfigurationAdmin admin;
+
+    public void setAdmin(ConfigurationAdmin admin) {
+        this.admin = admin;
+    }
+
+    public void init() {
+        Configuration[] configs;
+        try {
+            configs = admin.listConfigurations(null);
+            if (configs == null) {
+                return;
+            }
+        } catch (Exception e) {
+            return;
+        }
+
+        Collection<String> pids = new ArrayList<String>();
+
+        for (Configuration config : configs) {
+            if (config.getFactoryPid() != null) {
+                pids.add(config.getFactoryPid());
+            } else {
+                pids.add(config.getPid());
+            }
+        }
+
+        delegate.getStrings().addAll(pids);
+
+    }
+
+    public int complete(final String buffer, final int cursor, final List candidates) {
+        return delegate.complete(buffer, cursor, candidates);
+    }
+
+    public void configurationEvent(ConfigurationEvent configurationEvent) {
+        String pid = configurationEvent.getFactoryPid()!=null ? configurationEvent.getFactoryPid() : configurationEvent.getPid();
+        if (configurationEvent.getType() == ConfigurationEvent.CM_DELETED) {
+            delegate.getStrings().remove(pid);
+        } else if (configurationEvent.getType() == ConfigurationEvent.CM_UPDATED) {
+            delegate.getStrings().add(pid);
+        }
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/completers/GeronimoCompleter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/AssembleServerCommand.java (from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/AssembleServerCommand.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/AssembleServerCommand.java?p2=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/AssembleServerCommand.java&p1=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/AssembleServerCommand.java&r1=894297&r2=894321&rev=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/AssembleServerCommand.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/AssembleServerCommand.java Tue Dec 29 07:53:50 2009
@@ -18,11 +18,8 @@
  */
 
 
-package org.apache.geronimo.shell;
 
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.IOException;
+package org.apache.geronimo.shell.deploy;
 
 import java.util.List;
 
@@ -34,16 +31,14 @@
 import org.apache.geronimo.deployment.cli.CommandListConfigurations;
 import org.apache.geronimo.deployment.plugin.GeronimoDeploymentManager;
 import org.apache.geronimo.kernel.repository.Artifact;
-import org.apache.geronimo.system.plugin.model.PluginArtifactType;
 import org.apache.geronimo.system.plugin.model.PluginListType;
-import org.apache.geronimo.system.plugin.model.PluginType;
 
-import org.osgi.service.command.CommandSession;
 
 /**
  * @version $Rev$ $Date$
  */
-@Command(scope = "geronimo", name = "assemble-server", description = "Extract a geronimo server from the current one")
+
+@Command(scope = "deploy", name = "assemble-server", description = "Extract a geronimo server from the current one")
 public class AssembleServerCommand extends ConnectCommand {
     @Option (name = "-l", aliases = {"--list"}, description = "refresh plugin list")
     boolean refreshList = false;

Copied: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ConnectCommand.java (from r894297, geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConnectCommand.java)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ConnectCommand.java?p2=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ConnectCommand.java&p1=geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConnectCommand.java&r1=894297&r2=894321&rev=894321&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/ConnectCommand.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ConnectCommand.java Tue Dec 29 07:53:50 2009
@@ -18,13 +18,11 @@
  */
 
 
-package org.apache.geronimo.shell;
 
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
+package org.apache.geronimo.shell.deploy;
+
 import java.io.IOException;
 
-import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
 import org.apache.geronimo.deployment.cli.ServerConnection;
@@ -32,31 +30,32 @@
 import org.apache.geronimo.deployment.plugin.factories.BaseDeploymentFactory;
 import org.apache.geronimo.cli.deployer.ConnectionParamsImpl;
 import org.apache.geronimo.kernel.basic.BasicKernel;
+import org.apache.geronimo.shell.BaseCommandSupport;
 
 import org.osgi.service.command.CommandSession;
 
 /**
  * @version $Rev$ $Date$
  */
-@Command(scope = "geronimo", name = "connect", description = "Connect to a Geronimo server")
+@Command(scope = "deploy", name = "connect", description = "Connect to a Geronimo server")
 public class ConnectCommand extends BaseCommandSupport {
     // the environment variable name use to store the session. 1
     public static final String SERVER_CONNECTION = "geronimo.ServerConnection";
 
     @Option(name="-s", aliases={"--hostname", "--server"}, description="Hostname, default localhost", required = false, multiValued = false)
-    String hostname = "localhost";
+    protected String hostname = "localhost";
 
     @Option(name="-p", aliases={"--port"}, description="Port, default 1099", required = false, multiValued = false)
-    int port = 1099;
+    protected int port = 1099;
 
     @Option(name="-u", aliases={"--username"}, description="Username", required = false, multiValued = false)
-    String username;
+    protected String username;
 
     @Option(name="-w", aliases={"--password"}, description="Password", required = false, multiValued = false)
-    String password;
+    protected String password;
 
     @Option(name="--secure", description="Use secure channel", required = false, multiValued = false)
-    boolean secure = false;
+    protected boolean secure = false;
 
     /**
      * Base execution method.  This serves as both the body
@@ -113,7 +112,7 @@
 
         if (connection != null) {
             try {
-            	connection.close();
+                connection.close();
             }
             catch (Exception e) {
                 // ignore
@@ -136,7 +135,7 @@
      */
     protected ServerConnection openConnection(boolean quiet) throws Exception {
         if (!quiet) {
-        	println("Connecting to Geronimo server: " + hostname + ":" + port);
+            println("Connecting to Geronimo server: " + hostname + ":" + port);
         }
 
         BasicKernel kernel = new BasicKernel("Geronimo deployer", getBundleContext());

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,75 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.cli.deployer.DistributeCommandArgs;
+import org.apache.geronimo.cli.deployer.DistributeCommandArgsImpl;
+import org.apache.geronimo.deployment.cli.CommandDeploy;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "deploy-module", description = "Deploy a module")
+public class DeployModuleCommand extends ConnectCommand {
+
+    @Option(name = "-i", aliases = { "--inPlace" }, description = "In-place deployment")
+    boolean inPlace;
+
+    @Option(name = "-t", aliases = { "--targets" }, description = "Targets")
+    String targets;
+
+    @Argument(required = true, index = 0, description = "Module file")
+    String module;
+
+    @Argument(index = 1, description = "Module plan")
+    String modulePlan;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        CommandDeploy command = new CommandDeploy();
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        List<String> commandArgs = new LinkedList<String>();
+        commandArgs.add(module);
+
+        if (modulePlan != null) {
+            commandArgs.add(modulePlan);
+        }
+
+        DistributeCommandArgs args = new DistributeCommandArgsImpl(commandArgs.toArray(new String[commandArgs.size()]));
+
+        command.execute(consoleReader, connection, args);
+
+        return null;
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DeployModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,53 @@
+/*
+ * 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.shell.deploy;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "disconnect", description = "Disconnect from a Geronimo server")
+public class DisconnectCommand extends ConnectCommand {
+    @Override
+    protected Object doExecute() throws Exception {
+
+        ServerConnection connection = (ServerConnection) session.get(ConnectCommand.SERVER_CONNECTION);
+
+        if (connection != null) {
+            println("Disconnecting from Geronimo server");
+
+            try {
+                connection.close();
+            } catch (Exception e) {
+                // ignore
+            }
+
+            // session.close();
+
+            println("Connection ended");
+        } else {
+            println("Not connected");
+        }
+        return null;
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DisconnectCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,99 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.cli.deployer.DistributeCommandArgs;
+import org.apache.geronimo.deployment.cli.CommandDistribute;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "distribute-module", description = "Distribute a module")
+public class DistributeCommand extends ConnectCommand {
+
+    @Option(name = "-i", aliases = { "--inPlace" }, description = "In-place deployment")
+    boolean inPlace;
+
+    @Option(name = "-t", aliases = { "--targets" }, description = "Targets")
+    String targets;
+
+    @Argument(required = true, index = 0, description = "Module file")
+    String module;
+
+    @Argument(index = 1, description = "Module plan")
+    String modulePlan;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        CommandDistribute command = new CommandDistribute();
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        List<String> commandArgs = new LinkedList<String>();
+        commandArgs.add(module);
+
+        if (modulePlan != null) {
+            commandArgs.add(modulePlan);
+        }
+
+        DistributeCommandArgs args = new DistributeCommandArgsImpl(commandArgs.toArray(new String[commandArgs.size()]),
+                (targets == null ? new String[0] : targets.split(";")), inPlace);
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+
+}
+
+class DistributeCommandArgsImpl implements DistributeCommandArgs {
+    String[] args;
+
+    String[] targets;
+
+    boolean inPlace;
+
+    public DistributeCommandArgsImpl(String[] args, String[] targets, boolean inPlace) {
+        this.args = args;
+        this.targets = targets;
+        this.inPlace = inPlace;
+    }
+
+    public String[] getTargets() {
+        return targets;
+    }
+
+    public boolean isInPlace() {
+        return inPlace;
+    }
+
+    public String[] getArgs() {
+        return args;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/DistributeCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,80 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.Arrays;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.cli.deployer.InstallLibraryCommandArgs;
+import org.apache.geronimo.deployment.cli.CommandInstallLibrary;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "install-library", description = "Install library")
+public class InstallLibraryCommand extends ConnectCommand {
+
+    @Option(name = "-g", aliases = { "--groupId" }, description = "Group id")
+    String groupId;
+
+    @Argument(required = true, description = "Library file")
+    String libraryFile;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        CommandInstallLibrary command = new CommandInstallLibrary();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        InstallLibraryCommandArgs args = new InstallLibraryCommandArgsImpl(Arrays.asList(libraryFile).toArray(
+                new String[1]), groupId);
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+
+}
+
+class InstallLibraryCommandArgsImpl implements InstallLibraryCommandArgs {
+    String[] args;
+
+    String groupId;
+
+    public InstallLibraryCommandArgsImpl(String[] args, String groupId) {
+        this.args = args;
+        this.groupId = groupId;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public String[] getArgs() {
+        return args;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallLibraryCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,54 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.CommandInstallCAR;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "install-plugin", description = "Install plugin")
+public class InstallPluginCommand extends ConnectCommand {
+
+    @Argument(required = true, description = "Plugin file")
+    String pluginFile;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        CommandInstallCAR command = new CommandInstallCAR();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(pluginFile.split(""));
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/InstallPluginCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,100 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.cli.deployer.ListModulesCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandListModules;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "list-modules", description = "List modules")
+public class ListModulesCommand extends ConnectCommand {
+
+    @Option(name = "-a", aliases = { "--all" }, description = "Show started or stopped modules")
+    boolean all = true;
+
+    @Option(name = "-t", aliases = { "--stopped" }, description = "Show stopped modules only")
+    boolean stopped = false;
+
+    @Option(name = "-r", aliases = { "--started" }, description = "Show started modules only")
+    boolean started = false;
+
+    @Argument(description = "Target name")
+    List<String> targets;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandListModules();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        ListModulesCommandArgs args = new ListModulesCommandArgsImpl((targets == null ? new String[0]
+                : (String[]) targets.toArray()), all, started, stopped);
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+
+}
+
+class ListModulesCommandArgsImpl implements ListModulesCommandArgs {
+    String[] args;
+
+    boolean all;
+
+    boolean started;
+
+    boolean stopped;
+
+    public ListModulesCommandArgsImpl(String[] args, boolean all, boolean started, boolean stopped) {
+        this.all = all;
+        this.args = args;
+        this.started = started;
+        this.stopped = stopped;
+    }
+
+    public boolean isAll() {
+        return all;
+    }
+
+    public boolean isStarted() {
+        return started;
+    }
+
+    public boolean isStopped() {
+        return stopped;
+    }
+
+    public String[] getArgs() {
+        return args;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListModulesCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,100 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.deployment.cli.CommandListConfigurations;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+import org.apache.geronimo.deployment.plugin.GeronimoDeploymentManager;
+import org.apache.geronimo.system.plugin.model.PluginListType;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "list-plugins", description = "List plugins")
+public class ListPluginsCommand extends ConnectCommand {
+
+    @Option(name = "-rr", aliases = { "--refresh-repository" }, description = "refresh repository")
+    boolean refreshRepo = false;
+
+    @Option(name = "-rl", aliases = { "--refresh-list" }, description = "refresh plugin list")
+    boolean refreshList = false;
+
+    @Option(name = "-r", aliases = { "--respository" }, description = "Repository URL")
+    String mavenRepoURL;
+
+    @Argument(multiValued = true)
+    List<String> pluginArtifacts;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        CommandListConfigurations command = new CommandListConfigurations();
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+        String repo = null;
+        PluginListType plugins = null;
+
+        if (mavenRepoURL != null) {
+            plugins = command.getPluginCategories(mavenRepoURL, (GeronimoDeploymentManager) connection
+                    .getDeploymentManager(), consoleReader);
+            repo = mavenRepoURL;
+        } else {
+            println("Listing configurations from Geronimo server");
+
+            repo = (String) session.get("PluginRepository");
+            if (refreshRepo || repo == null) {
+                repo = command.getRepository(consoleReader, (GeronimoDeploymentManager) connection
+                        .getDeploymentManager());
+                session.put("PluginRepository", repo);
+            }
+
+            plugins = (PluginListType) session.get("AvailablePlugins");
+            if (refreshList || plugins == null) {
+                plugins = command.getPluginCategories(repo, (GeronimoDeploymentManager) connection
+                        .getDeploymentManager(), consoleReader);
+                session.put("AvailablePlugins", plugins);
+            }
+        }
+
+        if (plugins != null) {
+            if (pluginArtifacts != null) {
+                command.installPlugins((GeronimoDeploymentManager) connection.getDeploymentManager(), pluginArtifacts,
+                        plugins, repo, consoleReader, connection);
+            } else {
+                PluginListType pluginsToInstall = command.getInstallList(plugins, consoleReader, repo);
+
+                if (pluginsToInstall != null) {
+                    command.installPlugins((GeronimoDeploymentManager) connection.getDeploymentManager(),
+                            pluginsToInstall, repo, consoleReader, connection);
+                }
+            }
+        }
+
+        println("list ended");
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListPluginsCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,48 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandListTargets;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "list-targets", description = "List targets")
+public class ListTargetsCommand extends ConnectCommand {
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandListTargets();
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+        BaseCommandArgs args = new BaseCommandArgs(new String[1]);
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/ListTargetsCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,50 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandLogin;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "login", description = "Saves the username and password for this connection")
+public class LoginCommand extends ConnectCommand {
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandLogin();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(new String[0]);
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/LoginCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,57 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import javax.enterprise.deploy.spi.DeploymentManager;
+
+import jline.ConsoleReader;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.plugin.jmx.RemoteDeploymentManager;
+import org.apache.geronimo.system.plugin.NewServerInstance;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "new-server-instance", description = "Create new server instance in a server")
+public class NewInstanceCommand extends ConnectCommand {
+
+    @Argument(required = true, description = "Name of new server instance")
+    String serverName;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        ConsoleReader consoleReader = new ConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+        String repo = null;
+        String plugins = null;
+
+        DeploymentManager deploymentManager = connection.getDeploymentManager();
+        NewServerInstance newServerInstance = (NewServerInstance) ((RemoteDeploymentManager) deploymentManager)
+                .getImplementation(NewServerInstance.class);
+        newServerInstance.newServerInstance(serverName);
+        println("Server created");
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/NewInstanceCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,77 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandRedeploy;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "redeploy-module", description = "Redeploy a module")
+public class RedeployModuleCommand extends ConnectCommand {
+
+    @Argument(index = 0, description = "Module file")
+    String moduleName;
+
+    @Argument(index = 1, description = "Module plan")
+    String modulePlan;
+
+    @Argument(index = 2, description = "Module id")
+    List<String> moduleIds;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandRedeploy();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        List<String> commandArgs = new LinkedList<String>();
+
+        if (moduleName != null) {
+            commandArgs.add(moduleName);
+        }
+
+        if (modulePlan != null) {
+            commandArgs.add(modulePlan);
+        }
+
+        if (moduleIds != null) {
+            commandArgs.addAll(moduleIds);
+        }
+
+        BaseCommandArgs args = new BaseCommandArgs(commandArgs.toArray(new String[commandArgs.size()]));
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RedeployModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,55 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandRestart;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "restart-module", description = "Restart a module")
+public class RestartModuleCommand extends ConnectCommand {
+
+    @Argument(required = true, multiValued = true, description = "Module name")
+    List<String> moduleNames;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandRestart();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(moduleNames.toArray(new String[moduleNames.size()]));
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/RestartModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,55 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandStart;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "start-module", description = "Start a module")
+public class StartModuleCommand extends ConnectCommand {
+
+    @Argument(required = true, description = "Module name")
+    String moduleNames;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandStart();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(moduleNames.split(" "));
+
+        command.execute(consoleReader, connection, args);
+
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StartModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,56 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandStop;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "stop-module", description = "Stop a module")
+public class StopModuleCommand extends ConnectCommand {
+
+    @Argument(required = true, description = "Module name")
+    String moduleNames;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandStop();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(moduleNames.split(" "));
+
+        command.execute(consoleReader, connection, args);
+
+        return null;
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/StopModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,55 @@
+/*
+ * 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.shell.deploy;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.geronimo.cli.deployer.BaseCommandArgs;
+import org.apache.geronimo.deployment.cli.AbstractCommand;
+import org.apache.geronimo.deployment.cli.CommandUndeploy;
+import org.apache.geronimo.deployment.cli.ConsoleReader;
+import org.apache.geronimo.deployment.cli.ServerConnection;
+import org.apache.geronimo.deployment.cli.StreamConsoleReader;
+/**
+ * @version $Rev$ $Date$
+ */
+@Command(scope = "deploy", name = "undeploy-module", description = "Undeploy a module")
+public class UndeployModuleCommand extends ConnectCommand {
+
+    @Argument(required = true, multiValued = true, description = "Module name")
+    List<String> moduleNames;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        ServerConnection connection = connect();
+
+        AbstractCommand command = new CommandUndeploy();
+
+        ConsoleReader consoleReader = new StreamConsoleReader(session.getKeyboard(),new PrintWriter(session.getConsole(),true));
+
+        BaseCommandArgs args = new BaseCommandArgs(moduleNames.toArray(new String[moduleNames.size()]));
+
+        command.execute(consoleReader, connection, args);
+        return null;
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/deploy/UndeployModuleCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,94 @@
+/*
+ * 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.shell.geronimo;
+
+import java.io.PrintStream;
+
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.slf4j.Logger;
+/**
+ * @version $Rev$ $Date$
+ */
+public class AntBuilder {
+    Project project;
+
+    public AntBuilder(final Logger log) {
+        project = new Project();
+        project.addBuildListener(new OutputAdapter(log));
+        project.init();
+        project.getBaseDir();
+
+    }
+    
+    public Task createTask(String task){
+        return project.createTask(task);
+    }
+
+    private static class OutputAdapter extends DefaultLogger {
+        private Logger log;
+
+        public OutputAdapter(final Logger log) {
+            assert log != null;
+
+            this.log = log;
+
+            setOutputPrintStream(new PrintStream(System.out, true));
+            setErrorPrintStream(new PrintStream(System.err, true));
+            setEmacsMode(true);
+
+            String level = System.getProperty("gshell.log.console.level");
+            if ("DEBUG".equals(level)) {
+                setMessageOutputLevel(Project.MSG_DEBUG);
+            } else {
+                setMessageOutputLevel(Project.MSG_INFO);
+            }
+        }
+
+        protected void printMessage(final String message, final PrintStream stream, final int priority) {
+            assert message != null;
+            assert stream != null;
+
+            switch (priority) {
+            case Project.MSG_ERR:
+                log.error(message);
+                break;
+
+            case Project.MSG_WARN:
+                log.warn(message);
+                break;
+
+            case Project.MSG_INFO:
+                stream.println(message);
+                break;
+
+            case Project.MSG_VERBOSE:
+            case Project.MSG_DEBUG:
+                log.debug(message);
+                break;
+
+            default:
+                // Should never happen
+                throw new Error("Invalid priority: " + priority);
+            }
+        }
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/AntBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java?rev=894321&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java Tue Dec 29 07:53:50 2009
@@ -0,0 +1,177 @@
+/*
+ * 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.shell.geronimo;
+
+import java.io.File;
+import java.net.InetAddress;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.felix.gogo.commands.Option;
+import org.apache.geronimo.shell.BaseCommandSupport;
+/**
+ * @version $Rev$ $Date$
+ */
+public class BaseJavaCommand extends BaseCommandSupport {
+
+    AntBuilder ant;
+
+    // @Option(required=true, name = "shellInfo")
+    // ShellInfo shellInfo;
+
+    @Option(name = "-H", aliases = { "--home" }, description = "Use a specific Geronimo home directory")
+    String geronimoHome;
+
+    @Option(name = "-j", aliases = { "--jvm" }, description = "Use a specific Java Virtual Machine for server process")
+    String javaVirtualMachine;
+
+    @Option(name = "-A", aliases = { "--javaagent" }, description = "Use a specific Java Agent, set to \"none\" to disable")
+    String javaAgent;
+
+    @Option(name = "-l", aliases = { "--logfile" }, description = "Capture console output to file")
+    String logFile;
+
+    @Option(name = "-b", aliases = { "--background" }, description = "Run the server process in the background")
+    boolean background = false;
+
+    @Option(name = "-t", aliases = { "--timeout" }, description = "Specify the timeout for the server process in seconds")
+    int timeout = -1;
+
+    @Option(name = "-P", aliases = { "--profile" }, multiValued = true, description = "Select a configuration profile")
+    List<String> profiles;
+
+    Map<String, String> properties = new HashMap<String, String>();;
+
+    protected void addPropertyFrom(final String nameValue, final String prefix) {
+        assert nameValue != null;
+
+        String name, value;
+        int i = nameValue.indexOf("=");
+
+        if (i == -1) {
+            name = nameValue;
+            value = Boolean.TRUE.toString();
+        } else {
+            name = nameValue.substring(0, i);
+            value = nameValue.substring(i + 1, nameValue.length());
+        }
+        name = name.trim();
+
+        if (prefix != null) {
+            name = prefix + name;
+        }
+
+        properties.put(name, value);
+    }
+
+    @Option(name = "-D", aliases = { "--property" }, multiValued = true, description = "Define system properties")
+    List<String> propertyFrom;
+
+    @Option(name = "-G", aliases = { "--gproperty" }, multiValued = true, description = "Define an org.apache.geronimo property")
+    List<String> gPropertyFrom;
+
+    @Option(name = "-J", aliases = { "--javaopt" }, description = "Set a JVM flag")
+    List<String> javaFlags;
+
+    protected File getJavaAgentJar() {
+        File file = new File(geronimoHome, "bin/jpa.jar");
+
+        if (javaAgent != null) {
+            if (javaAgent.toLowerCase() == "none") {
+                file = null;
+            } else {
+                file = new File(javaAgent);
+
+                if (!file.exists()) {
+                    log.warn("Disabling Java Agent support; missing jar: "+ file);
+                    file = null;
+                }
+            }
+        }
+
+        return file;
+    }
+/*
+ * No need of rc.d
+ * definely need java6 and totally change the way server started
+ */
+    /**
+     * Process custom rc.d scripts.
+     
+    protected void processScripts() {
+        //
+        // FIXME: Make the base directory configurable
+        //
+        
+        File basedir = new File(geronimoHome, "etc/rc.d");
+        if (!basedir.exists()) {
+            log.debug("Skipping script processing; missing base directory: "+basedir);
+            return;
+        }
+        
+        // Use the target commands name (not the alias name)
+        String name = context.info.name;
+        
+        def scanner = ant.fileScanner {
+            fileset(dir: basedir) {
+                include(name: "${name},*.groovy");
+            }
+        }
+        
+        Binding binding = new Binding([command: this, log: log, io: io]);
+        GroovyShell shell = new GroovyShell(binding);
+        
+        for (file in scanner) {
+            log.debug("Evaluating script: "+file);
+            
+            // Use InputStream method to avoid classname problems from the file's name
+            shell.evaluate(file.newInputStream());
+        }
+    }
+    */
+    
+    protected String prefixSystemPath(final String name, final File file) {
+        assert name != null;
+        assert file != null;
+
+        String path = file.getPath();
+        String prop = System.getProperty(name, "");
+        if (prop != null) {
+            path += File.pathSeparator + prop;
+        }
+
+        return path;
+    }
+
+    @Override
+    protected Object doExecute() throws Exception {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}
+
+interface ShellInfo {
+    File getHomeDir();
+
+    InetAddress getLocalHost();
+
+    String getUserName();
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-shell-base/src/main/java/org/apache/geronimo/shell/geronimo/BaseJavaCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native