You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by dk...@apache.org on 2020/05/29 13:10:30 UTC
[avro] branch master updated: [AVRO-2649] Better fix for allowing
args in various orders
This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/master by this push:
new 1c5e32d [AVRO-2649] Better fix for allowing args in various orders
1c5e32d is described below
commit 1c5e32d2b98e193ea048f8ece8ee3984c6165bfe
Author: Daniel Kulp <dk...@apache.org>
AuthorDate: Fri May 29 09:09:45 2020 -0400
[AVRO-2649] Better fix for allowing args in various orders
---
.../org/apache/avro/tool/SpecificCompilerTool.java | 33 ++++++++++++----------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java b/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
index e50af59..4077e63 100644
--- a/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
+++ b/lang/java/tools/src/main/java/org/apache/avro/tool/SpecificCompilerTool.java
@@ -46,8 +46,8 @@ import org.apache.avro.compiler.specific.SpecificCompiler.FieldVisibility;
public class SpecificCompilerTool implements Tool {
@Override
- public int run(InputStream in, PrintStream out, PrintStream err, List<String> args) throws Exception {
- if (args.size() < 3) {
+ public int run(InputStream in, PrintStream out, PrintStream err, List<String> origArgs) throws Exception {
+ if (origArgs.size() < 3) {
System.err.println(
"Usage: [-encoding <outputencoding>] [-string] [-bigDecimal] [-fieldVisibility <visibilityType>] [-templateDir <templateDir>] (schema|protocol) input... outputdir");
System.err.println(" input - input files or directories");
@@ -68,41 +68,44 @@ public class SpecificCompilerTool implements Tool {
Optional<FieldVisibility> fieldVisibility = Optional.empty();
int arg = 0;
- int counter = 0;
+ List<String> args = new ArrayList<>(origArgs);
if (args.contains("-encoding")) {
arg = args.indexOf("-encoding") + 1;
encoding = Optional.of(args.get(arg));
- counter = counter + 2;
+ args.remove(arg);
+ args.remove(arg - 1);
}
if (args.contains("-string")) {
stringType = StringType.String;
- counter = counter + 1;
+ args.remove(args.indexOf("-string"));
}
- if ("-fieldVisibility".equals(args.get(arg))) {
- arg++;
+ if (args.contains("-fieldVisibility")) {
+ arg = args.indexOf("-fieldVisibility") + 1;
try {
fieldVisibility = Optional.of(FieldVisibility.valueOf(args.get(arg).toUpperCase(Locale.ENGLISH)));
} catch (IllegalArgumentException | IndexOutOfBoundsException e) {
System.err.println("Expected one of" + Arrays.toString(FieldVisibility.values()));
return 1;
}
- arg++;
+ args.remove(arg);
+ args.remove(arg - 1);
+ }
+ if (args.contains("-templateDir")) {
+ arg = args.indexOf("-templateDir") + 1;
+ templateDir = Optional.of(args.get(arg));
+ args.remove(arg);
+ args.remove(arg - 1);
}
+ arg = 0;
if ("-bigDecimal".equalsIgnoreCase(args.get(arg))) {
useLogicalDecimal = true;
- counter = counter + 1;
+ arg++;
}
- if (args.contains("-templateDir")) {
- arg = args.indexOf("-templateDir") + 1;
- templateDir = Optional.of(args.get(arg));
- counter = counter + 2;
- }
- arg = counter;
String method = args.get(arg);
List<File> inputs = new ArrayList<>();
File output = new File(args.get(args.size() - 1));