geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jdil...@apache.org
Subject svn commit: r416949 - in /geronimo/sandbox/gshell/trunk: gshell-api/src/main/java/org/apache/geronimo/gshell/command/ gshell-assemblies/gshell-complete-assembly/src/main/config/ gshell-assemblies/gshell-complete-assembly/src/main/scripts/ gshell-cli/sr...
Date Sat, 24 Jun 2006 20:31:57 GMT
Author: jdillon
Date: Sat Jun 24 13:31:55 2006
New Revision: 416949

URL: http://svn.apache.org/viewvc?rev=416949&view=rev
Log:
Refactor common bits into CommandSupport
Seems that somehwhere along the lines the --debug and related logging flags broke :-(
Its still broke, not sure why... need to figure that out

Added:
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
  (contents, props changed)
      - copied, changed from r413720, geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/log4j.properties
Removed:
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/log4j.properties
Modified:
    geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh.conf
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh
    geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh.bat
    geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-scripting-commands/src/main/java/org/apache/geronimo/gshell/commands/scripting/ScriptCommand.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/JavaCommand.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/SleepCommand.java
    geronimo/sandbox/gshell/trunk/gshell-commands/gshell-vfs-commands/src/main/java/org/apache/geronimo/gshell/commands/vfs/CopyCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ExitCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/UnsetCommand.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/ExitCommandMessages.properties
    geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/HelpCommandMessages.properties
    geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java

Modified: geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
Sat Jun 24 13:31:55 2006
@@ -22,6 +22,9 @@
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.HelpFormatter;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.cli.CommandLine;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.util.Arguments;
 import org.apache.geronimo.gshell.ExitNotification;
@@ -205,7 +208,23 @@
         int status;
 
         try {
-            status = doExecute(args);
+            // Handle the command-line
+            Options options = getOptions();
+            CommandLineParser parser = new PosixParser();
+            CommandLine line = parser.parse(options, args);
+
+            // Custom command-line processing
+            boolean usage = processCommandLine(line);
+
+            // Default command-line processing
+            if (usage || line.hasOption('h')) {
+                displayHelp(options);
+
+                return Command.SUCCESS;
+            }
+
+            // Execute with the remaining arguments post-processing
+            status = doExecute(line.getArgs());
         }
         catch (Exception e) {
             log.error(e.getMessage());
@@ -240,15 +259,33 @@
         return status;
     }
 
+    /**
+     * Sub-class should override to perform custom execution.
+     *
+     * @param args  Post-command-line parsed options.
+     * @return
+     *
+     * @throws Exception
+     */
     protected int doExecute(final String[] args) throws Exception {
-        // Sub-class should override to perform custom execution
-
         return Command.FAILURE;
     }
 
     //
     // CLI Fluff
     //
+
+    /**
+     * Process the command-line.
+     *
+     * @param line  The command-line to process.
+     * @return      True to display help and exit; else false to continue.
+     *
+     * @throws CommandException
+     */
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        return false;
+    }
 
     protected Options getOptions() {
         MessageSource messages = getMessageSource();

Copied: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
(from r413720, geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/log4j.properties)
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties?p2=geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties&p1=geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/log4j.properties&r1=413720&r2=416949&rev=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/log4j.properties
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
Sat Jun 24 13:31:55 2006
@@ -2,7 +2,7 @@
 ## $Id$
 ##
 
-log4j.rootCategory=DEBUG, CONSOLE
+log4j.rootCategory=DEBUG, CONSOLE, FILE
 
 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 log4j.appender.CONSOLE.Target=System.out

Propchange: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh-log4j.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh.conf
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh.conf?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh.conf
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/config/gsh.conf
Sat Jun 24 13:31:55 2006
@@ -2,13 +2,9 @@
 ## $Id$
 ##
 
-main is org.apache.geronimo.gshell.cli.Main from gshell.core
+main is org.apache.geronimo.gshell.cli.Main from gshell
 
-##
-## set maven.home default ${user.home}/m2
-##
-
-[gshell.core]
+[gshell]
 load ${gshell.home}/etc
 load ${gshell.home}/lib/*.jar
 

Modified: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh
Sat Jun 24 13:31:55 2006
@@ -121,5 +121,6 @@
         -Dprogram.name="$PROGNAME" \
         -Dclassworlds.conf="$CLASSWORLDS_CONF" \
         -Dgshell.home="$GSHELL_HOME" \
+        -Dlog4j.configuration="${PROGNAME}-log4j.properties" \
         org.codehaus.classworlds.Launcher "$@"
 fi

Modified: geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh.bat
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh.bat?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh.bat
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-assemblies/gshell-complete-assembly/src/main/scripts/gsh.bat
Sat Jun 24 13:31:55 2006
@@ -90,6 +90,7 @@
 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%"
+set JAVA_OPTS=%JAVA_OPTS% -Dlog4j.configuration="%PROGNAME%-log4j.properties"
 
 @rem Execute Gshell
 "%JAVA_EXE%" %JAVA_OPTS% -classpath "%CLASSWORLDS_CLASSPATH%" %CLASSWORLDS_MAIN_CLASS% %CMD_LINE_ARGS%

Modified: geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
Sat Jun 24 13:31:55 2006
@@ -24,7 +24,9 @@
 import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.HelpFormatter;
+
 import org.apache.commons.lang.time.StopWatch;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -60,7 +62,7 @@
 
     private final StopWatch watch = new StopWatch();
 
-    private boolean interactive = false;
+    private boolean interactive;
 
     public Main(final ClassWorld world) {
         assert world != null;

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-scripting-commands/src/main/java/org/apache/geronimo/gshell/commands/scripting/ScriptCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-scripting-commands/src/main/java/org/apache/geronimo/gshell/commands/scripting/ScriptCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-scripting-commands/src/main/java/org/apache/geronimo/gshell/commands/scripting/ScriptCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-scripting-commands/src/main/java/org/apache/geronimo/gshell/commands/scripting/ScriptCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,15 +17,13 @@
 package org.apache.geronimo.gshell.commands.scripting;
 
 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.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.MessageSource;
-import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.JLineConsole;
 
 import org.apache.bsf.BSFManager;
@@ -41,8 +39,8 @@
 {
     private String language;
 
-    private boolean interactive = false;
-
+    private boolean interactive;
+    
     private String expression;
 
     public ScriptCommand() {
@@ -71,23 +69,10 @@
         return options;
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        if (line.hasOption('h')) {
-            displayHelp(options);
-
-            return Command.SUCCESS;
-        }
+        boolean usage = false;
 
         if (line.hasOption('l')) {
             this.language = line.getOptionValue('l');
@@ -100,6 +85,12 @@
         if (line.hasOption('i')) {
             this.interactive = true;
         }
+
+        return usage;
+    }
+
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
 
         //
         // TODO: When given a file/url, try to figure out language from ext if language not
given

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/CatCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,14 +17,14 @@
 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.Options;
-import org.apache.commons.cli.PosixParser;
+
 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.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 
 import java.io.BufferedReader;
@@ -43,8 +43,8 @@
 public class CatCommand
     extends CommandSupport
 {
-    private boolean displayLineNumbers = false;
-
+    private boolean displayLineNumbers;
+    
     public CatCommand() {
         super("cat");
     }
@@ -65,36 +65,27 @@
         return super.getUsage() + " [<file|url> ...]";
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        String[] _args = line.getArgs();
-
-        if (line.hasOption('h')) {
-            displayHelp(options);
-
-            return Command.SUCCESS;
-        }
+        boolean usage = false;
 
         if (line.hasOption('n')) {
             displayLineNumbers = true;
         }
 
+        return usage;
+    }
+
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
+
         // No args, then read from STDIN
-        if (_args.length == 0) {
-            _args = new String[] { "-" };
+        if (args.length == 0) {
+            args = new String[] { "-" };
         }
 
-        cat(_args);
+        cat(args);
 
         return Command.SUCCESS;
     }

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/EchoCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,13 +17,13 @@
 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.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 
 /**
@@ -52,36 +52,21 @@
         return options;
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-        
-        Options options = getOptions();
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+        boolean usage = false;
 
-        String[] _args = line.getArgs();
-        
-        if (line.hasOption('h')) {
-            displayHelp(options);
-            
-            return Command.SUCCESS;
-        }
-        
         if (line.hasOption('n')) {
             trailingNewline = false;
         }
-        
-        echo(_args);
-        
-        return Command.SUCCESS;
+
+        return usage;
     }
-    
-    private void echo(final String[] args) {
+
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
+
         IO io = getIO();
 
         for (int i=0; i < args.length; i++) {
@@ -90,9 +75,11 @@
                 io.out.print(" ");
             }
         }
-        
+
         if (trailingNewline) {
             io.out.println();
         }
+        
+        return Command.SUCCESS;
     }
 }

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/JavaCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/JavaCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/JavaCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/JavaCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,13 +17,13 @@
 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.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.util.Arguments;
 
@@ -65,37 +65,30 @@
         return super.getUsage() + " <classname> [arguments]";
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        MessageSource messages = getMessageSource();
+        boolean usage = false;
+        String[] args = line.getArgs();
 
         IO io = getIO();
+        MessageSource messages = getMessageSource();
 
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
-
-        boolean usage = false;
-        String[] _args = line.getArgs();
-
-        if (_args.length == 0) {
+        if (args.length == 0) {
             io.err.println(messages.getMessage("cli.error.missing_classname"));
             usage = true;
         }
-
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
-
-            return Command.SUCCESS;
-        }
-
         if (line.hasOption('M')) {
             methodName = line.getOptionValue('M');
         }
 
-        run(_args);
+        return usage;
+    }
+
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
+
+        run(args);
 
         return Command.SUCCESS;
     }

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/SleepCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/SleepCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/SleepCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-standard-commands/src/main/java/org/apache/geronimo/gshell/commands/standard/SleepCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,13 +17,10 @@
 package org.apache.geronimo.gshell.commands.standard;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
-import org.apache.geronimo.gshell.command.MessageSource;
-import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.command.CommandException;
 
 /**
  * Sleep... zzzZ
@@ -33,6 +30,8 @@
 public class SleepCommand
     extends CommandSupport
 {
+    private long time = -1;
+
     public SleepCommand() {
         super("sleep");
     }
@@ -41,21 +40,11 @@
         return super.getUsage() + " <time>";
     }
 
-    protected int doExecute(String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
-        args = line.getArgs();
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
         boolean usage = false;
-        long time = -1;
+        String[] args = line.getArgs();
 
         if (args.length != 1) {
             usage = true;
@@ -64,11 +53,11 @@
             time = Long.parseLong(args[0]);
         }
 
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
+        return usage;
+    }
 
-            return Command.SUCCESS;
-        }
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
 
         log.info("Sleeping for " + time);
 

Modified: geronimo/sandbox/gshell/trunk/gshell-commands/gshell-vfs-commands/src/main/java/org/apache/geronimo/gshell/commands/vfs/CopyCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-commands/gshell-vfs-commands/src/main/java/org/apache/geronimo/gshell/commands/vfs/CopyCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-commands/gshell-vfs-commands/src/main/java/org/apache/geronimo/gshell/commands/vfs/CopyCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-commands/gshell-vfs-commands/src/main/java/org/apache/geronimo/gshell/commands/vfs/CopyCommand.java
Sat Jun 24 13:31:55 2006
@@ -16,13 +16,9 @@
 
 package org.apache.geronimo.gshell.commands.vfs;
 
-import org.apache.geronimo.gshell.command.MessageSource;
 import org.apache.geronimo.gshell.command.Command;
-import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.command.CommandException;
 
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.PosixParser;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.vfs.FileObject;
 import org.apache.commons.vfs.FileSystemManager;
@@ -44,36 +40,26 @@
         return super.getUsage() + " <source> <target>";
     }
 
-    protected int doExecute(String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
         boolean usage = false;
-
-        String[] _args = line.getArgs();
+        String[] args = line.getArgs();
 
         // Need exactly 2 args
-        if (_args.length != 2) {
+        if (args.length != 2) {
             usage = true;
         }
 
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
+        return usage;
+    }
 
-            return Command.SUCCESS;
-        }
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
 
         FileSystemManager fsm = getFileSystemManager();
-        FileObject source = fsm.resolveFile(_args[0]);
-        FileObject target = fsm.resolveFile(_args[1]);
+        FileObject source = fsm.resolveFile(args[0]);
+        FileObject target = fsm.resolveFile(args[1]);
 
         log.info("Copying " + source + " -> " + target);
 

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ExitCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ExitCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ExitCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/ExitCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,12 +17,11 @@
 package org.apache.geronimo.gshell.builtins;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.ExitNotification;
 import org.apache.geronimo.gshell.util.Arguments;
@@ -35,6 +34,8 @@
 public class ExitCommand
     extends CommandSupport
 {
+    private int exitCode = 0;
+
     public ExitCommand() {
         super("exit");
     }
@@ -43,24 +44,17 @@
         return super.getUsage() + " [code]";
     }
 
-    protected int doExecute(String[] args) throws Exception {
-        assert args != null;
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        MessageSource messages = getMessageSource();
+        boolean usage = false;
+        String[] args = line.getArgs();
 
         IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
-        args = line.getArgs();
-
-        boolean usage = false;
-        int exitCode = 0;
+        MessageSource messages = getMessageSource();
 
         if (args.length > 1) {
-            io.err.println("Unexpected arguments: " + Arguments.asString(args));
+            io.err.println(messages.getMessage("info.unexpected_args", Arguments.asString(args)));
             io.err.println();
             usage = true;
         }
@@ -68,11 +62,11 @@
             exitCode = Integer.parseInt(args[0]);
         }
 
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
+        return usage;
+    }
 
-            return Command.SUCCESS;
-        }
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
 
         exit(exitCode);
 

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/HelpCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,15 +17,13 @@
 package org.apache.geronimo.gshell.builtins;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
 
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.CommandManager;
 import org.apache.geronimo.gshell.command.CommandDefinition;
 import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.util.Arguments;
 
@@ -39,6 +37,8 @@
 {
     private CommandManager commandManager;
 
+    private String topic;
+
     public HelpCommand(final CommandManager commandManager) {
         super("help");
 
@@ -68,39 +68,33 @@
         return super.getUsage() + " [topic|command]";
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        MessageSource messages = getMessageSource();
+        boolean usage = false;
+        String[] args = line.getArgs();
 
         IO io = getIO();
+        MessageSource messages = getMessageSource();
 
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
-
-        boolean usage = false;
-        String topic = null;
-
-        String[] _args = line.getArgs();
-        if (_args.length > 1) {
-            io.err.println("Too many arguments: " + _args);
-            return Command.FAILURE;
+        if (args.length > 1) {
+            io.err.println(messages.getMessage("info.unexpected_args", Arguments.asString(args)));
+            usage = true;
         }
-        else if (_args.length == 1) {
-            topic = _args[0];
+        else if (args.length == 1) {
+            topic = args[0];
         }
         else {
             usage = true;
         }
 
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
+        return usage;
+    }
 
-            return Command.SUCCESS;
-        }
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
 
+        IO io = getIO();
         CommandManager manager = getCommandManager();
 
         //

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/SetCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,16 +17,15 @@
 package org.apache.geronimo.gshell.builtins;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
 
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.Variables;
 import org.apache.geronimo.gshell.command.MessageSource;
 import org.apache.geronimo.gshell.command.VariablesImpl;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 
 import java.util.Iterator;
@@ -39,16 +38,20 @@
 public class SetCommand
     extends CommandSupport
 {
-    public SetCommand() {
-        super("set");
-    }
-
     enum Mode
     {
         VARIABLE,
         PROPERTY
     }
 
+    private boolean displayVariables;
+
+    private Mode mode = Mode.VARIABLE;
+
+    public SetCommand() {
+        super("set");
+    }
+
     protected Options getOptions() {
         MessageSource messages = getMessageSource();
 
@@ -65,36 +68,30 @@
         return super.getUsage() + " (<name[=value>])*";
     }
 
-    protected int doExecute(String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        //
-        // TODO: Add support to set immutable
-        //
+        boolean usage = false;
+        String[] args = line.getArgs();
 
-        //
-        // TODO: Add support to set in parent (parent) scope
-        //
+        if (args.length == 0) {
+            displayVariables = true;
+        }
 
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+        if (line.hasOption('p')) {
+            mode = Mode.PROPERTY;
+        }
 
-        if (line.hasOption('h')) {
-            displayHelp(options);
+        return usage;
+    }
 
-            return Command.SUCCESS;
-        }
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
 
-        String[] _args = line.getArgs();
+        IO io = getIO();
 
         // No args... list all variables
-        if (_args.length == 0) {
+        if (displayVariables) {
             Variables vars = getVariables();
             Iterator<String> iter = vars.names();
 
@@ -111,12 +108,6 @@
             return Command.SUCCESS;
         }
 
-        Mode mode = Mode.VARIABLE;
-
-        if (line.hasOption('p')) {
-            mode = Mode.PROPERTY;
-        }
-
         //
         // FIXME: This does not jive well with the parser, and stuff like foo = "b a r"
         //
@@ -125,7 +116,7 @@
         // NOTE: May want to make x=b part of the CL grammar
         //
 
-        for (String arg : _args) {
+        for (String arg : args) {
             switch (mode) {
                 case PROPERTY:
                     setProperty(arg);

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/UnsetCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/UnsetCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/UnsetCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/builtins/UnsetCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,16 +17,15 @@
 package org.apache.geronimo.gshell.builtins;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.Variables;
 import org.apache.geronimo.gshell.command.VariablesImpl;
 import org.apache.geronimo.gshell.command.MessageSource;
-import org.apache.geronimo.gshell.console.IO;
+import org.apache.geronimo.gshell.command.CommandException;
 
 /**
  * Unset a variable or property.
@@ -36,16 +35,18 @@
 public class UnsetCommand
     extends CommandSupport
 {
-    public UnsetCommand() {
-        super("unset");
-    }
-
     enum Mode
     {
         VARIABLE,
         PROPERTY
     }
 
+    private Mode mode = Mode.VARIABLE;
+
+    public UnsetCommand() {
+        super("unset");
+    }
+
     protected Options getOptions() {
         MessageSource messages = getMessageSource();
 
@@ -62,42 +63,27 @@
         return super.getUsage() + " (<name>)+";
     }
 
-    protected int doExecute(String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        //
-        // TODO: Add support to unset in parent (parent) scope
-        //
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
         boolean usage = false;
-        String[] _args = line.getArgs();
+        String[] args = line.getArgs();
 
-        if (_args.length == 0) {
+        if (args.length == 0) {
             usage = true;
         }
 
-        if (usage || line.hasOption('h')) {
-            displayHelp(options);
-
-            return Command.SUCCESS;
-        }
-
-        Mode mode = Mode.VARIABLE;
-
         if (line.hasOption('p')) {
             mode = Mode.PROPERTY;
         }
 
-        for (String arg : _args) {
+        return usage;
+    }
+
+    protected int doExecute(String[] args) throws Exception {
+        assert args != null;
+
+        for (String arg : args) {
             switch (mode) {
                 case PROPERTY:
                     unsetProperty(arg);

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/command/MessageSourceImpl.java
Sat Jun 24 13:31:55 2006
@@ -29,6 +29,10 @@
 public class MessageSourceImpl
     implements MessageSource
 {
+    //
+    // TODO: Add a global message set that is overridden by command messages
+    //
+    
     private final ResourceBundle bundle;
 
     public MessageSourceImpl(final String name) {

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/ExitCommandMessages.properties
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/ExitCommandMessages.properties?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/ExitCommandMessages.properties
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/ExitCommandMessages.properties
Sat Jun 24 13:31:55 2006
@@ -14,4 +14,10 @@
 
 cli.usage.description=Exit the current shell
 
-cli.usage.footer=
\ No newline at end of file
+cli.usage.footer=
+
+##
+## Information messages
+##
+
+info.unexpected_args=Unexpected arguments: %s
\ No newline at end of file

Modified: geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/HelpCommandMessages.properties
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/HelpCommandMessages.properties?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/HelpCommandMessages.properties
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-core/src/main/resources/org/apache/geronimo/gshell/builtins/HelpCommandMessages.properties
Sat Jun 24 13:31:55 2006
@@ -14,4 +14,10 @@
 
 cli.usage.description=Display help
 
-cli.usage.footer=For a list of topics try: help topics
\ No newline at end of file
+cli.usage.footer=For a list of topics try: help topics
+
+##
+## Information messages
+##
+
+info.unexpected_args=Unexpected arguments: %s
\ No newline at end of file

Modified: geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java?rev=416949&r1=416948&r2=416949&view=diff
==============================================================================
--- geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java
(original)
+++ geronimo/sandbox/gshell/trunk/gshell-server/gshell-server-core/src/main/java/org/apache/geronimo/gshell/server/ServerCommand.java
Sat Jun 24 13:31:55 2006
@@ -17,13 +17,13 @@
 package org.apache.geronimo.gshell.server;
 
 import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
-import org.apache.commons.cli.PosixParser;
+
 import org.apache.geronimo.gshell.command.Command;
 import org.apache.geronimo.gshell.command.CommandSupport;
 import org.apache.geronimo.gshell.command.MessageSource;
+import org.apache.geronimo.gshell.command.CommandException;
 import org.apache.geronimo.gshell.console.IO;
 import org.apache.geronimo.gshell.server.SocketServerDaemon.SocketHandler;
 
@@ -56,35 +56,22 @@
         return options;
     }
 
-    protected int doExecute(final String[] args) throws Exception {
-        assert args != null;
-
-        MessageSource messages = getMessageSource();
-
-        IO io = getIO();
-
-        Options options = getOptions();
-
-        CommandLineParser parser = new PosixParser();
-        CommandLine line = parser.parse(options, args);
+    protected boolean processCommandLine(final CommandLine line) throws CommandException
{
+        assert line != null;
 
-        if (line.hasOption('h')) {
-            displayHelp(options);
-
-            return Command.SUCCESS;
-        }
+        boolean usage = false;
 
         if (line.hasOption('p')) {
             String tmp = line.getOptionValue('p');
             port = Integer.parseInt(tmp);
         }
 
-        server();
-
-        return Command.SUCCESS;
+        return usage;
     }
 
-    private void server() throws Exception {
+    protected int doExecute(final String[] args) throws Exception {
+        assert args != null;
+
         SocketHandler handler = new SocketHandler() {
             ShellServer server = new ShellServer();
 
@@ -104,5 +91,7 @@
         io.flush();
 
         daemon.start();
+
+        return Command.SUCCESS;
     }
 }



Mime
View raw message