diff options
author | Keith Wall <kwall@apache.org> | 2012-02-02 18:57:08 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2012-02-02 18:57:08 +0000 |
commit | 317c8a127c4393a3f32820345ae77fbe21d49f73 (patch) | |
tree | 3e958ec83e9fbbd4188066c0d859a18523ea4800 | |
parent | e621511c02b50ef28d5b36bc5b978b17a59b3f30 (diff) | |
download | qpid-python-317c8a127c4393a3f32820345ae77fbe21d49f73.tar.gz |
QPID-3802: Broker command line processing --help (-h) and --version (-v) no longer work
Applied patch from Andrew MacBean <andymacbean@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1239759 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 99 insertions, 52 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java index 5b39df4c94..1f96a24701 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java @@ -30,9 +30,6 @@ import java.util.Set; public class BrokerOptions { - /** serialVersionUID */ - private static final long serialVersionUID = 8051825964945442234L; - public static final String DEFAULT_CONFIG_FILE = "etc/config.xml"; public static final String DEFAULT_LOG_CONFIG_FILE = "etc/log4j.xml"; public static final String QPID_HOME = "QPID_HOME"; diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java index 6f06500033..ee7426a31f 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java @@ -28,7 +28,8 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.log4j.Logger; - +import org.apache.qpid.common.QpidProperties; +import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.server.Broker.InitException; import org.apache.qpid.server.registry.ApplicationRegistry; @@ -125,7 +126,7 @@ public class Main OPTIONS.addOption(OPTION_JMX_PORT_CONNECTOR_SERVER); } - private CommandLine commandLine; + protected CommandLine _commandLine; public static void main(String[] args) { @@ -161,7 +162,7 @@ public class Main { try { - commandLine = new PosixParser().parse(OPTIONS, args); + _commandLine = new PosixParser().parse(OPTIONS, args); return true; } @@ -177,66 +178,93 @@ public class Main protected void execute() throws Exception { - BrokerOptions options = new BrokerOptions(); - String configFile = commandLine.getOptionValue(OPTION_CONFIG_FILE.getOpt()); - if(configFile != null) + if (_commandLine.hasOption(OPTION_HELP.getOpt())) { - options.setConfigFile(configFile); + final HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp("Qpid", OPTIONS, true); } - - String logWatchConfig = commandLine.getOptionValue(OPTION_LOG_WATCH.getOpt()); - if(logWatchConfig != null) + else if (_commandLine.hasOption(OPTION_VERSION.getOpt())) { - options.setLogWatchFrequency(Integer.parseInt(logWatchConfig)); - } + final StringBuilder protocol = new StringBuilder("AMQP version(s) [major.minor]: "); + boolean first = true; + for (final ProtocolVersion pv : ProtocolVersion.getSupportedProtocolVersions()) + { + if (first) + { + first = false; + } + else + { + protocol.append(", "); + } - String logConfig = commandLine.getOptionValue(OPTION_LOG_CONFIG_FILE.getOpt()); - if(logConfig != null) - { - options.setLogConfigFile(logConfig); + protocol.append(pv.getMajorVersion()).append('-').append(pv.getMinorVersion()); + } + System.out.println(QpidProperties.getVersionString() + " (" + protocol + ")"); } - - String jmxPortRegistryServer = commandLine.getOptionValue(OPTION_JMX_PORT_REGISTRY_SERVER.getOpt()); - if(jmxPortRegistryServer != null) + else { - options.setJmxPortRegistryServer(Integer.parseInt(jmxPortRegistryServer)); - } + BrokerOptions options = new BrokerOptions(); + String configFile = _commandLine.getOptionValue(OPTION_CONFIG_FILE.getOpt()); + if(configFile != null) + { + options.setConfigFile(configFile); + } - String jmxPortConnectorServer = commandLine.getOptionValue(OPTION_JMX_PORT_CONNECTOR_SERVER.getLongOpt()); - if(jmxPortConnectorServer != null) - { - options.setJmxPortConnectorServer(Integer.parseInt(jmxPortConnectorServer)); - } + String logWatchConfig = _commandLine.getOptionValue(OPTION_LOG_WATCH.getOpt()); + if(logWatchConfig != null) + { + options.setLogWatchFrequency(Integer.parseInt(logWatchConfig)); + } - String bindAddr = commandLine.getOptionValue(OPTION_BIND.getOpt()); - if (bindAddr != null) - { - options.setBind(bindAddr); - } + String logConfig = _commandLine.getOptionValue(OPTION_LOG_CONFIG_FILE.getOpt()); + if(logConfig != null) + { + options.setLogConfigFile(logConfig); + } - String[] portStr = commandLine.getOptionValues(OPTION_PORT.getOpt()); - if(portStr != null) - { - parsePortArray(options, portStr, false); - for(ProtocolExclusion pe : ProtocolExclusion.values()) + String jmxPortRegistryServer = _commandLine.getOptionValue(OPTION_JMX_PORT_REGISTRY_SERVER.getOpt()); + if(jmxPortRegistryServer != null) { - parsePortArray(options, commandLine.getOptionValues(pe.getExcludeName()), pe); + options.setJmxPortRegistryServer(Integer.parseInt(jmxPortRegistryServer)); } - } - String[] sslPortStr = commandLine.getOptionValues(OPTION_SSLPORT.getOpt()); - if(sslPortStr != null) - { - parsePortArray(options, sslPortStr, true); - for(ProtocolExclusion pe : ProtocolExclusion.values()) + String jmxPortConnectorServer = _commandLine.getOptionValue(OPTION_JMX_PORT_CONNECTOR_SERVER.getLongOpt()); + if(jmxPortConnectorServer != null) { - parsePortArray(options, commandLine.getOptionValues(pe.getExcludeName()), pe); + options.setJmxPortConnectorServer(Integer.parseInt(jmxPortConnectorServer)); } - } - - setExceptionHandler(); - - startBroker(options); + + String bindAddr = _commandLine.getOptionValue(OPTION_BIND.getOpt()); + if (bindAddr != null) + { + options.setBind(bindAddr); + } + + String[] portStr = _commandLine.getOptionValues(OPTION_PORT.getOpt()); + if(portStr != null) + { + parsePortArray(options, portStr, false); + for(ProtocolExclusion pe : ProtocolExclusion.values()) + { + parsePortArray(options, _commandLine.getOptionValues(pe.getExcludeName()), pe); + } + } + + String[] sslPortStr = _commandLine.getOptionValues(OPTION_SSLPORT.getOpt()); + if(sslPortStr != null) + { + parsePortArray(options, sslPortStr, true); + for(ProtocolExclusion pe : ProtocolExclusion.values()) + { + parsePortArray(options, _commandLine.getOptionValues(pe.getExcludeName()), pe); + } + } + + setExceptionHandler(); + + startBroker(options); + } } protected void setExceptionHandler() diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/MainTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/MainTest.java index bdb25a484f..31d5028536 100644 --- a/qpid/java/broker/src/test/java/org/apache/qpid/server/MainTest.java +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/MainTest.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server; +import org.apache.commons.cli.CommandLine; import org.apache.qpid.test.utils.QpidTestCase; import java.util.EnumSet; @@ -145,6 +146,22 @@ public class MainTest extends QpidTestCase assertEquals(9, options.getLogWatchFrequency()); } + public void testVersion() + { + final TestMain main = new TestMain("-v".split("\\s")); + + assertNotNull("Command line not parsed correctly", main.getCommandLine()); + assertTrue("Parsed command line didnt pick up version option", main.getCommandLine().hasOption("v")); + } + + public void testHelp() + { + final TestMain main = new TestMain("-h".split("\\s")); + + assertNotNull("Command line not parsed correctly", main.getCommandLine()); + assertTrue("Parsed command line didnt pick up help option", main.getCommandLine().hasOption("h")); + } + private BrokerOptions startDummyMain(String commandLine) { return (new TestMain(commandLine.split("\\s"))).getOptions(); @@ -174,5 +191,10 @@ public class MainTest extends QpidTestCase { return _options; } + + public CommandLine getCommandLine() + { + return _commandLine; + } } } |