This is an automated email from the ASF dual-hosted git repository. yuanbo pushed a commit to branch TUBEMQ-469 in repository https://gitbox.apache.org/repos/asf/incubator-tubemq.git
commit 1b0f45534c7cd7afc40830c65143808699d14b3d Author: gosonzhang <[email protected]> AuthorDate: Thu Jan 28 17:42:35 2021 +0800 [TUBEMQ-547]Recode the implementation of the *Startup.java classes in the Tool package --- LICENSE | 1 - .../tubemq/server/common/fielddef/CliArgDef.java | 6 +- .../apache/tubemq/server/tools/BrokerStartup.java | 24 ++++++- .../org/apache/tubemq/server/tools/CliUtils.java | 72 ++++++++++++++++++++ .../apache/tubemq/server/tools/MasterStartup.java | 21 +++++- .../org/apache/tubemq/server/tools/ToolUtils.java | 78 ---------------------- 6 files changed, 116 insertions(+), 86 deletions(-) diff --git a/LICENSE b/LICENSE index 4834d76..a2d97e6 100644 --- a/LICENSE +++ b/LICENSE @@ -303,7 +303,6 @@ License: https://github.com/webx/citrus/blob/r3.1.4/pom.xml 5. bin/broker.sh bin/master.sh - tubemq-server/src/main/java/org/apache/tubemq/server/tools/ToolUtils.java Metamorphosis metamorphosis-all-1.4.4 (Please note that the software have been modified.) Copyrighy (C) Alibaba Group Holding Limited. License: https://github.com/killme2008/Metamorphosis/blob/metamorphosis-all-1.4.4/COPYING.txt diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java index 2e39f2f..1e1feea 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/common/fielddef/CliArgDef.java @@ -100,8 +100,10 @@ public enum CliArgDef { "String: http call method", "Http call method"), ADMINMETHOD(null, "show-methods", - "Return http's methods."); - + "Return http's methods."), + FILEPATH("f", "file", + "String: file path.", + "File path."); diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/BrokerStartup.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/BrokerStartup.java index a966278..12d6189 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/BrokerStartup.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/BrokerStartup.java @@ -19,12 +19,30 @@ package org.apache.tubemq.server.tools; import org.apache.tubemq.server.broker.BrokerConfig; import org.apache.tubemq.server.broker.TubeBroker; +import org.apache.tubemq.server.common.utils.ProcessResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class BrokerStartup { + + private static final Logger logger = + LoggerFactory.getLogger(BrokerStartup.class); + public static void main(final String[] args) throws Exception { - final String configFilePath = ToolUtils.getConfigFilePath(args); - final BrokerConfig tubeConfig = ToolUtils.getBrokerConfig(configFilePath); - final TubeBroker server = new TubeBroker(tubeConfig); + // get configure file path + ProcessResult result = new ProcessResult(); + if (!CliUtils.getConfigFilePath(args, result)) { + System.err.println(result.errInfo); + System.exit(1); + } + String configFilePath = (String) result.retData1; + // read configure file + BrokerConfig brokerConfig = new BrokerConfig(); + brokerConfig.loadFromFile(configFilePath); + logger.info("[BrokerStartup] Broker config is: " + brokerConfig); + // start broker instance + final TubeBroker server = new TubeBroker(brokerConfig); server.start(); } } diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/CliUtils.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/CliUtils.java new file mode 100644 index 0000000..d2a25c5 --- /dev/null +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/CliUtils.java @@ -0,0 +1,72 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.tubemq.server.tools; + +import static org.apache.tubemq.server.common.fielddef.CliArgDef.FILEPATH; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.tubemq.corebase.utils.TStringUtils; +import org.apache.tubemq.server.common.utils.ProcessResult; + + + +public class CliUtils { + + public static boolean getConfigFilePath(final String[] args, ProcessResult result) { + // build file option + Options options = new Options(); + Option fileOption = new Option(FILEPATH.opt, + FILEPATH.longOpt, FILEPATH.hasArg, FILEPATH.optDesc); + if (FILEPATH.hasArg) { + fileOption.setArgName(FILEPATH.argDesc); + } + options.addOption(fileOption); + // parse args + CommandLineParser parser = new DefaultParser(); + try { + CommandLine cli = parser.parse(options, args); + if (cli == null) { + result.setFailResult("Parse args failure"); + return result.success; + } + if (!cli.hasOption(FILEPATH.longOpt)) { + result.setFailResult(new StringBuilder(512) + .append("Please input the configuration file path by ") + .append("-").append(FILEPATH.opt).append(" or ") + .append("-").append(FILEPATH.longOpt).append(" option").toString()); + return result.success; + } + String configFilePath = cli.getOptionValue(FILEPATH.longOpt); + if (TStringUtils.isBlank(configFilePath)) { + result.setFailResult(new StringBuilder(512) + .append(FILEPATH.longOpt).append(" is required!").toString()); + return result.success; + } + result.setSuccResult(configFilePath); + } catch (Throwable e) { + result.setFailResult(new StringBuilder(512) + .append("Parse configuration file path failure: ") + .append(e.toString()).toString()); + } + return result.success; + } +} diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/MasterStartup.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/MasterStartup.java index a770f40..1d441f1 100644 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/MasterStartup.java +++ b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/MasterStartup.java @@ -17,13 +17,30 @@ package org.apache.tubemq.server.tools; +import org.apache.tubemq.server.common.utils.ProcessResult; import org.apache.tubemq.server.master.MasterConfig; import org.apache.tubemq.server.master.TMaster; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class MasterStartup { + + private static final Logger logger = + LoggerFactory.getLogger(MasterStartup.class); + public static void main(final String[] args) throws Exception { - final String configFilePath = ToolUtils.getConfigFilePath(args); - final MasterConfig masterConfig = ToolUtils.getMasterConfig(configFilePath); + // get configure file path + ProcessResult result = new ProcessResult(); + if (!CliUtils.getConfigFilePath(args, result)) { + System.err.println(result.errInfo); + System.exit(1); + } + String configFilePath = (String) result.retData1; + // read configure file + final MasterConfig masterConfig = new MasterConfig(); + masterConfig.loadFromFile(configFilePath); + logger.info("[MasterStartup] master config is: " + masterConfig); + // start master instance TMaster master = new TMaster(masterConfig); master.start(); master.join(); diff --git a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/ToolUtils.java b/tubemq-server/src/main/java/org/apache/tubemq/server/tools/ToolUtils.java deleted file mode 100644 index 9c343a8..0000000 --- a/tubemq-server/src/main/java/org/apache/tubemq/server/tools/ToolUtils.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * 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 - * <p> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p> - * 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.tubemq.server.tools; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import org.apache.tubemq.corebase.utils.TStringUtils; -import org.apache.tubemq.server.broker.BrokerConfig; -import org.apache.tubemq.server.broker.exception.StartupException; -import org.apache.tubemq.server.master.MasterConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Utility for .ini configure file loading. - * Copied from <a href="https://github.com/killme2008/Metamorphosis">Metamorphosis Project</a> - */ -public class ToolUtils { - - private static final Logger logger = LoggerFactory.getLogger(ToolUtils.class); - - public static BrokerConfig getBrokerConfig(final String configFilePath) { - final BrokerConfig brokerConfig = new BrokerConfig(); - brokerConfig.loadFromFile(configFilePath); - logger.info("Broker config is: " + brokerConfig); - return brokerConfig; - } - - public static MasterConfig getMasterConfig(final String configFilePath) { - final MasterConfig masterConfig = new MasterConfig(); - masterConfig.loadFromFile(configFilePath); - logger.info("master config is: " + masterConfig); - return masterConfig; - } - - public static String getConfigFilePath(final String[] args) throws StartupException { - final Options options = new Options(); - final Option file = new Option("f", true, "configuration file path"); - options.addOption(file); - final CommandLineParser parser = new DefaultParser(); - CommandLine line = null; - try { - line = parser.parse(options, args); - } catch (final ParseException e) { - throw new StartupException("Parse command line failed", e); - } - String configFilePath = null; - if (line.hasOption("f")) { - configFilePath = line.getOptionValue("f"); - } else { - System.err.println("Please tell me the configuration file path by -f option"); - System.exit(1); - } - if (TStringUtils.isBlank(configFilePath)) { - throw new StartupException("Blank file path"); - } - return configFilePath; - } -}
