You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by jk...@apache.org on 2003/06/10 00:39:51 UTC

cvs commit: jakarta-commons/cli/src/test/org/apache/commons/cli/validator StringValueValidatorTest.java

jkeyes      2003/06/09 15:39:51

  Modified:    cli/src/java/org/apache/commons/cli Tag: cli_1_x
                        ArgumentBuilder.java Argument.java Options.java
                        ArgumentImpl.java AnonymousArgumentImpl.java
  Added:       cli/src/java/org/apache/commons/cli Tag: cli_1_x
                        ValueValidator.java InvalidValueException.java
               cli/src/java/org/apache/commons/cli/validator Tag: cli_1_x
                        StringValueValidator.java
               cli/src/test/org/apache/commons/cli/validator Tag: cli_1_x
                        StringValueValidatorTest.java
  Log:
  
o  initial validator impl
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.6   +15 -4     jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/ArgumentBuilder.java
  
  Index: ArgumentBuilder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/ArgumentBuilder.java,v
  retrieving revision 1.1.2.5
  retrieving revision 1.1.2.6
  diff -u -r1.1.2.5 -r1.1.2.6
  --- ArgumentBuilder.java	8 Jun 2003 18:16:01 -0000	1.1.2.5
  +++ ArgumentBuilder.java	9 Jun 2003 22:39:50 -0000	1.1.2.6
  @@ -104,6 +104,9 @@
   
       /** specifies whether the values can be omitted, by default false */
       private boolean hasOptionalValues;
  +    
  +    /** TODO: javadoc */
  +    private ValueValidator valueValidator;
   
       /**
        * Creates ArgumentBuilder instances.
  @@ -131,7 +134,8 @@
                   this.valueSeparator,
                   this.valueName,
                   this.hasOptionalValues,
  -                this.options);
  +                this.options,
  +                this.valueValidator);
           } finally {
               // reset the state of the builder
               reset();
  @@ -248,6 +252,12 @@
           return this;
       }
   
  +    /** TODO: javadoc */
  +    public ArgumentBuilder withValueValidator(final ValueValidator validator) {
  +        this.valueValidator = validator;
  +        return this;
  +    }
  +    
       /**
        * Sets the number of values the next Argument created will have.
        * 
  @@ -299,6 +309,7 @@
           this.options = null;
           this.valueSeparator = (char) 0;
           this.valueName = null;
  +        this.valueValidator = null;
           this.size = 1;
           this.type = null;
           this.hasOptionalValues = false;
  
  
  
  1.1.2.4   +6 -3      jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/Argument.java
  
  Index: Argument.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/Argument.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- Argument.java	24 May 2003 21:54:15 -0000	1.1.2.3
  +++ Argument.java	9 Jun 2003 22:39:50 -0000	1.1.2.4
  @@ -111,4 +111,7 @@
        * @return whether the values of this argument are optional
        */
       boolean hasOptionalValues();
  +    
  +    /** TODO: javadoc */
  +    ValueValidator getValueValidator();
   }
  
  
  
  1.19.2.6  +48 -0     jakarta-commons/cli/src/java/org/apache/commons/cli/Options.java
  
  Index: Options.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Options.java,v
  retrieving revision 1.19.2.5
  retrieving revision 1.19.2.6
  diff -u -r1.19.2.5 -r1.19.2.6
  --- Options.java	6 Jun 2003 22:17:08 -0000	1.19.2.5
  +++ Options.java	9 Jun 2003 22:39:50 -0000	1.19.2.6
  @@ -63,6 +63,7 @@
   import java.util.Collection;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.Set;
   
   /**
  @@ -210,6 +211,8 @@
           if (!options.isEmpty()) {
               for (Iterator iter = options.iterator(); iter.hasNext(); ) {
                   Option option = (Option)iter.next();
  +                
  +                // validate the presence
                   if (option.isRequired()) {
                       if (option.getName() != null) {
                           if (!line.hasOption("-" + option.getName())) {
  @@ -222,6 +225,51 @@
                           }
                       }
   
  +                }
  +                
  +                // validate the values
  +                if (option instanceof Argument) {
  +                    Argument argument = (Argument) option;
  +                    
  +                    ValueValidator validator = argument.getValueValidator();
  +                    if (validator != null) {
  +                        String id = "-" + option.getName();
  +                        if (id == null) {
  +                            id = "--" + option.getLongName();
  +                        }
  +                        if (option.getName() != null) {
  +                            List vals = line.getValues(id);
  +                            for (Iterator viter = vals.iterator(); viter.hasNext();) {
  +                                String value = viter.next().toString();
  +                                if (!validator.validate(value)) {
  +                                    StringBuffer buff = new StringBuffer();
  +                                    
  +                                    buff.append("The value {");
  +                                    buff.append(value);
  +                                    buff.append("} is not permitted for the argument '");
  +                                    buff.append(id); 
  +                                    buff.append("'.\nThe permitted values are:");
  +                                    
  +                                    String[] strings = validator.getValidValues();
  +                                    for (int i = 0; i < strings.length; i++) {
  +                                        if (i+1 == strings.length) {
  +                                            buff.append(" or ");
  +                                            buff.append(strings[i]);
  +                                        }
  +                                        else if (i+2 == strings.length) {
  +                                            buff.append(strings[i]);
  +                                        }
  +                                        else {
  +                                            buff.append(strings[i]);
  +                                            buff.append(", ");
  +                                        }
  +                                    }
  +                                    
  +                                    throw new InvalidValueException(buff.toString());
  +                                }
  +                            }
  +                        }
  +                    }
                   }
               }
           }
  
  
  
  1.1.2.5   +16 -4     jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/ArgumentImpl.java
  
  Index: ArgumentImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/ArgumentImpl.java,v
  retrieving revision 1.1.2.4
  retrieving revision 1.1.2.5
  diff -u -r1.1.2.4 -r1.1.2.5
  --- ArgumentImpl.java	8 Jun 2003 18:16:01 -0000	1.1.2.4
  +++ ArgumentImpl.java	9 Jun 2003 22:39:51 -0000	1.1.2.5
  @@ -81,6 +81,9 @@
   
       /** whether this argument has optional values */
       private final boolean hasOptionalValues;
  +    
  +    /** TODO: javadoc */
  +    private final ValueValidator validator;
   
       /**
        * Creates an Argument with the specified name, long name
  @@ -126,7 +129,8 @@
           final char valueSeparator,
           final String valueName,
           final boolean hasOptionalValues,
  -        final Options options) {
  +        final Options options,
  +        final ValueValidator validator) {
   
           super(name, longName, description, required, options);
   
  @@ -135,6 +139,7 @@
           this.valueSeparator = valueSeparator;
           this.valueName = valueName;
           this.hasOptionalValues = hasOptionalValues;
  +        this.validator = validator;
       }
   
       /**
  @@ -170,5 +175,12 @@
        */
       public boolean hasOptionalValues() {
           return this.hasOptionalValues;
  +    }
  +
  +    /**
  +     * @see org.apache.commons.cli.Argument#getValueValidator()
  +     */
  +    public ValueValidator getValueValidator() {
  +        return this.validator;
       }
   }
  
  
  
  1.1.2.7   +13 -3     jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/AnonymousArgumentImpl.java
  
  Index: AnonymousArgumentImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/AnonymousArgumentImpl.java,v
  retrieving revision 1.1.2.6
  retrieving revision 1.1.2.7
  diff -u -r1.1.2.6 -r1.1.2.7
  --- AnonymousArgumentImpl.java	8 Jun 2003 18:16:01 -0000	1.1.2.6
  +++ AnonymousArgumentImpl.java	9 Jun 2003 22:39:51 -0000	1.1.2.7
  @@ -80,6 +80,9 @@
   
       /** the child options */
       private Options options;
  +    
  +    /** TODO: javadoc */
  +    private ValueValidator validator;
   
       /**
        * Creates an anonymous Argument with the specified name.
  @@ -203,5 +206,12 @@
        */
       public boolean isRequired() {
           return false;
  +    }
  +
  +    /** 
  +     * @see org.apache.commons.cli.Argument#getValueValidator()
  +     */
  +    public ValueValidator getValueValidator() {
  +        return this.validator;
       }
   }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +76 -0     jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/ValueValidator.java
  
  
  
  
  1.1.2.1   +84 -0     jakarta-commons/cli/src/java/org/apache/commons/cli/Attic/InvalidValueException.java
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +97 -0     jakarta-commons/cli/src/java/org/apache/commons/cli/validator/Attic/StringValueValidator.java
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +116 -0    jakarta-commons/cli/src/test/org/apache/commons/cli/validator/Attic/StringValueValidatorTest.java
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org