You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2017/08/14 16:18:36 UTC
[5/5] logging-log4j2 git commit: LOG4J2-2011 replace JCommander
command line parser with picocli to let users run Log4j2 utility applications
without requiring an external dependency
LOG4J2-2011 replace JCommander command line parser with picocli to let users run Log4j2 utility applications without requiring an external dependency
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c2818bec
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c2818bec
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c2818bec
Branch: refs/heads/master
Commit: c2818beca59e948c205c359f714f24eff7340477
Parents: 57bbd88
Author: rpopma <rp...@apache.org>
Authored: Tue Aug 15 01:18:19 2017 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Aug 15 01:18:19 2017 +0900
----------------------------------------------------------------------
NOTICE.txt | 3 +
log4j-1.2-api/pom.xml | 6 -
.../config/Log4j1ConfigurationConverter.java | 37 +-
.../core/util/BasicCommandLineArguments.java | 17 +-
.../log4j/core/util/InetAddressConverter.java | 35 -
.../log4j/core/util/picocli/CommandLine.java | 3900 ++++++++++++++++++
.../core/util/picocli/CommandLineHelpTest.java | 1634 ++++++++
.../core/util/picocli/CommandLineTest.java | 2921 +++++++++++++
.../core/util/picocli/CustomLayoutDemo.java | 265 ++
.../logging/log4j/core/util/picocli/Demo.java | 652 +++
src/changes/changes.xml | 3 +
11 files changed, 9403 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c2818bec/NOTICE.txt
----------------------------------------------------------------------
diff --git a/NOTICE.txt b/NOTICE.txt
index 6c1b3b2..bd95322 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -12,3 +12,6 @@ Copyright 2004 Jason Paul Kitchen
TypeUtil.java
Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams
+
+picocli (http://picocli.info)
+Copyright 2017 Remko Popma
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c2818bec/log4j-1.2-api/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-1.2-api/pom.xml b/log4j-1.2-api/pom.xml
index 30e0157..15fa86c 100644
--- a/log4j-1.2-api/pom.xml
+++ b/log4j-1.2-api/pom.xml
@@ -33,12 +33,6 @@
<projectDir>/log4j12-api</projectDir>
</properties>
<dependencies>
- <!-- Command line for configuration file conversion -->
- <dependency>
- <groupId>com.beust</groupId>
- <artifactId>jcommander</artifactId>
- <optional>true</optional>
- </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c2818bec/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationConverter.java
----------------------------------------------------------------------
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationConverter.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationConverter.java
index aef822e..516286b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationConverter.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationConverter.java
@@ -30,20 +30,21 @@ import org.apache.logging.log4j.core.config.ConfigurationException;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
import org.apache.logging.log4j.core.util.BasicCommandLineArguments;
-
-import com.beust.jcommander.Parameter;
+import org.apache.logging.log4j.core.util.picocli.CommandLine;
+import org.apache.logging.log4j.core.util.picocli.CommandLine.Command;
+import org.apache.logging.log4j.core.util.picocli.CommandLine.Option;
/**
* Tool for converting a Log4j 1.x properties configuration file to Log4j 2.x XML configuration file.
- *
+ *
* <p>
* Run with "--help" on the command line.
* </p>
- *
+ *
* <p>
* Example:
* </p>
- *
+ *
* <pre>
* java org.apache.log4j.config.Log4j1ConfigurationConverter --recurse
* E:\vcs\git\apache\logging\logging-log4j2\log4j-1.2-api\src\test\resources\config-1.2\hadoop --in log4j.properties --verbose
@@ -51,21 +52,22 @@ import com.beust.jcommander.Parameter;
*/
public final class Log4j1ConfigurationConverter {
- public static class CommandLineArguments extends BasicCommandLineArguments {
+ @Command(name = "Log4j1ConfigurationConverter")
+ public static class CommandLineArguments extends BasicCommandLineArguments implements Runnable {
- @Parameter(names = { "--failfast", "-f" }, description = "Fails on the first failure in recurse mode.")
+ @Option(names = { "--failfast", "-f" }, description = "Fails on the first failure in recurse mode.")
private boolean failFast;
- @Parameter(names = { "--in", "-i" }, description = "Specifies the input file.")
+ @Option(names = { "--in", "-i" }, description = "Specifies the input file.")
private Path pathIn;
- @Parameter(names = { "--out", "-o" }, description = "Specifies the output file.")
+ @Option(names = { "--out", "-o" }, description = "Specifies the output file.")
private Path pathOut;
- @Parameter(names = { "--recurse", "-r" }, description = "Recurses into this folder looking for the input file")
+ @Option(names = { "--recurse", "-r" }, description = "Recurses into this folder looking for the input file")
private Path recurseIntoPath;
- @Parameter(names = { "--verbose", "-v" }, description = "Be verbose.")
+ @Option(names = { "--verbose", "-v" }, description = "Be verbose.")
private boolean verbose;
public Path getPathIn() {
@@ -109,18 +111,25 @@ public final class Log4j1ConfigurationConverter {
}
@Override
+ public void run() {
+ if (isHelp()) {
+ CommandLine.usage(this, System.err);
+ return;
+ }
+ new Log4j1ConfigurationConverter(this).run();
+ }
+
+ @Override
public String toString() {
return "CommandLineArguments [recurseIntoPath=" + recurseIntoPath + ", verbose=" + verbose + ", pathIn="
+ pathIn + ", pathOut=" + pathOut + "]";
}
-
}
private static final String FILE_EXT_XML = ".xml";
public static void main(final String[] args) {
- new Log4j1ConfigurationConverter(BasicCommandLineArguments.parseCommandLine(args,
- Log4j1ConfigurationConverter.class, new CommandLineArguments())).run();
+ CommandLine.run(new CommandLineArguments(), System.err, args);
}
public static Log4j1ConfigurationConverter run(final CommandLineArguments cla) {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c2818bec/log4j-core/src/main/java/org/apache/logging/log4j/core/util/BasicCommandLineArguments.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/BasicCommandLineArguments.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/BasicCommandLineArguments.java
index f51d186..59b4895 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/BasicCommandLineArguments.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/BasicCommandLineArguments.java
@@ -16,24 +16,11 @@
*/
package org.apache.logging.log4j.core.util;
-import com.beust.jcommander.JCommander;
-import com.beust.jcommander.Parameter;
+import org.apache.logging.log4j.core.util.picocli.CommandLine.Option;
public class BasicCommandLineArguments {
- public static <T extends BasicCommandLineArguments> T parseCommandLine(final String[] mainArgs, final Class<?> clazz,
- final T args) {
- final JCommander jCommander = new JCommander(args);
- jCommander.setProgramName(clazz.getName());
- jCommander.setCaseSensitiveOptions(false); // for sanity
- jCommander.parse(mainArgs);
- if (args.isHelp()) {
- jCommander.usage();
- }
- return args;
- }
-
- @Parameter(names = { "--help", "-?", "-h" }, help = true, description = "Prints this help.")
+ @Option(names = { "--help", "-?", "-h" }, usageHelp = true, description = "Prints this help and exits.")
private boolean help;
public boolean isHelp() {
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c2818bec/log4j-core/src/main/java/org/apache/logging/log4j/core/util/InetAddressConverter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/InetAddressConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/InetAddressConverter.java
deleted file mode 100644
index 8dd02c8..0000000
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/InetAddressConverter.java
+++ /dev/null
@@ -1,35 +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
- *
- * 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.logging.log4j.core.util;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
-import com.beust.jcommander.IStringConverter;
-
-public class InetAddressConverter implements IStringConverter<InetAddress> {
-
- @Override
- public InetAddress convert(final String host) {
- try {
- return InetAddress.getByName(host);
- } catch (final UnknownHostException e) {
- throw new IllegalArgumentException(host, e);
- }
- }
-
-}
\ No newline at end of file