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 2006/05/04 10:12:12 UTC

svn commit: r399598 [1/2] - in /geronimo/sandbox/gshell: ./ trunk/ trunk/gshell-cli/ trunk/gshell-cli/src/ trunk/gshell-cli/src/main/ trunk/gshell-cli/src/main/assembly/ trunk/gshell-cli/src/main/config/ trunk/gshell-cli/src/main/java/ trunk/gshell-cli...

Author: jdillon
Date: Thu May  4 01:12:04 2006
New Revision: 399598

URL: http://svn.apache.org/viewcvs?rev=399598&view=rev
Log:
Initial GShell impl with echo and cat functional commands, pending some help stilll though to be really functional

Added:
    geronimo/sandbox/gshell/
    geronimo/sandbox/gshell/trunk/
    geronimo/sandbox/gshell/trunk/gshell-cli/
    geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/README.txt   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat   (with props)
    geronimo/sandbox/gshell/trunk/gshell-commands/
    geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/
    geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/
    geronimo/sandbox/gshell/trunk/gshell-core/pom.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/util/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/util/Banner.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/util/Version.java   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/META-INF/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/META-INF/spring/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/META-INF/spring/components.xml   (with props)
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/util/
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/util/version.properties   (with props)
    geronimo/sandbox/gshell/trunk/pom.xml   (with props)

Added: geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt Thu May  4 01:12:04 2006
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/LICENSE.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-cli/README.txt
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/README.txt?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/README.txt (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/README.txt Thu May  4 01:12:04 2006
@@ -0,0 +1 @@
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id -->
+
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.geronimo.gshell</groupId>
+        <artifactId>gshell</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <artifactId>gshell-cli</artifactId>
+    <name>GShell :: CLI</name>
+    <packaging>jar</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>gshell-core</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>standard-commands</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>classworlds</groupId>
+            <artifactId>classworlds</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+        </dependency>
+    </dependencies>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <descriptors>
+                        <descriptor>src/main/assembly/bin.xml</descriptor>
+                    </descriptors>
+                    <finalName>gshell-${pom.version}</finalName>
+                </configuration>
+                
+                <!--
+                
+                FIXME: Stupid assembly plugin does not root itself correctly
+                
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>directory</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                -->
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id -->
+
+<assembly>
+    <id>bin</id>
+    
+    <formats>
+        <format>tar.gz</format>
+        <format>tar.bz2</format>
+        <format>zip</format>
+    </formats>
+    
+    <fileSets>
+        <fileSet>
+            <includes>
+                <include>README.txt</include>
+                <include>LICENSE.txt</include>
+            </includes>
+        </fileSet>
+        
+        <fileSet>
+            <directory>src/main/scripts</directory>
+            <outputDirectory>bin</outputDirectory>
+            <includes>
+                <include>gshell.bat</include>
+                <include>gshell.conf</include>
+            </includes>
+            <lineEnding>dos</lineEnding>
+        </fileSet>
+        
+        <fileSet>
+            <directory>src/main/scripts</directory>
+            <outputDirectory>bin</outputDirectory>
+            <includes>
+                <include>gshell</include>
+            </includes>
+            <lineEnding>unix</lineEnding>
+            <fileMode>0755</fileMode>
+        </fileSet>
+        
+        <fileSet>
+            <directory>src/main/config</directory>
+            <outputDirectory>etc</outputDirectory>
+        </fileSet>
+        
+        <fileSet>
+            <directory>target</directory>
+            <outputDirectory>lib</outputDirectory>
+            <includes>
+                <include>gshell-cli-*.jar</include>
+            </includes>
+            <excludes>
+                <exclude>gshell-cli-*-sources.jar</exclude>
+            </excludes>
+        </fileSet>
+    </fileSets>
+    
+    <dependencySets>
+    		<dependencySet>
+            <outputDirectory>lib</outputDirectory>
+            <excludes>
+                <exclude>classworlds:classworlds</exclude>
+            </excludes>
+        </dependencySet>
+        
+    		<dependencySet>
+            <outputDirectory>lib/boot</outputDirectory>
+            <includes>
+                <include>classworlds:classworlds</include>
+            </includes>
+        </dependencySet>
+    </dependencySets>
+</assembly>

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/assembly/bin.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf Thu May  4 01:12:04 2006
@@ -0,0 +1,14 @@
+##
+## $Id$
+##
+
+main is org.apache.geronimo.gshell.cli.Main from gshell.core
+
+##
+## set maven.home default ${user.home}/m2
+##
+
+[gshell.core]
+load ${gshell.home}/etc
+load ${gshell.home}/lib/*.jar
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties Thu May  4 01:12:04 2006
@@ -0,0 +1,4 @@
+##
+## $Id$
+##
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<!-- $Id -->
+
+<beans>
+
+    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
+        <property name="locations">
+            <list>
+                <value>classpath:/gshell.properties</value>
+            </list>
+        </property>
+    </bean>
+    
+    <bean id="gshell" class="org.apache.geronimo.gshell.GShellImpl">
+    </bean>
+    
+</beans>

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/gshell.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties Thu May  4 01:12:04 2006
@@ -0,0 +1,22 @@
+##
+## $Id$
+##
+
+log4j.rootCategory=DEBUG, CONSOLE
+
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Target=System.out
+log4j.appender.CONSOLE.Threshold=${gshell.log.console.level}
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
+
+log4j.appender.FILE=org.apache.log4j.FileAppender
+log4j.appender.FILE.File=${gshell.home}/log/gshell.log
+log4j.appender.FILE.Append=false
+log4j.appender.FILE.Threshold=DEBUG
+log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
+log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p (%t) [%c] %m%n
+
+log4j.logger.org.springframework=WARN
+log4j.logger.org.apache.xbean.spring=WARN
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/config/log4j.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java Thu May  4 01:12:04 2006
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.cli;
+
+import org.codehaus.classworlds.ClassWorld;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.HelpFormatter;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.geronimo.gshell.GShell;
+import org.apache.geronimo.gshell.console.IO;
+
+import org.apache.geronimo.gshell.util.Version;
+import org.apache.geronimo.gshell.util.Banner;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class Main
+{
+    private static void setConsoleLogLevel(final String level) {
+        System.setProperty("gshell.log.console.level", level);
+    }
+    
+    private static void setPropertyFrom(final String namevalue) {
+        String name, value;
+        int j = namevalue.indexOf("=");
+        
+        if (j == -1) {
+            name = namevalue;
+            value = "true";
+        }
+        else {
+            name = namevalue.substring(0, j);
+            value = namevalue.substring(j + 1, namevalue.length());
+        }
+        name = name.trim();
+        
+        System.setProperty(name, value);
+    }
+    
+    public static void main(final String[] args, final ClassWorld world) throws Exception {
+        assert args != null;
+        assert world != null;
+        
+        // Default is to be quiet
+        setConsoleLogLevel("WARN");
+        boolean interactive = false;
+        
+        IO io = new IO();
+        
+        Options options = new Options();
+        
+        options.addOption(OptionBuilder.withLongOpt("help")
+            .withDescription("Display this help message")
+            .create('h'));
+        
+        options.addOption(OptionBuilder.withLongOpt("version")
+            .withDescription("Display GShell version")
+            .create('V'));
+        
+        options.addOption(OptionBuilder.withLongOpt("define")
+            .withDescription("Define a system property")
+            .hasArg()
+            .withArgName("name=value")
+            .create('D'));
+        
+        options.addOption(OptionBuilder.withLongOpt("interactive")
+            .withDescription("Run in interactive mode")
+            .create('i'));
+        
+        options.addOption(OptionBuilder.withLongOpt("debug")
+            .withDescription("Enable DEBUG output")
+            .create());
+        
+        options.addOption(OptionBuilder.withLongOpt("verbose")
+            .withDescription("Enable INFO output")
+            .create());
+        
+        CommandLineParser parser = new PosixParser();
+        CommandLine line = parser.parse(options, args, true);
+        
+        if (line.hasOption('h')) {
+            io.out.println(Banner.getBanner());
+            
+            HelpFormatter formatter = new HelpFormatter();
+            formatter.printHelp(
+                io.out,
+                80, // width
+                "gshell [options] <command> [args]",
+                "",
+                options,
+                4, // left pad
+                4, // desc pad
+                "",
+                false); // auto usage
+            
+            io.out.println();
+            io.out.flush();
+            
+            System.exit(0);
+        }
+        
+        if (line.hasOption('V')) {
+            io.out.println(Banner.getBanner());
+            io.out.println(Version.getInstance());
+            io.out.println();
+            io.out.flush();
+            
+            System.exit(0);
+        }
+        
+        if (line.hasOption('D')) {
+            String[] values = line.getOptionValues('D');
+            
+            for (int i=0; i<values.length; i++) {
+                setPropertyFrom(values[i]);
+            }
+        }
+        
+        // If --debug is set it wins over --verbose
+        if (line.hasOption("debug")) {
+            setConsoleLogLevel("DEBUG");
+        }
+        else if (line.hasOption("verbose")) {
+            setConsoleLogLevel("INFO");
+        }
+        
+        if (line.hasOption('i')) {
+            interactive = true;
+        }
+        
+        //
+        // TODO: Need to pass GShell the ClassWorld, so that the application can add to it if needed
+        //
+        
+        // Startup the shell
+        GShell gshell = new GShell(io);
+        String[] _args = line.getArgs();
+        
+        // Force interactive if there are no args
+        if (_args.length == 0) {
+            interactive = true;
+        }
+        
+        if (interactive) {
+            //
+            // TODO: Need to check if there are args, and run them and then enter interactive
+            //
+            throw new Error("Interative mode not implemented... yet");
+        }
+        else {
+            int status = gshell.execute(_args);
+            System.exit(status);
+        }
+        
+        //
+        // TODO: Run interactive
+        //
+    }
+    
+    public static void main(final String[] args) throws Exception {
+        assert args != null;
+        
+        ClassWorld world = new ClassWorld();
+        main(args, world);
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<!-- $Id -->
+
+<beans>
+    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
+    </bean>
+    
+    <bean id="applicationEventMulticaster" class="org.springframework.context.event.SimpleApplicationEventMulticaster">
+    </bean>
+</beans>

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/resources/META-INF/spring/components.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell Thu May  4 01:12:04 2006
@@ -0,0 +1,125 @@
+#!/bin/sh
+##
+## $Id$
+##
+
+PROGNAME=`basename "$0"`
+DIRNAME=`dirname "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that
+MAX_FD="maximum"
+
+# The version of classworlds to boot with
+CLASSWORLDS_VERSION="1.1"
+
+warn() {
+    echo "${PROGNAME}: $*"
+}
+
+die() {
+    warn "$*"
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false;
+darwin=false;
+case "`uname`" in
+    CYGWIN*)
+        cygwin=true
+        ;;
+        
+    Darwin*)
+        darwin=true
+        ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+    [ -n "$GSHELL_HOME" ] &&
+        GSHELL_HOME=`cygpath --unix "$GSHELL_HOME"`
+    [ -n "$JAVACMD" ] &&
+        JAVACMD=`cygpath --unix "$JAVACMD"`
+    [ -n "$JAVA_HOME" ] &&
+        JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Locate GSHELL_HOME if not it is not set
+if [ "x$GSHELL_HOME" = "x" ]; then
+    GSHELL_HOME=`cd "$DIRNAME/.."; pwd`
+fi
+
+# Use default classworlds config
+if [ -z "$CLASSWORLDS_CONF" ]; then
+    CLASSWORLDS_CONF="$GSHELL_HOME/etc/gshell.conf"
+fi
+CLASSWORLDS_CLASSPATH="$GSHELL_HOME/lib/boot/classworlds-${CLASSWORLDS_VERSION}.jar"
+
+# Determine the Java command to use to start the JVM
+if [ -z "$JAVACMD" ]; then
+    if [ -n "$JAVA_HOME" ]; then
+        if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+            # IBM's JDK on AIX uses strange locations for the executables
+            JAVACMD="$JAVA_HOME/jre/sh/java"
+        else
+            JAVACMD="$JAVA_HOME/bin/java"
+        fi
+    else
+        JAVACMD="java"
+    fi
+fi
+if [ ! -x "$JAVACMD" ]; then
+    die "JAVA_HOME is not defined correctly; can not execute: $JAVACMD"
+fi
+if [ -z "$JAVA_HOME" ] ; then
+    warn "JAVA_HOME environment variable is not set"
+fi
+
+# Increase the maximum file descriptors if we can
+if [ "$cygwin" = "false" ]; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ]; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
+            # use the system max
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ]; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# Setup Profiler
+useprofiler=false
+if [ "x$PROFILER" != "x" ]; then
+    if [ -r "$PROFILER" ]; then
+        . $PROFILER
+        useprofiler=true
+    else
+        die "Profiler file not found: $PROFILER"
+    fi
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+    GSHELL_HOME=`cygpath --path --windows "$GSHELL_HOME"`
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+    CLASSWORLDS_CONF=`cygpath --path --windows "$CLASSWORLDS_CONF"`
+    CLASSWORLDS_CLASSPATH=`cygpath --path --windows "$CLASSWORLDS_CLASSPATH"`
+fi
+
+# Start the Profiler or the JVM
+if $useprofiler; then
+    runProfiler
+else
+    exec $JAVACMD $JAVA_OPTS \
+        -classpath "$CLASSWORLDS_CLASSPATH" \
+        -Dprogram.name="$PROGNAME" \
+        -Dclassworlds.conf="$CLASSWORLDS_CONF" \
+        -Dgshell.home="$GSHELL_HOME" \
+        org.codehaus.classworlds.Launcher "$@"
+fi

Added: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat (added)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat Thu May  4 01:12:04 2006
@@ -0,0 +1,101 @@
+@if "%DEBUG%" == "" @echo off
+@rem 
+@rem $Id$
+@rem 
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem The version of classworlds to boot with
+set CLASSWORLDS_VERSION=1.1
+
+:begin
+@rem Determine what directory it is in.
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.\
+
+@rem Determine the command interpreter to execute the "CD" later
+set COMMAND_COM="cmd.exe"
+if exist "%SystemRoot%\system32\cmd.exe" set COMMAND_COM="%SystemRoot%\system32\cmd.exe"
+if exist "%SystemRoot%\command.com" set COMMAND_COM="%SystemRoot%\command.com"
+
+@rem Use explicit find.exe to prevent cygwin and others find.exe from being used
+set FIND_EXE="find.exe"
+if exist "%SystemRoot%\system32\find.exe" set FIND_EXE="%SystemRoot%\system32\find.exe"
+if exist "%SystemRoot%\command\find.exe" set FIND_EXE="%SystemRoot%\command\find.exe"
+
+:check_JAVA_HOME
+@rem Make sure we have a valid JAVA_HOME
+if not "%JAVA_HOME%" == "" goto have_JAVA_HOME
+
+echo.
+echo ERROR: Environment variable JAVA_HOME has not been set.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+echo.
+goto end
+
+:have_JAVA_HOME
+@rem Validate JAVA_HOME
+%COMMAND_COM% /C DIR "%JAVA_HOME%" 2>&1 | %FIND_EXE% /I /C "%JAVA_HOME%" >nul
+if not errorlevel 1 goto check_GSHELL_HOME
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+echo.
+goto end
+
+:check_GSHELL_HOME
+@rem Define GSHELL_HOME if not set
+if "%GSHELL_HOME%" == "" set GSHELL_HOME=%DIRNAME%..
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%eval[2+2]" == "4" goto 4NT_args
+
+@rem Regular WinNT shell
+set CMD_LINE_ARGS=%*
+goto execute
+
+:win9xME_args
+@rem Slurp the command line arguments.  This loop allows for an unlimited number
+set CMD_LINE_ARGS=
+
+:win9xME_args_slurp
+if "x%1" == "x" goto execute
+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
+shift
+goto win9xME_args_slurp
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+set CLASSWORLDS_CLASSPATH=%GSHELL_HOME%\lib\boot\classworlds-%CLASSWORLDS_VERSION%.jar
+set CLASSWORLDS_MAIN_CLASS=org.codehaus.classworlds.Launcher
+set CLASSWORLDS_CONF=%GSHELL_HOME%\etc\gshell.conf
+
+set JAVA_EXE=%JAVA_HOME%\bin\java.exe
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=""
+set JAVA_OPTS=%JAVA_OPTS% -Dprogram.name="%PROGNAME%"
+set JAVA_OPTS=%JAVA_OPTS% -Dgshell.home="%GSHELL_HOME%"
+set JAVA_OPTS=%JAVA_OPTS% -Dclassworlds.conf="%CLASSWORLDS_CONF%"
+
+@rem Execute Gshell
+"%JAVA_EXE%" %JAVA_OPTS% -classpath "%CLASSWORLDS_CLASSPATH%" %CLASSWORLDS_MAIN_CLASS% %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" endlocal
+
+@rem Optional pause the batch file
+if "%GSHELL_BATCH_PAUSE%" == "on" pause
+

Propchange: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/scripts/gshell.bat
------------------------------------------------------------------------------
    svn:eol-style = native

Added: geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id -->
+
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.geronimo.gshell</groupId>
+        <artifactId>gshell</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <artifactId>gshell-commands</artifactId>
+    <name>GShell :: Commands</name>
+    <packaging>pom</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>gshell-core</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+        </dependency>
+    </dependencies>
+    
+    <modules>
+        <module>standard-commands</module>
+    </modules>
+    
+</project>

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id -->
+
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.geronimo.gshell</groupId>
+        <artifactId>gshell-commands</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <artifactId>standard-commands</artifactId>
+    <name>GShell Commands :: Standard</name>
+    <packaging>jar</packaging>
+    
+</project>

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java Thu May  4 01:12:04 2006
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.commands.standard;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.lang.StringUtils;
+
+import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.command.CommandSupport;
+import org.apache.geronimo.gshell.console.IO;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class CatCommand
+    extends CommandSupport
+{
+    private boolean displayLineNumbers = false;
+    
+    public CatCommand() {
+        super("cat");
+    }
+    
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
+        
+        //
+        // TODO: Optimize, move common code to CommandSupport
+        //
+        
+        IO io = getIO();
+        
+        Options options = new Options();
+        
+        options.addOption(OptionBuilder.withLongOpt("help")
+            .withDescription("Display this help message")
+            .create('h'));
+        
+        options.addOption(OptionBuilder
+            .withDescription("Number the output lines, starting at 1")
+            .create('n'));
+        
+        CommandLineParser parser = new PosixParser();
+        CommandLine line = parser.parse(options, args);
+        
+        if (line.hasOption('h')) {
+            io.out.println("cat -- concatenate and print files");
+            io.out.println();
+            
+            HelpFormatter formatter = new HelpFormatter();
+            formatter.printHelp(
+                io.out,
+                80, // width (FIXME: Should pull from gshell.columns variable)
+                "cat [options] [file ...]",
+                "",
+                options,
+                4, // left pad
+                4, // desc pad
+                "",
+                false); // auto usage
+            
+            io.out.println();
+            
+            return Command.SUCCESS;
+        }
+        
+        if (line.hasOption('n')) {
+            displayLineNumbers = true;
+        }
+        
+        cat(line.getArgs());
+        
+        return Command.SUCCESS;
+    }
+    
+    private void cat(final String[] files) throws IOException {
+        assert files != null;
+        
+        IO io = getIO();
+        
+        for (int i=0; i<files.length; i++) {
+            BufferedReader reader;
+            
+            //
+            // Support "-" if length is one, and read from io.in
+            // This will help test command pipelines.
+            //
+            if (files.length == 1 && "-".equals(files[0])) {
+                log.info("Printing STDIN");
+                reader = new BufferedReader(io.in);
+            }
+            else {
+                File file = new File(files[i]);
+                log.info("Printing file: " + file);
+                reader = new BufferedReader(new FileReader(file));
+            }
+            
+            String line;
+            int lineno = 1;
+            
+            while ((line = reader.readLine()) != null) {
+                if (displayLineNumbers) {
+                    String gutter = StringUtils.leftPad(String.valueOf(lineno++), 6);
+                    io.out.print(gutter);
+                    io.out.print("  ");
+                }
+                io.out.println(line);
+            }
+            
+            reader.close();
+        }
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java Thu May  4 01:12:04 2006
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.commands.standard;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.HelpFormatter;
+
+import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.command.CommandSupport;
+import org.apache.geronimo.gshell.console.IO;
+
+/**
+ * A simple command to <em>echo</em> all given arguments to the commands standard output.
+ *
+ * @version $Id$
+ */
+public class EchoCommand
+    extends CommandSupport
+{
+    private boolean trailingNewline = true;
+    
+    public EchoCommand() {
+        super("echo");
+    }
+    
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
+        
+        //
+        // TODO: Optimize, move common code to CommandSupport
+        //
+        
+        IO io = getIO();
+        
+        Options options = new Options();
+        
+        options.addOption(OptionBuilder.withLongOpt("help")
+            .withDescription("Display this help message")
+            .create('h'));
+        
+        options.addOption(OptionBuilder
+            .withDescription("Do not print the trailing newline character")
+            .create('n'));
+        
+        CommandLineParser parser = new PosixParser();
+        CommandLine line = parser.parse(options, args);
+        
+        if (line.hasOption('h')) {
+            io.out.println("echo -- write arguments to the commands output");
+            io.out.println();
+            
+            HelpFormatter formatter = new HelpFormatter();
+            formatter.printHelp(
+                io.out,
+                80, // width (FIXME: Should pull from gshell.columns variable)
+                "echo [options] [string ...]",
+                "",
+                options,
+                4, // left pad
+                4, // desc pad
+                "",
+                false); // auto usage
+            
+            io.out.println();
+            
+            return Command.SUCCESS;
+        }
+        
+        if (line.hasOption('n')) {
+            trailingNewline = false;
+        }
+        
+        echo(line.getArgs());
+        
+        return Command.SUCCESS;
+    }
+    
+    private void echo(final String[] args) {
+        IO io = getIO();
+        
+        for (int i=0; i<args.length; i++) {
+            io.out.print(args[i]);
+            io.out.print(" ");
+        }
+        
+        if (trailingNewline) {
+            io.out.println();
+        }
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<!-- $Id -->
+
+<beans>
+    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
+    </bean>
+    
+    <bean id="echo" class="org.apache.geronimo.gshell.commands.standard.EchoCommand" singleton="false">
+        <property name="name" value="echo"/>
+    </bean>
+    
+    <bean id="cat" class="org.apache.geronimo.gshell.commands.standard.CatCommand" singleton="false">
+        <property name="name" value="cat"/>
+    </bean>
+</beans>

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-commands/standard-commands/src/main/resources/META-INF/spring/components.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-core/pom.xml
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/pom.xml?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/pom.xml (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/pom.xml Thu May  4 01:12:04 2006
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id -->
+
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    
+    <parent>
+        <groupId>org.apache.geronimo.gshell</groupId>
+        <artifactId>gshell</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    
+    <artifactId>gshell-core</artifactId>
+    <name>GShell :: Core</name>
+    <packaging>jar</packaging>
+    
+    <properties>
+        <spring.version>1.2.7</spring.version>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-core</artifactId>
+            <version>${spring.version}</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${spring.version}</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+            <version>${spring.version}</version>
+            <type>jar</type>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    
+</project>

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java Thu May  4 01:12:04 2006
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import org.apache.geronimo.gshell.console.IO;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class GShell
+{
+    private static final Log log = LogFactory.getLog(GShell.class);
+    
+    private ApplicationContext ctx;
+    private GShellImpl impl;
+    
+    public GShell(final IO io) {
+        assert io != null;
+        
+        this.ctx = new ClassPathXmlApplicationContext(new String[] {
+            "classpath*:/gshell.xml",
+            "classpath*:/META-INF/spring/components.xml",
+        });
+        
+        this.impl = (GShellImpl)ctx.getBean("gshell");
+        this.impl.setIO(io);
+    }
+    
+    public GShell() {
+        this(new IO());
+    }
+    
+    public int execute(final String args) throws Exception {
+        return impl.execute(args);
+    }
+    
+    public int execute(final String[] args) throws Exception {
+        return impl.execute(args);
+    }
+    
+    public int execute(final String commandName, String[] args) throws Exception {
+        return impl.execute(commandName, args);
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShell.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java Thu May  4 01:12:04 2006
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.geronimo.gshell.command.Command;
+import org.apache.geronimo.gshell.command.CommandContext;
+import org.apache.geronimo.gshell.command.Variables;
+import org.apache.geronimo.gshell.command.VariablesMap;
+import org.apache.geronimo.gshell.commandline.CommandLine;
+import org.apache.geronimo.gshell.commandline.CommandLineParser;
+import org.apache.geronimo.gshell.console.IO;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+class GShellImpl
+    implements ApplicationContextAware
+{
+    private static final Log log = LogFactory.getLog(GShell.class);
+
+    private IO io;
+    private ApplicationContext ctx;
+    private CommandLineParser parser;
+    
+    public void setIO(final IO io) {
+        assert io != null;
+        
+        this.io = io;
+    }
+    
+    public void setCommmandLineParser(final CommandLineParser parser) {
+        assert parser != null;
+        
+        this.parser = parser;
+    }
+    
+    private CommandLineParser getCommandLineParser() {
+        if (parser == null) {
+            throw new IllegalArgumentException("Command line parser not initalized");
+        }
+        return parser;
+    }
+    
+    public int execute(final String commandline) throws Exception {
+        log.info("Executing (String): " + commandline);
+        
+        CommandLine cl = getCommandLineParser().parse(commandline);
+        return cl.execute();
+    }
+    
+    public int execute(final String commandName, String[] args) throws Exception {
+        assert commandName != null;
+        assert args != null;
+        
+        log.info("Executing (" + commandName + "): " + java.util.Arrays.asList(args));
+        
+        //
+        // HACK: Just get something working right now
+        //
+        
+        Command cmd = (Command)ctx.getBean(commandName);
+        
+        cmd.init(new CommandContext() {
+            Variables vars = new VariablesMap();
+            
+            public IO getIO() {
+                return io;
+            }
+
+            public Variables getVariables() {
+                return vars;
+            }
+        });
+        
+        int status;
+        
+        try {
+            status = cmd.execute(args);
+        }
+        finally {
+            cmd.destroy();
+        }
+        
+        return status;
+    }
+    
+    public int execute(final String[] args) throws Exception {
+        assert args != null;
+        assert args.length > 1;
+        
+        log.info("Executing (String[]): " + java.util.Arrays.asList(args));
+        
+        return execute(args[0], shift(args));
+    }
+    
+    //
+    // Misc
+    //
+    
+    private String[] shift(final String[] args) {
+        return shift(args, 1);
+    }
+    
+    private String[] shift(final String[] args, int pos) {
+        String[] _args = new String[args.length - pos];
+        System.arraycopy(args, pos, _args, 0, _args.length);
+        return _args;
+    }
+    
+    //
+    // ApplicationContextAware
+    //
+    
+    public void setApplicationContext(final ApplicationContext ctx) throws BeansException {
+        assert ctx != null;
+        
+        this.ctx = ctx;
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/GShellImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java Thu May  4 01:12:04 2006
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.command;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public interface Command
+{
+    /** Standard command success status code. */
+    int SUCCESS = 0;
+    
+    /** Standard command failure status code. */
+    int FAILURE = -1;
+    
+    String getName();
+    
+    void init(CommandContext context); // throws Exception ?
+    
+    int execute(String[] args) throws Exception;
+    
+    void abort(); // throws Exception ?
+    
+    void destroy(); // throws Exception ?
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Command.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java Thu May  4 01:12:04 2006
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.command;
+
+import org.apache.geronimo.gshell.console.IO;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public interface CommandContext
+{
+    IO getIO();
+    
+    Variables getVariables();
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandContext.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java Thu May  4 01:12:04 2006
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.command;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.gshell.console.IO;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public abstract class CommandSupport
+    implements Command
+{
+    protected Log log;
+    
+    private String name;
+    private CommandContext context;
+    
+    protected CommandSupport(final String name) {
+        setName(name);
+    }
+    
+    protected CommandSupport() {
+        // Sub-class must call setName()
+    }
+    
+    public void setName(final String name) {
+        assert name != null;
+        assert name.trim().length() != 0;
+        
+        this.name = name;
+    }
+    
+    public String getName() {
+        assert name != null;
+        
+        return name;
+    }
+    
+    //
+    // Life-cycle
+    //
+    
+    public final void init(final CommandContext context) {
+        if (this.context != null) {
+            throw new IllegalStateException("Command already initalized");
+        }
+        
+        // Initialize logging with command name
+        log = LogFactory.getLog(this.getClass().getName() + "." + getName());
+        
+        log.debug("Initializing");
+        
+        this.context = context;
+        
+        doInit();
+    }
+    
+    protected void doInit() {
+        // Sub-class should override to provide custom initialization
+    }
+    
+    private void ensureInitialized() {
+        if (context == null) {
+            throw new IllegalStateException("Command has not been initialized");
+        }
+    }
+    
+    public final void destroy() {
+        if (this.context == null) {
+            throw new IllegalStateException("Command already destroyed (or never initialized)");
+        }
+        
+        log.debug("Destroying");
+        
+        doDestroy();
+        
+        this.context = null;
+    }
+    
+    protected void doDestroy() {
+        // Sub-class should override to provide custom cleanup
+    }
+    
+    public void abort() {
+        // Sub-calss should override to allow for custom abort functionality
+    }
+    
+    //
+    // Context Helpers
+    //
+    
+    protected CommandContext getCommandContext() {
+        assert context != null;
+        
+        return context;
+    }
+    
+    protected Variables getVariables() {
+        return getCommandContext().getVariables();
+    }
+    
+    protected IO getIO() {
+        return getCommandContext().getIO();
+    }
+    
+    //
+    // Execute Helpers
+    //
+    
+    public int execute(final String[] args) throws Exception {
+        assert args != null;
+        
+        // Make sure that we have been initialized before we go any further
+        ensureInitialized();
+        
+        boolean debug = log.isDebugEnabled();
+        
+        if (debug) {
+            log.debug("Executing w/arguments: " + java.util.Arrays.asList(args));
+        }
+        
+        int status;
+        
+        try {
+            status = doExecute(args);
+        }
+        catch (Exception e) {
+            log.error(e.getMessage());
+            if (debug) {
+                log.debug("Failure details", e);
+            }
+            
+            status = Command.FAILURE;
+        }
+        finally {
+            // Be sure to flush the commands outputs
+            getIO().flush();
+        }
+        
+        if (debug) {
+            log.debug("Command exited with status code: " + status);
+        }
+        
+        return status;
+    }
+    
+    protected int doExecute(final String[] args) throws Exception {
+        // Sub-class should override to perform custom execution
+        
+        return Command.FAILURE;
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java Thu May  4 01:12:04 2006
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.command;
+
+import java.util.Iterator;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public interface Variables
+{
+    void set(String name, Object value);
+    
+    Object get(String name);
+    
+    void remove(String name);
+    
+    boolean isSet(String name);
+    
+    Iterator names();
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/Variables.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java Thu May  4 01:12:04 2006
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.gshell.command;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class VariablesMap
+    implements Variables
+{
+    private final Map map;
+    
+    public VariablesMap(final Map map) {
+        assert map != null;
+        
+        this.map = map;
+    }
+    
+    public VariablesMap() {
+        this(new HashMap());
+    }
+    
+    public void set(final String name, final Object value) {
+        assert name != null;
+        
+        map.put(name, value);
+    }
+    
+    public Object get(final String name) {
+        assert name != null;
+        
+        return map.get(name);
+    }
+    
+    public void remove(final String name) {
+        assert name != null;
+        
+        map.remove(name);
+    }
+    
+    public boolean isSet(final String name) {
+        assert name != null;
+        
+        return map.containsKey(name);
+    }
+    
+    public Iterator names() {
+        return map.keySet().iterator();
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/VariablesMap.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java
URL: http://svn.apache.org/viewcvs/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java?rev=399598&view=auto
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java (added)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java Thu May  4 01:12:04 2006
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2006 The Apache Software Foundation
+ *
+ * Licensed 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.console;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.io.Reader;
+import java.io.PrintWriter;
+
+/**
+ * ???
+ *
+ * @version $Id$
+ */
+public class IO
+{
+    public final Reader in;
+    public final PrintWriter out;
+    public final PrintWriter err;
+    
+    public IO(final Reader in, final PrintWriter out, final PrintWriter err) {
+        assert in != null;
+        assert out != null;
+        assert err != null;
+        
+        this.in = in;
+        this.out = out;
+        this.err = err;
+    }
+    
+    public IO(final InputStream in, final PrintStream out, final PrintStream err) {
+        this(new InputStreamReader(in), new PrintWriter(out), new PrintWriter(err));
+    }
+    
+    public IO() {
+        this(System.in, System.out, System.err);
+    }
+    
+    public void flush() {
+        out.flush();
+        err.flush();
+    }
+}

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/console/IO.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain