You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2010/02/25 11:22:22 UTC

svn commit: r916222 - in /geronimo/server/trunk/framework: configs/rmi-naming/src/main/plan/ modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/ modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/ mod...

Author: genspring
Date: Thu Feb 25 10:22:22 2010
New Revision: 916222

URL: http://svn.apache.org/viewvc?rev=916222&view=rev
Log:
https://issues.apache.org/jira/browse/GERONIMO-3003,  port #896316 from 22 branch to trunk.

Added:
    geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java   (with props)
Modified:
    geronimo/server/trunk/framework/configs/rmi-naming/src/main/plan/plan.xml
    geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java
    geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
    geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java
    geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java

Modified: geronimo/server/trunk/framework/configs/rmi-naming/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/configs/rmi-naming/src/main/plan/plan.xml?rev=916222&r1=916221&r2=916222&view=diff
==============================================================================
--- geronimo/server/trunk/framework/configs/rmi-naming/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/framework/configs/rmi-naming/src/main/plan/plan.xml Thu Feb 25 10:22:22 2010
@@ -69,5 +69,11 @@
         <attribute name="maxPoolSize">500</attribute>
         <attribute name="poolName">DefaultThreadPool</attribute>
     </gbean>
+    
+    <gbean name="ConfiguredEncryption" class="org.apache.geronimo.system.util.ConfiguredEncryption">
+        <reference name="ServerInfo">
+            <name>ServerInfo</name>
+        </reference>
+    </gbean>
 
 </module>

Modified: geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java?rev=916222&r1=916221&r2=916222&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java Thu Feb 25 10:22:22 2010
@@ -1,366 +1,367 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.geronimo.cli.deployer;
-
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
-import org.apache.geronimo.cli.BaseCLParser;
-import org.apache.geronimo.cli.CLParserException;
-import org.apache.geronimo.cli.PrintHelper;
-
-
-/**
- * @version $Rev: 476049 $ $Date: 2006-11-17 15:35:17 +1100 (Fri, 17 Nov 2006) $
- */
-public class DeployerCLParser extends BaseCLParser implements ConnectionParams {
-    private final static String ARGUMENT_URI_SHORTFORM = "U";
-    private final static String ARGUMENT_URI = "uri";
-    
-    private final static String ARGUMENT_HOST_SHORTFORM = "host";
-    
-    private final static String ARGUMENT_PORT_SHORTFORM = "port";
-    private final static String ARGUMENT_PORT = "port";
-
-    private final static String ARGUMENT_DRIVER_SHORTFORM = "d";
-    private final static String ARGUMENT_DRIVER = "driver";
-
-    private final static String ARGUMENT_USER_SHORTFORM = "u";
-    private final static String ARGUMENT_USER = "user";
-
-    private final static String ARGUMENT_PASSWORD_SHORTFORM = "p";
-    private final static String ARGUMENT_PASSWORD = "password";
-
-    private final static String ARGUMENT_SYSERR_SHORTFORM = "s";
-    private final static String ARGUMENT_SYSERR = "syserr";
-
-    private final static String ARGUMENT_VERBOSE_SHORTFORM = "v";
-    private final static String ARGUMENT_VERBOSE = "verbose";
-
-    private final static String ARGUMENT_OFFLINE_SHORTFORM = "o";
-    private final static String ARGUMENT_OFFLINE = "offline";
-    
-    private final static String ARGUMENT_SECURE_SHORTFORM = "secure";
-    private final static String ARGUMENT_SECURE = "secure";
-
-    private final Collection<CommandMetaData> commandMetaData;
-
-    private CommandArgs commandArgs;
-    private CommandMetaData metaData;
-    
-    public DeployerCLParser(OutputStream out) {
-        super(out);
-        
-        commandMetaData = new ArrayList<CommandMetaData>();
-        commandMetaData.add(LoginCommandMetaData.META_DATA);
-        commandMetaData.add(DeployCommandMetaData.META_DATA);
-        commandMetaData.add(DistributeCommandMetaData.META_DATA);
-        commandMetaData.add(ListModulesCommandMetaData.META_DATA);
-        commandMetaData.add(ListTargetsCommandMetaData.META_DATA);
-        commandMetaData.add(RedeployCommandMetaData.META_DATA);
-        commandMetaData.add(StartCommandMetaData.META_DATA);
-        commandMetaData.add(StopCommandMetaData.META_DATA);
-        commandMetaData.add(RestartCommandMetaData.META_DATA);
-        commandMetaData.add(UndeployCommandMetaData.META_DATA);
-        commandMetaData.add(SearchPluginsCommandMetaData.META_DATA);
-        commandMetaData.add(InstallPluginCommandMetaData.META_DATA);
-        commandMetaData.add(HelpCommandMetaData.META_DATA);
-        commandMetaData.add(InstallLibraryCommandMetaData.META_DATA);
-
-        addURI();
-        addHost();
-        addPort();
-        addDriver();
-        addUser();
-        addPassword();
-        addSyserr();
-        addVerbose();
-        addOffline();
-        addSecure();
-    }
-    
-    public CommandMetaData getCommandMetaData() {
-        return metaData;
-    }
-
-    public CommandArgs getCommandArgs() {
-        return commandArgs;
-    }
-    
-    public String getURI() {
-        return commandLine.getOptionValue(ARGUMENT_URI_SHORTFORM);
-    }
-    
-    public String getHost() {
-        return commandLine.getOptionValue(ARGUMENT_HOST_SHORTFORM);
-    }
-    
-    public Integer getPort() {
-        String port = commandLine.getOptionValue(ARGUMENT_PORT_SHORTFORM);
-        if (null == port) {
-            return null;
-        }
-        return new Integer(port);
-    }
-
-    public String getDriver() {
-        return commandLine.getOptionValue(ARGUMENT_DRIVER_SHORTFORM);
-    }
-    
-    public String getUser() {
-        return commandLine.getOptionValue(ARGUMENT_USER_SHORTFORM);
-    }
-    
-    public String getPassword() {
-        return commandLine.getOptionValue(ARGUMENT_PASSWORD_SHORTFORM);
-    }
-    
-    public boolean isSyserr() {
-        return commandLine.hasOption(ARGUMENT_SYSERR_SHORTFORM);
-    }
-    
-    public boolean isVerbose() {
-        return commandLine.hasOption(ARGUMENT_VERBOSE_SHORTFORM);
-    }
-    
-    public boolean isOffline() {
-        return commandLine.hasOption(ARGUMENT_OFFLINE_SHORTFORM);
-    }
-    
-    public boolean isSecure() {
-        return commandLine.hasOption(ARGUMENT_SECURE_SHORTFORM);
-    }
-    
-    @Override
-    public void displayHelp() {
-        String[] args = new String[0];
-        if (null != commandArgs) {
-            args = commandArgs.getArgs();
-        } else if (null != metaData) {
-            args = new String[] {metaData.getCommandName()};
-        }
-        displayHelp(args);
-    }
-
-    @Override
-    protected void displayHelp(String[] args) {
-        PrintHelper printHelper = new PrintHelper(System.out);
-        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out), true);
-
-        out.println();
-        if(args.length > 0) {
-            CommandMetaData commandLine = getCommandMetaData(args[0]);
-            if(commandLine != null) {
-                out.println("Help for command: "+commandLine.getCommandName());
-                out.println("    "+hangingIndent(commandLine.getCommandName()+" "+commandLine.getHelpArgumentList(), 4));
-                out.println();
-                out.print(PrintHelper.reformat(commandLine.getHelpText(), 8, 72));
-                out.println();
-                return;
-            } else if(args[0].equals("options")) {
-                out.println("Help on general options:");
-                printHelper.printOptions(out, options);
-                out.println();
-                return;
-            } else if(args[0].equals("all")) {
-                out.println();
-                out.println("All commands");
-                out.println();
-                for (CommandMetaData commandLine2 : commandMetaData) {
-                    out.println("    "+hangingIndent(commandLine2.getCommandName()+" "+commandLine2.getHelpArgumentList(), 4));
-                    out.print(PrintHelper.reformat(commandLine2.getHelpText(), 8, 72));
-                    out.println();
-                }
-                out.println();
-                return;
-            }
-        }
-
-        out.println("usage: java -jar bin/deployer.jar [general options] command [command options]");
-        out.println();
-        out.println("The general options are:");
-        printHelper.printOptionsNoDesc(out, options);
-        out.println();
-        out.println("The available commands are:");
-        renderCommandList(out);
-        out.println();
-        out.println("For more information about a specific command, run");
-        out.println("    java -jar bin/deployer.jar help [command name]");
-        out.println();
-        out.println("For more information about all commands, run");
-        out.println("    java -jar bin/deployer.jar help all");
-        out.println();
-        out.println("For more information about general options, run");
-        out.println("    java -jar bin/deployer.jar help options");
-        out.println();
-    }
-
-    private void renderCommandList(PrintWriter out) {
-        Map temp = new HashMap();
-        for (CommandMetaData commandLine : commandMetaData) {
-            List list = (List) temp.get(commandLine.getCommandGroup());
-            if(list == null) {
-                list = new ArrayList();
-                temp.put(commandLine.getCommandGroup(), list);
-            }
-            list.add(commandLine.getCommandName());
-        }
-        List groups = new ArrayList(temp.keySet());
-        Collections.sort(groups);
-        for (int i = 0; i < groups.size(); i++) {
-            String name = (String) groups.get(i);
-            out.println("    "+name);
-            List list = (List) temp.get(name);
-            Collections.sort(list);
-            for (int j = 0; j < list.size(); j++) {
-                String cmd = (String) list.get(j);
-                out.println("        "+cmd);
-            }
-        }
-    }
-    
-    protected CommandMetaData getCommandMetaData(String commandName) {
-        for (CommandMetaData commandLine : commandMetaData) {
-            if (commandLine.getCommandName().equals(commandName)) {
-                return commandLine;
-            }
-        }
-        return null;
-    }
-
-    protected String hangingIndent(String source, int cols) {
-        String s = PrintHelper.reformat(source, cols, 72);
-        return s.substring(cols);
-    }
-    
-    @Override
-    protected void validateOptions() throws CLParserException {
-        try {
-            getPort();
-        } catch (NumberFormatException e) {
-            throw new CLParserException("Port [" + commandLine.getOptionValue(ARGUMENT_PORT_SHORTFORM) + "] is not an integer.", e);
-        }
-    }
-
-    @Override
-    protected void validateRemainingArgs() throws CLParserException {
-        String[] args = commandLine.getArgs();
-        if (0 == args.length) {
-            throw new CLParserException("No command has been provided.");
-        }
-        
-        String command = args[0];
-        metaData = getCommandMetaData(command);
-        if (null == metaData) {
-            throw new CLParserException("Command [" + command + "] is undefined.");
-        }
-        
-        String[] newArgs = new String[args.length - 1];
-        System.arraycopy(args, 1, newArgs, 0, newArgs.length);
-        commandArgs = metaData.parse(newArgs);
-    }
-    
-    protected void addOffline() {
-        options.addOption(ARGUMENT_OFFLINE_SHORTFORM,
-                ARGUMENT_OFFLINE,
-                false,
-                "Deploy offline to a local server, using whatever deployers are available in the local server");
-    }
-    
-    protected void addSecure() {
-        options.addOption(ARGUMENT_SECURE_SHORTFORM,
-                ARGUMENT_SECURE,
-                false,
-                "Use secure channel to communicate with the server.  Unsecured channel is used by default.");
-    }
-
-    protected void addVerbose() {
-        options.addOption(ARGUMENT_VERBOSE_SHORTFORM,
-                ARGUMENT_VERBOSE,
-                false,
-                "Enables verbose execution mode.  Disabled by default.");
-    }
-
-    protected void addSyserr() {
-        options.addOption(ARGUMENT_SYSERR_SHORTFORM,
-                ARGUMENT_SYSERR,
-                false,
-                "Enables error logging to syserr.  Disabled by default.");
-    }
-
-    protected void addPassword() {
-        addOptionWithParam(ARGUMENT_PASSWORD,
-                ARGUMENT_PASSWORD_SHORTFORM,
-                "password",
-                "Specifies a password to use to authenticate to the server.");
-    }
-
-    protected void addUser() {
-        addOptionWithParam(ARGUMENT_USER,
-                ARGUMENT_USER_SHORTFORM,
-                "username",
-                "If the deployment operation requires authentication, then you can "
-                        + "specify the username to use to connect.  If no password is specified, the "
-                        + "deployer will attempt to connect to the server with no password, and if "
-                        + "that fails, will prompt you for a password.");
-    }
-
-    protected void addDriver() {
-        addOptionWithParam(ARGUMENT_DRIVER,
-                ARGUMENT_DRIVER_SHORTFORM,
-                "driver.jar",
-                "If you want to use this tool with a server other than Geronimo, "
-                        + "then you must provide the path to its driver JAR.  Currently, manifest "
-                        + "Class-Path entries in that JAR are ignored.");
-    }
-
-    protected void addPort() {
-        addOptionWithParam(ARGUMENT_PORT,
-                ARGUMENT_PORT_SHORTFORM,
-                "port",
-                "The RMI listen port of a Geronimo server to deploy to.  This option is "
-                        + "not compatible with --uri, but is often used with --host.  The default port is 1099.");
-    }
-
-    protected void addHost() {
-        addOptionWithParam(ARGUMENT_HOST_SHORTFORM,
-                ARGUMENT_HOST_SHORTFORM,
-                "hostname",
-                "The host name of a Geronimo server to deploy to.  This option is "
-                        + "not compatible with --uri, but is often used with --port.");
-    }
-
-    protected void addURI() {
-        addOptionWithParam(ARGUMENT_URI,
-                ARGUMENT_URI_SHORTFORM,
-                "uri",
-                "A URI to contact the server.  If not specified, the deployer defaults to "
-                        + "operating on a Geronimo server running on the standard port on localhost.\n"
-                        + "A URI to connect to Geronimo (including optional host and port parameters) has the form: "
-                        + "deployer:geronimo:jmx[://host[:port]] (though you could also just use --host and --port instead).");
-    }
-
-}
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.cli.deployer;
+
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.geronimo.cli.BaseCLParser;
+import org.apache.geronimo.cli.CLParserException;
+import org.apache.geronimo.cli.PrintHelper;
+
+
+/**
+ * @version $Rev: 476049 $ $Date: 2006-11-17 15:35:17 +1100 (Fri, 17 Nov 2006) $
+ */
+public class DeployerCLParser extends BaseCLParser implements ConnectionParams {
+    private final static String ARGUMENT_URI_SHORTFORM = "U";
+    private final static String ARGUMENT_URI = "uri";
+    
+    private final static String ARGUMENT_HOST_SHORTFORM = "host";
+    
+    private final static String ARGUMENT_PORT_SHORTFORM = "port";
+    private final static String ARGUMENT_PORT = "port";
+
+    private final static String ARGUMENT_DRIVER_SHORTFORM = "d";
+    private final static String ARGUMENT_DRIVER = "driver";
+
+    private final static String ARGUMENT_USER_SHORTFORM = "u";
+    private final static String ARGUMENT_USER = "user";
+
+    private final static String ARGUMENT_PASSWORD_SHORTFORM = "p";
+    private final static String ARGUMENT_PASSWORD = "password";
+
+    private final static String ARGUMENT_SYSERR_SHORTFORM = "s";
+    private final static String ARGUMENT_SYSERR = "syserr";
+
+    private final static String ARGUMENT_VERBOSE_SHORTFORM = "v";
+    private final static String ARGUMENT_VERBOSE = "verbose";
+
+    private final static String ARGUMENT_OFFLINE_SHORTFORM = "o";
+    private final static String ARGUMENT_OFFLINE = "offline";
+    
+    private final static String ARGUMENT_SECURE_SHORTFORM = "secure";
+    private final static String ARGUMENT_SECURE = "secure";
+
+    private final Collection<CommandMetaData> commandMetaData;
+
+    private CommandArgs commandArgs;
+    private CommandMetaData metaData;
+    
+    public DeployerCLParser(OutputStream out) {
+        super(out);
+        
+        commandMetaData = new ArrayList<CommandMetaData>();
+        commandMetaData.add(LoginCommandMetaData.META_DATA);
+        commandMetaData.add(DeployCommandMetaData.META_DATA);
+        commandMetaData.add(DistributeCommandMetaData.META_DATA);
+        commandMetaData.add(ListModulesCommandMetaData.META_DATA);
+        commandMetaData.add(ListTargetsCommandMetaData.META_DATA);
+        commandMetaData.add(RedeployCommandMetaData.META_DATA);
+        commandMetaData.add(StartCommandMetaData.META_DATA);
+        commandMetaData.add(StopCommandMetaData.META_DATA);
+        commandMetaData.add(RestartCommandMetaData.META_DATA);
+        commandMetaData.add(UndeployCommandMetaData.META_DATA);
+        commandMetaData.add(SearchPluginsCommandMetaData.META_DATA);
+        commandMetaData.add(InstallPluginCommandMetaData.META_DATA);
+        commandMetaData.add(HelpCommandMetaData.META_DATA);
+        commandMetaData.add(InstallLibraryCommandMetaData.META_DATA);
+        commandMetaData.add(EncryptCommandMetaData.META_DATA);
+
+        addURI();
+        addHost();
+        addPort();
+        addDriver();
+        addUser();
+        addPassword();
+        addSyserr();
+        addVerbose();
+        addOffline();
+        addSecure();
+    }
+    
+    public CommandMetaData getCommandMetaData() {
+        return metaData;
+    }
+
+    public CommandArgs getCommandArgs() {
+        return commandArgs;
+    }
+    
+    public String getURI() {
+        return commandLine.getOptionValue(ARGUMENT_URI_SHORTFORM);
+    }
+    
+    public String getHost() {
+        return commandLine.getOptionValue(ARGUMENT_HOST_SHORTFORM);
+    }
+    
+    public Integer getPort() {
+        String port = commandLine.getOptionValue(ARGUMENT_PORT_SHORTFORM);
+        if (null == port) {
+            return null;
+        }
+        return new Integer(port);
+    }
+
+    public String getDriver() {
+        return commandLine.getOptionValue(ARGUMENT_DRIVER_SHORTFORM);
+    }
+    
+    public String getUser() {
+        return commandLine.getOptionValue(ARGUMENT_USER_SHORTFORM);
+    }
+    
+    public String getPassword() {
+        return commandLine.getOptionValue(ARGUMENT_PASSWORD_SHORTFORM);
+    }
+    
+    public boolean isSyserr() {
+        return commandLine.hasOption(ARGUMENT_SYSERR_SHORTFORM);
+    }
+    
+    public boolean isVerbose() {
+        return commandLine.hasOption(ARGUMENT_VERBOSE_SHORTFORM);
+    }
+    
+    public boolean isOffline() {
+        return commandLine.hasOption(ARGUMENT_OFFLINE_SHORTFORM);
+    }
+    
+    public boolean isSecure() {
+        return commandLine.hasOption(ARGUMENT_SECURE_SHORTFORM);
+    }
+    
+    @Override
+    public void displayHelp() {
+        String[] args = new String[0];
+        if (null != commandArgs) {
+            args = commandArgs.getArgs();
+        } else if (null != metaData) {
+            args = new String[] {metaData.getCommandName()};
+        }
+        displayHelp(args);
+    }
+
+    @Override
+    protected void displayHelp(String[] args) {
+        PrintHelper printHelper = new PrintHelper(System.out);
+        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out), true);
+
+        out.println();
+        if(args.length > 0) {
+            CommandMetaData commandLine = getCommandMetaData(args[0]);
+            if(commandLine != null) {
+                out.println("Help for command: "+commandLine.getCommandName());
+                out.println("    "+hangingIndent(commandLine.getCommandName()+" "+commandLine.getHelpArgumentList(), 4));
+                out.println();
+                out.print(PrintHelper.reformat(commandLine.getHelpText(), 8, 72));
+                out.println();
+                return;
+            } else if(args[0].equals("options")) {
+                out.println("Help on general options:");
+                printHelper.printOptions(out, options);
+                out.println();
+                return;
+            } else if(args[0].equals("all")) {
+                out.println();
+                out.println("All commands");
+                out.println();
+                for (CommandMetaData commandLine2 : commandMetaData) {
+                    out.println("    "+hangingIndent(commandLine2.getCommandName()+" "+commandLine2.getHelpArgumentList(), 4));
+                    out.print(PrintHelper.reformat(commandLine2.getHelpText(), 8, 72));
+                    out.println();
+                }
+                out.println();
+                return;
+            }
+        }
+
+        out.println("usage: java -jar bin/deployer.jar [general options] command [command options]");
+        out.println();
+        out.println("The general options are:");
+        printHelper.printOptionsNoDesc(out, options);
+        out.println();
+        out.println("The available commands are:");
+        renderCommandList(out);
+        out.println();
+        out.println("For more information about a specific command, run");
+        out.println("    java -jar bin/deployer.jar help [command name]");
+        out.println();
+        out.println("For more information about all commands, run");
+        out.println("    java -jar bin/deployer.jar help all");
+        out.println();
+        out.println("For more information about general options, run");
+        out.println("    java -jar bin/deployer.jar help options");
+        out.println();
+    }
+
+    private void renderCommandList(PrintWriter out) {
+        Map temp = new HashMap();
+        for (CommandMetaData commandLine : commandMetaData) {
+            List list = (List) temp.get(commandLine.getCommandGroup());
+            if(list == null) {
+                list = new ArrayList();
+                temp.put(commandLine.getCommandGroup(), list);
+            }
+            list.add(commandLine.getCommandName());
+        }
+        List groups = new ArrayList(temp.keySet());
+        Collections.sort(groups);
+        for (int i = 0; i < groups.size(); i++) {
+            String name = (String) groups.get(i);
+            out.println("    "+name);
+            List list = (List) temp.get(name);
+            Collections.sort(list);
+            for (int j = 0; j < list.size(); j++) {
+                String cmd = (String) list.get(j);
+                out.println("        "+cmd);
+            }
+        }
+    }
+    
+    protected CommandMetaData getCommandMetaData(String commandName) {
+        for (CommandMetaData commandLine : commandMetaData) {
+            if (commandLine.getCommandName().equals(commandName)) {
+                return commandLine;
+            }
+        }
+        return null;
+    }
+
+    protected String hangingIndent(String source, int cols) {
+        String s = PrintHelper.reformat(source, cols, 72);
+        return s.substring(cols);
+    }
+    
+    @Override
+    protected void validateOptions() throws CLParserException {
+        try {
+            getPort();
+        } catch (NumberFormatException e) {
+            throw new CLParserException("Port [" + commandLine.getOptionValue(ARGUMENT_PORT_SHORTFORM) + "] is not an integer.", e);
+        }
+    }
+
+    @Override
+    protected void validateRemainingArgs() throws CLParserException {
+        String[] args = commandLine.getArgs();
+        if (0 == args.length) {
+            throw new CLParserException("No command has been provided.");
+        }
+        
+        String command = args[0];
+        metaData = getCommandMetaData(command);
+        if (null == metaData) {
+            throw new CLParserException("Command [" + command + "] is undefined.");
+        }
+        
+        String[] newArgs = new String[args.length - 1];
+        System.arraycopy(args, 1, newArgs, 0, newArgs.length);
+        commandArgs = metaData.parse(newArgs);
+    }
+    
+    protected void addOffline() {
+        options.addOption(ARGUMENT_OFFLINE_SHORTFORM,
+                ARGUMENT_OFFLINE,
+                false,
+                "Deploy offline to a local server, using whatever deployers are available in the local server");
+    }
+    
+    protected void addSecure() {
+        options.addOption(ARGUMENT_SECURE_SHORTFORM,
+                ARGUMENT_SECURE,
+                false,
+                "Use secure channel to communicate with the server.  Unsecured channel is used by default.");
+    }
+
+    protected void addVerbose() {
+        options.addOption(ARGUMENT_VERBOSE_SHORTFORM,
+                ARGUMENT_VERBOSE,
+                false,
+                "Enables verbose execution mode.  Disabled by default.");
+    }
+
+    protected void addSyserr() {
+        options.addOption(ARGUMENT_SYSERR_SHORTFORM,
+                ARGUMENT_SYSERR,
+                false,
+                "Enables error logging to syserr.  Disabled by default.");
+    }
+
+    protected void addPassword() {
+        addOptionWithParam(ARGUMENT_PASSWORD,
+                ARGUMENT_PASSWORD_SHORTFORM,
+                "password",
+                "Specifies a password to use to authenticate to the server.");
+    }
+
+    protected void addUser() {
+        addOptionWithParam(ARGUMENT_USER,
+                ARGUMENT_USER_SHORTFORM,
+                "username",
+                "If the deployment operation requires authentication, then you can "
+                        + "specify the username to use to connect.  If no password is specified, the "
+                        + "deployer will attempt to connect to the server with no password, and if "
+                        + "that fails, will prompt you for a password.");
+    }
+
+    protected void addDriver() {
+        addOptionWithParam(ARGUMENT_DRIVER,
+                ARGUMENT_DRIVER_SHORTFORM,
+                "driver.jar",
+                "If you want to use this tool with a server other than Geronimo, "
+                        + "then you must provide the path to its driver JAR.  Currently, manifest "
+                        + "Class-Path entries in that JAR are ignored.");
+    }
+
+    protected void addPort() {
+        addOptionWithParam(ARGUMENT_PORT,
+                ARGUMENT_PORT_SHORTFORM,
+                "port",
+                "The RMI listen port of a Geronimo server to deploy to.  This option is "
+                        + "not compatible with --uri, but is often used with --host.  The default port is 1099.");
+    }
+
+    protected void addHost() {
+        addOptionWithParam(ARGUMENT_HOST_SHORTFORM,
+                ARGUMENT_HOST_SHORTFORM,
+                "hostname",
+                "The host name of a Geronimo server to deploy to.  This option is "
+                        + "not compatible with --uri, but is often used with --port.");
+    }
+
+    protected void addURI() {
+        addOptionWithParam(ARGUMENT_URI,
+                ARGUMENT_URI_SHORTFORM,
+                "uri",
+                "A URI to contact the server.  If not specified, the deployer defaults to "
+                        + "operating on a Geronimo server running on the standard port on localhost.\n"
+                        + "A URI to connect to Geronimo (including optional host and port parameters) has the form: "
+                        + "deployer:geronimo:jmx[://host[:port]] (though you could also just use --host and --port instead).");
+    }
+
+}

Added: geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java?rev=916222&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java Thu Feb 25 10:22:22 2010
@@ -0,0 +1,36 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.cli.deployer;
+
+
+/**
+ * @version $Rev: $ $Date: $
+ */
+public class EncryptCommandMetaData extends BaseCommandMetaData  {
+    public static final CommandMetaData META_DATA = new EncryptCommandMetaData();
+    
+    private EncryptCommandMetaData() {
+        super("encrypt", "2. Other Commands", "",
+                "Encrypt a string for use in deployment plan.\n" +
+                "If you want to use a running server to do the encryption (so that\n" +
+                "you will use the encryption setting of that server, make sure the\n" +
+                "server is running and specify the general options to connect to it.\n" +
+                "If you want to use the common simple encryption, use the --offline\n" +
+                "option. No running server is required in this case.");
+    }
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java?rev=916222&r1=916221&r2=916222&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java Thu Feb 25 10:22:22 2010
@@ -344,4 +344,7 @@
     public void setInPlace(boolean inPlace) {
         commandContext.setInPlace(inPlace);
     }
+    public Kernel getKernel() {
+        return kernel;
+    }
 }

Added: geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java?rev=916222&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java Thu Feb 25 10:22:22 2010
@@ -0,0 +1,63 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.geronimo.deployment.cli;
+
+import javax.enterprise.deploy.spi.DeploymentManager;
+
+import org.apache.geronimo.cli.deployer.CommandArgs;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.crypto.EncryptionManager;
+import org.apache.geronimo.deployment.plugin.jmx.RemoteDeploymentManager;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.system.util.ConfiguredEncryption;
+
+/**
+ * The CLI command to encrypt a given string.
+ *
+ * @version $Rev:  $ $Date:  $
+ */
+public class CommandEncrypt extends AbstractCommand {
+
+    public void execute(ConsoleReader consoleReader, ServerConnection connection, CommandArgs commandArgs) throws DeploymentException {
+        try {
+            if (commandArgs.getArgs().length == 0) {
+                consoleReader.printString(DeployUtils.reformat("Please enter the string to be encrypted after the encrypt command.", 4, 72));
+                return;
+            }
+            if (commandArgs.getArgs().length > 1) {
+                consoleReader.printString(DeployUtils.reformat("Too many parameters. Only the first string will be encrypted.", 4, 72));
+            }
+            
+            consoleReader.printString(DeployUtils.reformat("String to encrypt: "+commandArgs.getArgs()[0], 4, 72));
+            DeploymentManager dm = connection.getDeploymentManager();
+            if (dm instanceof RemoteDeploymentManager) {
+                // Online encryption
+                Kernel k = ((RemoteDeploymentManager)dm).getKernel();
+                Object ret = k.invoke(ConfiguredEncryption.class, "encrypt", new Object[] {commandArgs.getArgs()[0]}, new String[] {"java.lang.String"});
+                consoleReader.printString(DeployUtils.reformat("Online encryption result: "+ret, 4, 72));
+            } else {
+                // Offline encryption
+                Object ret = EncryptionManager.encrypt(commandArgs.getArgs()[0]);
+                consoleReader.printString(DeployUtils.reformat("Offline encryption result: "+ret, 4, 72));
+            }
+            consoleReader.printNewline();
+        } catch (Exception e) {
+            throw new DeploymentException("Unable to reach the server to do the encryption.", e);
+        }
+    }
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java?rev=916222&r1=916221&r2=916222&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java Thu Feb 25 10:22:22 2010
@@ -32,12 +32,14 @@
 
 import javax.enterprise.deploy.spi.factories.DeploymentFactory;
 
+
 import org.apache.geronimo.cli.deployer.CommandArgs;
 import org.apache.geronimo.cli.deployer.CommandFileCommandMetaData;
 import org.apache.geronimo.cli.deployer.CommandMetaData;
 import org.apache.geronimo.cli.deployer.DeployCommandMetaData;
 import org.apache.geronimo.cli.deployer.DeployerCLParser;
 import org.apache.geronimo.cli.deployer.DistributeCommandMetaData;
+import org.apache.geronimo.cli.deployer.EncryptCommandMetaData;
 import org.apache.geronimo.cli.deployer.InstallLibraryCommandMetaData;
 import org.apache.geronimo.cli.deployer.InstallPluginCommandMetaData;
 import org.apache.geronimo.cli.deployer.ListModulesCommandMetaData;
@@ -89,6 +91,7 @@
         commands.put(SearchPluginsCommandMetaData.META_DATA, new CommandListConfigurations());
         commands.put(InstallPluginCommandMetaData.META_DATA, new CommandInstallCAR());
         commands.put(InstallLibraryCommandMetaData.META_DATA, new CommandInstallLibrary());
+        commands.put(EncryptCommandMetaData.META_DATA, new CommandEncrypt());
     }
 
     private boolean failed = false;
@@ -107,13 +110,13 @@
         this.kernel = kernel;
         this.deploymentFactory = deploymentFactory;
     }
-
+    
     public int execute(Object opaque) {
         if (! (opaque instanceof DeployerCLParser)) {
             throw new IllegalArgumentException("Argument type is [" + opaque.getClass() + "]; expected [" + DeployerCLParser.class + "]");
         }
         DeployerCLParser parser = (DeployerCLParser) opaque;
-
+        
         PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out), true);
         InputStream in = System.in;
 

Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java?rev=916222&r1=916221&r2=916222&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java Thu Feb 25 10:22:22 2010
@@ -58,6 +58,10 @@
 
 
     public ConfiguredEncryption(String path, ServerInfo serverInfo) throws IOException, ClassNotFoundException {
+        if (path == null || "".equals(path)) {
+            spec = null;
+            return;
+        }
         File location = serverInfo.resolve(path);
         if (location.exists()) {
             FileInputStream in = new FileInputStream(location);
@@ -100,7 +104,9 @@
     }
 
     public void doStart() throws Exception {
-        EncryptionManager.setEncryptionPrefix("{Configured}", this);
+        if (spec != null) {
+            EncryptionManager.setEncryptionPrefix("{Configured}", this);
+        }
     }
 
     public void doStop() throws Exception {
@@ -112,6 +118,10 @@
     protected SecretKeySpec getSecretKeySpec() {
         return spec;
     }
+    
+    public String encrypt(String text) {
+        return EncryptionManager.encrypt(text);
+    }
 
     public static final GBeanInfo GBEAN_INFO;
 
@@ -120,6 +130,7 @@
         infoBuilder.addAttribute("path", String.class, true, true);
         infoBuilder.addReference("ServerInfo", ServerInfo.class, "GBean");
         infoBuilder.setConstructor(new String[]{"path", "ServerInfo"});
+        infoBuilder.addOperation("encrypt", new Class[] {String.class}, "java.lang.String");
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }