package com.lexicalscope.jewel.cli; import java.util.ArrayList; import java.util.List; import com.lexicalscope.jewel.cli.specification.OptionSpecification; public class ValidationErrorBuilderImpl implements ValidationErrorBuilder { private final List<ValidationFailure> validationExceptions = new ArrayList<ValidationFailure>(); public void missingValue(final OptionSpecification optionSpecification) { validationExceptions.add(new ValidationFailureMissingValue(optionSpecification)); } public void wrongNumberOfValues(final OptionSpecification optionSpecification, final List<String> excessValues) { validationExceptions.add(new ValidationFailureWrongNumberOfValues(optionSpecification, excessValues)); } public void unexpectedOption(final String name) { validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedOptionError(name)); } public void unexpectedValue(final OptionSpecification optionSpecification, final List<String> values) { validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedValueError(optionSpecification, values)); } @Override public void unexpectedTrailingValue(final List<String> unparsedArguments) { validationExceptions.add(ArgumentValidationExceptionFactory.createUnexpectedTrailingValues(unparsedArguments)); } public void missingOption(final OptionSpecification optionSpecification) { validationExceptions.add(ArgumentValidationExceptionFactory.createMissingOptionError(optionSpecification)); } public void invalidValueForType(final OptionSpecification optionSpecification, final String message) { validationExceptions.add(ArgumentValidationExceptionFactory.createInvalidValueForType( optionSpecification, message)); } public void unableToConstructType(final OptionSpecification optionSpecification, final String message) { validationExceptions .add(ArgumentValidationExceptionFactory.createUnableToConstructType(optionSpecification, message)); } public void patternMismatch(final OptionSpecification optionSpecification, final String value) { validationExceptions.add(ArgumentValidationExceptionFactory.createPatternMismatch(optionSpecification, value)); } public void validate() throws ArgumentValidationException { if (validationExceptions.size() > 0) { throw new ArgumentValidationException(validationExceptions); } } }