public ArgumentParser(Class<T> validArguments, String[] args) { for (String arg : args) { Matcher matcher = COMMAND_LINE_ARG_PATTERN.matcher(arg); if (!matcher.matches()) { throw new IllegalArgumentException("Invalid argument " + arg); } String argK = matcher.group(1); String argV = matcher.group(2); try { T key = (T) Enum.valueOf(validArguments, argK); parsedArguments.add(new ParsedArgument(key, argV)); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("Invalid argument " + arg); } } }
ArgumentParser<GeneratorArguments> argumentParser = new ArgumentParser(GeneratorArguments.class, args); for (ArgumentParser<GeneratorArguments>.ParsedArgument arg : argumentParser.getParsedArguments()) { switch (arg.getKey()) { case addToDataModel: mapper.initializeTypeState(HollowAPIGenerator.class.getClassLoader().loadClass(arg.getValue())); break; case addSchemaFileToDataModel: HollowWriteStateCreator.readSchemaFileIntoWriteState(arg.getValue(), engine); break; case apiClassName: builder.withAPIClassname(arg.getValue()); break; case classPostfix: builder.withClassPostfix(arg.getValue()); break; case getterPrefix: builder.withGetterPrefix(arg.getValue()); break; case packageName: builder.withPackageName(arg.getValue()); break; case pathToGeneratedFiles: builder.withDestination(arg.getValue()); break; case parameterizeAllClassNames: builder.withParameterizeAllClassNames(Boolean.valueOf(arg.getValue())); break; default: throw new IllegalArgumentException("Unhandled argument " + arg.getKey());
ArgumentParser<GeneratorArguments> argumentParser = new ArgumentParser(GeneratorArguments.class, args); for (ArgumentParser<GeneratorArguments>.ParsedArgument arg : argumentParser.getParsedArguments()) { switch (arg.getKey()) { case addToDataModel: mapper.initializeTypeState(HollowPOJOGenerator.class.getClassLoader().loadClass(arg.getValue())); break; case addSchemaFileToDataModel: HollowWriteStateCreator.readSchemaFileIntoWriteState(arg.getValue(), engine); break; case pathToGeneratedFiles: pathToGeneratedFiles = arg.getValue(); break; case packageName: packageName = arg.getValue(); break; case pojoClassNameSuffix: pojoClassNameSuffix = arg.getValue(); break; default: throw new IllegalArgumentException("Unhandled argument " + arg.getKey());
private void assertParsedArgument(String commandLineArg, Commands key, String value) { ArgumentParser<Commands>.ParsedArgument parsed = new ArgumentParser<>(Commands.class, new String[] { commandLineArg}).getParsedArguments().get(0); assertEquals(key, parsed.getKey()); assertEquals(value, parsed.getValue()); } }