Return-Path: Delivered-To: apmail-commons-commits-archive@locus.apache.org Received: (qmail 12085 invoked from network); 22 Mar 2008 02:50:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Mar 2008 02:50:58 -0000 Received: (qmail 46591 invoked by uid 500); 22 Mar 2008 02:50:49 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 46508 invoked by uid 500); 22 Mar 2008 02:50:48 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 46484 invoked by uid 99); 22 Mar 2008 02:50:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 21 Mar 2008 19:50:48 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Mar 2008 02:50:04 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id E871F1A9852; Fri, 21 Mar 2008 19:49:57 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r639941 [7/17] - in /commons/proper/cli/trunk: ./ src/java/org/apache/commons/cli2/ src/java/org/apache/commons/cli2/builder/ src/java/org/apache/commons/cli2/commandline/ src/java/org/apache/commons/cli2/option/ src/java/org/apache/commons... Date: Sat, 22 Mar 2008 02:49:46 -0000 To: commits@commons.apache.org From: bayard@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080322024957.E871F1A9852@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/DateValidator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/DateValidator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/DateValidator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/DateValidator.java Fri Mar 21 19:49:41 2008 @@ -1,308 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.text.DateFormat; -import java.text.ParsePosition; - -import java.util.Date; -import java.util.List; -import java.util.ListIterator; - -import org.apache.commons.cli2.resource.ResourceConstants; -import org.apache.commons.cli2.resource.ResourceHelper; - -/** - * The DateValidator validates the argument values - * are date or time value(s). - * - * The following example shows how to validate that - * an argument value(s) is a Date of the following - * type: d/M/yy (see {@link java.text.DateFormat}). - * - *
- * DateFormat date = new SimpleDateFormat("d/M/yy");
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * Argument dateFormat =
- *     builder.withName("date");
- *            .withValidator(new DateValidator(dateFormat));
- * 
- * - * The following example shows how to validate that - * an argument value(s) is a time of the following - * type: HH:mm:ss (see {@link java.text.DateFormat}). - * - *
- * DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * Argument time =
- *     builder.withName("time");
- *            .withValidator(new DateValidator(timeFormat));
- * 
- * - * @author John Keyes - * - * @see java.text.DateFormat - */ -public class DateValidator implements Validator { - /** i18n */ - private static final ResourceHelper resources = ResourceHelper.getResourceHelper(); - - /** an array of permitted DateFormats */ - private DateFormat[] formats; - - /** minimum Date allowed i.e: a valid date occurs later than this date */ - private Date minimum; - - /** maximum Date allowed i.e: a valid date occurs earlier than this date */ - private Date maximum; - - /** leniant parsing */ - private boolean isLenient; - - /** - * Creates a Validator for the default date/time format - */ - public DateValidator() { - this(DateFormat.getInstance()); - } - - /** - * Creates a Validator for the specified DateFormat. - * - * @param format - * a DateFormat which dates must conform to - */ - public DateValidator(final DateFormat format) { - setFormat(format); - } - - /** - * Creates a Validator for the List of specified DateFormats. - * - * @param formats - * a List of DateFormats which dates must conform to - */ - public DateValidator(final List formats) { - setFormats(formats); - } - - /** - * Creates a Validator for dates. - * - * @return DateValidator a Validator for dates - */ - public static DateValidator getDateInstance() { - return new DateValidator(DateFormat.getDateInstance()); - } - - /** - * Creates a Validator for times. - * - * @return DateValidator a Validator for times - */ - public static DateValidator getTimeInstance() { - return new DateValidator(DateFormat.getTimeInstance()); - } - - /** - * Creates a Validator for date/times - * - * @return DateValidator a Validator for date/times - */ - public static DateValidator getDateTimeInstance() { - return new DateValidator(DateFormat.getDateTimeInstance()); - } - - /** - * Validate each String value in the specified List against this instances - * permitted DateFormats. - * - * If a value is valid then it's String value in the list is - * replaced with it's Date value. - * - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) - throws InvalidArgumentException { - // for each value - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String value = (String) i.next(); - - Date date = null; - - // create a resuable ParsePosition instance - final ParsePosition pp = new ParsePosition(0); - - // for each permitted DateFormat - for (int f = 0; (f < this.formats.length) && (date == null); ++f) { - // reset the parse position - pp.setIndex(0); - date = this.formats[f].parse(value, pp); - - // if the wrong number of characters have been parsed - if (pp.getIndex() < value.length()) { - date = null; - } - } - - // if date has not been set throw an InvalidArgumentException - if (date == null) { - throw new InvalidArgumentException(value); - } - - // if the date is outside the bounds - if (isDateEarlier(date) || isDateLater(date)) { - throw new InvalidArgumentException(resources.getMessage(ResourceConstants.DATEVALIDATOR_DATE_OUTOFRANGE, - value)); - } - - // replace the value in the list with the actual Date - i.set(date); - } - } - - /** - * Sets whether this validator uses lenient parsing. - * - * @param lenient whether this validator uses lenient parsing - */ - public void setLenient(final boolean lenient) { - for (int i = 0; i < this.formats.length; i++) { - this.formats[i].setLenient(lenient); - } - - this.isLenient = lenient; - } - - /** - * Returns whether this validator uses lenient parsing. - * - * @return whether this validator uses lenient parsing - */ - public boolean isLenient() { - return this.isLenient; - } - - /** - * Returns the maximum date permitted. - * - * @return Date the maximum date permitted. If no maximum date has been - * specified then return null. - */ - public Date getMaximum() { - return maximum; - } - - /** - * Sets the maximum Date to the specified value. - * - * @param maximum - * the maximum Date permitted - */ - public void setMaximum(final Date maximum) { - this.maximum = maximum; - } - - /** - * Returns the minimum date permitted. - * - * @return Date the minimum date permitted. If no minimum date has been - * specified then return null. - */ - public Date getMinimum() { - return minimum; - } - - /** - * Sets the minimum Date to the specified value. - * - * @param minimum - * the minimum Date permitted - */ - public void setMinimum(Date minimum) { - this.minimum = minimum; - } - - /** - * Returns whether the specified Date is later than the maximum date. - * - * @param date - * the Date to evaluate - * - * @return boolean whether date is earlier than the maximum - * date - */ - private boolean isDateLater(Date date) { - return (maximum != null) && (date.getTime() > maximum.getTime()); - } - - /** - * Returns whether the specified Date is earlier than the minimum date. - * - * @param date - * the Date to evaluate - * - * @return boolean whether date is earlier than the minimum - * date - */ - private boolean isDateEarlier(Date date) { - return (minimum != null) && (date.getTime() < minimum.getTime()); - } - - /** - * Sets the date format permitted. - * - * @param format - * the format to use - */ - public void setFormat(final DateFormat format) { - setFormats(new DateFormat[] { format }); - } - - /** - * Sets the date formats permitted. - * - * @param formats - * the List of DateFormats to use - */ - public void setFormats(final List formats) { - setFormats((DateFormat[]) formats.toArray(new DateFormat[formats.size()])); - } - - /** - * Sets the date formats permitted. - * - * @param formats - * the array of DateFormats to use - */ - public void setFormats(final DateFormat[] formats) { - this.formats = formats; - setLenient(this.isLenient); - } - - /** - * Gets the date formats permitted. - * - * @return the permitted formats - */ - public DateFormat[] getFormats() { - return this.formats; - } -} +/* * 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.commons.cli2.validation;import java.text.DateFormat;import java.text.ParsePosition;import java.util.Date;import java.util.List;import java.util.ListIterator;import org.apache.commons.c li2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * The DateValidator validates the argument values * are date or time value(s). * * The following example shows how to validate that * an argument value(s) is a Date of the following * type: d/M/yy (see {@link java.text.DateFormat}). * *
 * DateFormat date = new SimpleDateFormat("d/M/yy"); * ... * ArgumentBuilder builder = new ArgumentBuilder(); * Argument dateFormat = *     builder.withName("date"); *            .withValidator(new DateValidator(dateFormat)); * 
* * The following example shows how to validate that * an argument value(s) is a time of the following * type: HH:mm:ss (see {@link java.text.DateFormat}). * *
 * DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); * ... * ArgumentBuilder builder = new ArgumentBuilder(); * Argument time = *     builder.withName("time"); *            .withValidator(new DateValidator(timeFormat)); * 
* * @au thor John Keyes * * @see java.text.DateFormat */public class DateValidator implements Validator { /** i18n */ private static final ResourceHelper resources = ResourceHelper.getResourceHelper(); /** an array of permitted DateFormats */ private DateFormat[] formats; /** minimum Date allowed i.e: a valid date occurs later than this date */ private Date minimum; /** maximum Date allowed i.e: a valid date occurs earlier than this date */ private Date maximum; /** leniant parsing */ private boolean isLenient; /** * Creates a Validator for the default date/time format */ public DateValidator() { this(DateFormat.getInstance()); } /** * Creates a Validator for the specified DateFormat. * * @param format * a DateFormat which dates must conform to */ public DateValidator(final DateFormat format) { setFormat(format); } /** * Creates a Validator for the List of specified DateFormat s. * * @param formats * a List of DateFormats which dates must conform to */ public DateValidator(final List formats) { setFormats(formats); } /** * Creates a Validator for dates. * * @return DateValidator a Validator for dates */ public static DateValidator getDateInstance() { return new DateValidator(DateFormat.getDateInstance()); } /** * Creates a Validator for times. * * @return DateValidator a Validator for times */ public static DateValidator getTimeInstance() { return new DateValidator(DateFormat.getTimeInstance()); } /** * Creates a Validator for date/times * * @return DateValidator a Validator for date/times */ public static DateValidator getDateTimeInstance() { return new DateValidator(DateFormat.getDateTimeInstance()); } /** * Validate each String value in the specified List against this instances * permitted DateFormat s. * * If a value is valid then it's String value in the list is * replaced with it's Date value. * * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) */ public void validate(final List values) throws InvalidArgumentException { // for each value for (final ListIterator i = values.listIterator(); i.hasNext();) { final String value = (String) i.next(); Date date = null; // create a resuable ParsePosition instance final ParsePosition pp = new ParsePosition(0); // for each permitted DateFormat for (int f = 0; (f < this.formats.length) && (date == null); ++f) { // reset the parse position pp.setIndex(0); date = this.formats[f].parse(value, pp); // if the wrong number of characters have been parsed if (pp.getIndex() < value.length()) { date = null; } } // if date has not been set throw an InvalidArgumentException if (date == null) { throw new InvalidArgumentException(value); } // if the date is outside the bounds if (isDateEarlier(date) || isDateLater(date)) { throw new InvalidArgumentException(resources.getMessage(ResourceConstants.DATEVALIDATOR_DATE_OUTOFRANGE, value)); } // replace the value in the list with the actual Date i.set(date); } } /** * Sets whether this validator uses lenient parsing. * * @param lenient whether this validator uses lenient parsing */ public void setLenient(final boolean lenient) { for (int i = 0; i < this.formats.length; i++) { this.formats[i].setLenient(lenient); } this.isLenient = lenient; } /** * Returns whether this validator uses lenient parsing. * * @return whether this validator uses lenient parsing */ public boolean isLenient() { return this.isLenient; } /** * Returns the maximum date permitted. * * @return Date the maximum date permitted. If no maximum date has been * specified then return null. */ public Date getMaximum() { return maximum; } /** * Sets the maximum Date to the specified value. * * @param maximum * the maximum Date permitted */ public void setMaximum(final Date maximum) { this.maximum = maximum; } /** * Returns the minimum date permitted. * * @return Date the minimum date permitted. If no minimum date has been * specified then return null. */ public Date getMinimum() { return minimum; } /** * Sets the minimum Date to the specified value. * * @param minimum * the minimum Date permitted */ public void setMinimum(Date minimum) { this.minimum = minimum; } /** * Returns whether the specified Date is later than the maximum date. * * @param date * the Date to evaluate * * @return boolean whether date is earlier than the maximum * date */ private boolean isDateLater(Date date) { return (maximum != null) && (date.getTime() > maximum.getTime()); } /** * Returns whether the specified Date is earlier than the minimum date. * * @param date * the Date to evaluate * * @return boolean whether date is earlier than the minimum * date */ private boolean isDateEarlier(Date date) { return (minimum != null) && (date.getTime() < minimum.getTime()); } /** * Sets the date format permitted. * * @param format * the format to use */ public void setFormat(final DateFormat format) { setFormats(new DateFormat[] { format }); } /** * Sets the date formats permitted. * * @param formats * the List of DateFormats to use */ public void setFormats(final List formats) { setFormats((DateFormat[]) formats.toArray(new DateFormat[formats.size()])); } /** * Sets the date formats permitted. * * @param formats * the array of DateFormats to use */ public void setFormats(final DateFormat[] formats) { this.formats = formats; setLenient(this.isLenient); } /** * Gets the date formats permitted. * * @return the permitted formats */ public DateFormat[] getFormats() { return this.formats; }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/EnumValidator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/EnumValidator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/EnumValidator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/EnumValidator.java Fri Mar 21 19:49:41 2008 @@ -1,120 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.apache.commons.cli2.resource.ResourceConstants; -import org.apache.commons.cli2.resource.ResourceHelper; - -/** - * The EnumValidator validates the string argument - * values are valid. - * - * The following example shows how to limit the valid values - * for the color argument to 'red', 'green', or 'blue'. - * - *
- * Set values = new HashSet();
- * values.add("red");
- * values.add("green");
- * values.add("blue");
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * Argument color =
- *     builder.withName("color");
- *            .withValidator(new EnumValidator(values));
- * 
- * - * @author John Keyes - */ -public class EnumValidator implements Validator { - /** List of permitted values */ - private Set validValues; - - /** - * Creates a new EnumValidator for the specified values. - * - * @param values The list of permitted values - */ - public EnumValidator(final Set values) { - setValidValues(values); - } - - /** - * Validate the list of values against the list of permitted values. - * - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) - throws InvalidArgumentException { - for (final Iterator iter = values.iterator(); iter.hasNext();) { - final String value = (String) iter.next(); - - if (!this.validValues.contains(value)) { - throw new InvalidArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ENUM_ILLEGAL_VALUE, - new Object[] { - value, - getValuesAsString() - })); - } - } - } - - /** - * Returns the permitted values in a comma separated String - * - * @return String formatted list of values - */ - String getValuesAsString() { - final StringBuffer buff = new StringBuffer(); - - buff.append("["); - - for (final Iterator iter = this.validValues.iterator(); iter.hasNext();) { - buff.append("'").append(iter.next()).append("'"); - - if (iter.hasNext()) { - buff.append(", "); - } - } - - buff.append("]"); - - return buff.toString(); - } - - /** - * Returns the Set of valid argument values. - * - * @return Returns the Set of valid argument values. - */ - public Set getValidValues() { - return validValues; - } - - /** - * Specifies the Set of valid argument values. - * - * @param validValues The Set of valid argument values. - */ - protected void setValidValues(Set validValues) { - this.validValues = validValues; - } -} +/* * 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.commons.cli2.validation;import java.util.Iterator;import java.util.List;import java.util.Set;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.re source.ResourceHelper;/** * The EnumValidator validates the string argument * values are valid. * * The following example shows how to limit the valid values * for the color argument to 'red', 'green', or 'blue'. * *
 * Set values = new HashSet(); * values.add("red"); * values.add("green"); * values.add("blue"); * ... * ArgumentBuilder builder = new ArgumentBuilder(); * Argument color = *     builder.withName("color"); *            .withValidator(new EnumValidator(values)); * 
* * @author John Keyes */public class EnumValidator implements Validator { /** List of permitted values */ private Set validValues; /** * Creates a new EnumValidator for the specified values. * * @param values The list of permitted values */ public EnumValidator(final Set values) { setValidValues(values); } /** * Validate the list of values against the list of permitted values. * * @see org.apache.commons.cli2.validation.Valid ator#validate(java.util.List) */ public void validate(final List values) throws InvalidArgumentException { for (final Iterator iter = values.iterator(); iter.hasNext();) { final String value = (String) iter.next(); if (!this.validValues.contains(value)) { throw new InvalidArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ENUM_ILLEGAL_VALUE, new Object[] { value, getValuesAsString() })); } } } /** * Returns the permitted values in a comma separated String * * @return String formatted list of values */ String getValuesAsString() { final StringBuffer buff = new StringBuffer(); buff.append("["); for (final Iterator iter = this.validValues.iterator(); iter.hasNext();) { buff.append("'").append(iter.next()).append("'"); if (iter.hasNext()) { buff.append(", "); } } buff.append("]"); return buff.toString(); } /** * Returns the Set of valid argument values. * * @return Returns the Set of valid argument values. */ public Set getValidValues() { return validValues; } /** * Specifies the Set of valid argument values. * * @param validValues The Set of valid argument values. */ protected void setValidValues(Set validValues) { this.validValues = validValues; }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/FileValidator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/FileValidator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/FileValidator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/FileValidator.java Fri Mar 21 19:49:41 2008 @@ -1,265 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.io.File; -import java.util.List; -import java.util.ListIterator; - -/** - * The FileValidator validates the string argument - * values are files. If the value is a file, the string value in - * the {@link java.util.List} of values is replaced with the - * {@link java.io.File} instance. - * - * The following attributes can also be specified using the - * appropriate settors: - *
    - *
  • writable
  • - *
  • readable
  • - *
  • hidden
  • - *
  • existing
  • - *
  • is a file
  • - *
  • is a directory
  • - *
- * - * The following example shows how to limit the valid values - * for the config attribute to files that are readable, writeable, - * and that already existing. - * - *
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * FileValidator validator = FileValidator.getExistingFileInstance();
- * validator.setReadable(true);
- * validator.setWritable(true);
- * 
- * Argument age = 
- *     builder.withName("config");
- *            .withValidator(validator);
- * 
- * - * @author Rob Oxspring - * @author John Keyes - */ -public class FileValidator implements Validator { - - /** - * Returns a FileValidator for existing files/directories. - * - * @return a FileValidator for existing files/directories. - */ - public static FileValidator getExistingInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - return validator; - } - - /** - * Returns a FileValidator for existing files. - * - * @return a FileValidator for existing files. - */ - public static FileValidator getExistingFileInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - validator.setFile(true); - return validator; - } - - /** - * Returns a FileValidator for existing directories. - * - * @return a FileValidator for existing directories. - */ - public static FileValidator getExistingDirectoryInstance() { - final FileValidator validator = new FileValidator(); - validator.setExisting(true); - validator.setDirectory(true); - return validator; - } - - /** whether the argument value is readable */ - private boolean readable = false; - - /** whether the argument value is writable */ - private boolean writable = false; - - /** whether the argument value exists */ - private boolean existing = false; - - /** whether the argument value is a directory */ - private boolean directory = false; - - /** whether the argument value is a file */ - private boolean file = false; - - /** whether the argument value is a hidden file or directory */ - private boolean hidden = false; - - /** - * Validate the list of values against the list of permitted values. - * If a value is valid, replace the string in the values - * {@link java.util.List} with the {@link java.io.File} instance. - * - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String name = (String)i.next(); - final File f = new File(name); - - if ((existing && !f.exists()) - || (file && !f.isFile()) - || (directory && !f.isDirectory()) - || (hidden && !f.isHidden()) - || (readable && !f.canRead()) - || (writable && !f.canWrite())) { - - throw new InvalidArgumentException(name); - } - - i.set(f); - } - } - - /** - * Returns whether the argument values must represent directories. - * - * @return whether the argument values must represent directories. - */ - public boolean isDirectory() { - return directory; - } - - /** - * Specifies whether the argument values must represent directories. - * - * @param directory specifies whether the argument values must - * represent directories. - */ - public void setDirectory(boolean directory) { - this.directory = directory; - } - - /** - * Returns whether the argument values must represent existing - * files/directories. - * - * @return whether the argument values must represent existing - * files/directories. - */ - public boolean isExisting() { - return existing; - } - - /** - * Specifies whether the argument values must represent existing - * files/directories. - * - * @param existing specifies whether the argument values must - * represent existing files/directories. - */ - public void setExisting(boolean existing) { - this.existing = existing; - } - - /** - * Returns whether the argument values must represent directories. - * - * @return whether the argument values must represent directories. - */ - public boolean isFile() { - return file; - } - - /** - * Specifies whether the argument values must represent files. - * - * @param file specifies whether the argument values must - * represent files. - */ - public void setFile(boolean file) { - this.file = file; - } - - /** - * Returns whether the argument values must represent hidden - * files/directories. - * - * @return whether the argument values must represent hidden - * files/directories. - */ - public boolean isHidden() { - return hidden; - } - - /** - * Specifies whether the argument values must represent hidden - * files/directories. - * - * @param hidden specifies whether the argument values must - * represent hidden files/directories. - */ - public void setHidden(boolean hidden) { - this.hidden = hidden; - } - - /** - * Returns whether the argument values must represent readable - * files/directories. - * - * @return whether the argument values must represent readable - * files/directories. - */ - public boolean isReadable() { - return readable; - } - - /** - * Specifies whether the argument values must represent readable - * files/directories. - * - * @param readable specifies whether the argument values must - * represent readable files/directories. - */ - public void setReadable(boolean readable) { - this.readable = readable; - } - - /** - * Returns whether the argument values must represent writable - * files/directories. - * - * @return whether the argument values must represent writable - * files/directories. - */ - public boolean isWritable() { - return writable; - } - - /** - * Specifies whether the argument values must represent writable - * files/directories. - * - * @param writable specifies whether the argument values must - * represent writable files/directories. - */ - public void setWritable(boolean writable) { - this.writable = writable; - } -} +/* * 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.commons.cli2.validation;import java.io.File;import java.util.List;import java.util.ListIterator;/** * The FileValidator validates the string argument * values are files. If the value is a file, the string value in * the {@link java.util.List} of values is replaced with the * {@link java.io.File} instance. * * The following attributes can also be specified using the * appropriate settors: *
    *
  • writable
  • *
  • readable
  • *
  • hidden
  • *
  • existing
  • *
  • is a file
  • *
  • is a directory
  • *
* * The following example shows how to limit the valid values * for the config attribute to files that are readable, writeable, * and that already existing. * *
 * ... * ArgumentBuilder builder = new ArgumentBuilder(); * FileValidator validator = FileValidator.getExistingFileInstance(); * validator.setReadable(true); * validator.setWritable(true); * * Argument age = *     builder.withName("config"); *            .withValidator(validator); * 
* * @author Rob Oxspring * @author John Keyes */public class FileValidator implements Validator { /** * Returns a FileValidator for existing file s/directories. * * @return a FileValidator for existing files/directories. */ public static FileValidator getExistingInstance() { final FileValidator validator = new FileValidator(); validator.setExisting(true); return validator; } /** * Returns a FileValidator for existing files. * * @return a FileValidator for existing files. */ public static FileValidator getExistingFileInstance() { final FileValidator validator = new FileValidator(); validator.setExisting(true); validator.setFile(true); return validator; } /** * Returns a FileValidator for existing directories. * * @return a FileValidator for existing directories. */ public static FileValidator getExistingDirectoryInstance() { final FileValidator validator = new FileValidator(); validator.setExisting(true); validator.setDire ctory(true); return validator; } /** whether the argument value is readable */ private boolean readable = false; /** whether the argument value is writable */ private boolean writable = false; /** whether the argument value exists */ private boolean existing = false; /** whether the argument value is a directory */ private boolean directory = false; /** whether the argument value is a file */ private boolean file = false; /** whether the argument value is a hidden file or directory */ private boolean hidden = false; /** * Validate the list of values against the list of permitted values. * If a value is valid, replace the string in the values * {@link java.util.List} with the {@link java.io.File} instance. * * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) */ public void validate(final List values) throws InvalidArgumentException { for (final ListIterato r i = values.listIterator(); i.hasNext();) { final String name = (String)i.next(); final File f = new File(name); if ((existing && !f.exists()) || (file && !f.isFile()) || (directory && !f.isDirectory()) || (hidden && !f.isHidden()) || (readable && !f.canRead()) || (writable && !f.canWrite())) { throw new InvalidArgumentException(name); } i.set(f); } } /** * Returns whether the argument values must represent directories. * * @return whether the argument values must represent directories. */ public boolean isDirectory() { return directory; } /** * Specifies whether the argument values must represent directories. * * @param directory specifies whether the argument values must * represent directories. */ public void setDirectory(boolean directory) { this.directo ry = directory; } /** * Returns whether the argument values must represent existing * files/directories. * * @return whether the argument values must represent existing * files/directories. */ public boolean isExisting() { return existing; } /** * Specifies whether the argument values must represent existing * files/directories. * * @param existing specifies whether the argument values must * represent existing files/directories. */ public void setExisting(boolean existing) { this.existing = existing; } /** * Returns whether the argument values must represent directories. * * @return whether the argument values must represent directories. */ public boolean isFile() { return file; } /** * Specifies whether the argument values must represent files. * * @param file specifies whether the argument values must * represent files. */ public voi d setFile(boolean file) { this.file = file; } /** * Returns whether the argument values must represent hidden * files/directories. * * @return whether the argument values must represent hidden * files/directories. */ public boolean isHidden() { return hidden; } /** * Specifies whether the argument values must represent hidden * files/directories. * * @param hidden specifies whether the argument values must * represent hidden files/directories. */ public void setHidden(boolean hidden) { this.hidden = hidden; } /** * Returns whether the argument values must represent readable * files/directories. * * @return whether the argument values must represent readable * files/directories. */ public boolean isReadable() { return readable; } /** * Specifies whether the argument values must represent readable * files/directories. * * @param r eadable specifies whether the argument values must * represent readable files/directories. */ public void setReadable(boolean readable) { this.readable = readable; } /** * Returns whether the argument values must represent writable * files/directories. * * @return whether the argument values must represent writable * files/directories. */ public boolean isWritable() { return writable; } /** * Specifies whether the argument values must represent writable * files/directories. * * @param writable specifies whether the argument values must * represent writable files/directories. */ public void setWritable(boolean writable) { this.writable = writable; }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/InvalidArgumentException.java Fri Mar 21 19:49:41 2008 @@ -1,34 +1 @@ -/* - * 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.commons.cli2.validation; - -/** - * An exception indicating validation failure. - * - * @author Rob Oxspring - * @author John Keyes - */ -public class InvalidArgumentException extends Exception { - - /** - * Creates a new exception - * @param message the reason for failure - */ - public InvalidArgumentException(final String message) { - super(message); - } -} +/* * 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.commons.cli2.validation;/** * An exception indicating validation failure. * * @author Rob Oxspring * @author John Keyes */public class InvalidArgumentException extends Exception { / ** * Creates a new exception * @param message the reason for failure */ public InvalidArgumentException(final String message) { super(message); }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/NumberValidator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/NumberValidator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/NumberValidator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/NumberValidator.java Fri Mar 21 19:49:41 2008 @@ -1,200 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.text.NumberFormat; -import java.text.ParsePosition; - -import java.util.List; -import java.util.ListIterator; - -import org.apache.commons.cli2.resource.ResourceConstants; -import org.apache.commons.cli2.resource.ResourceHelper; - -/** - * The NumberValidator validates the string argument - * values are numbers. If the value is a number, the string value in - * the {@link java.util.List} of values is replaced with the - * {@link java.lang.Number} instance. - * - * A maximum and minimum value can also be specified using - * the {@link #setMaximum setMaximum}, and the - * {@link #setMinimum setMinimum} methods. - * - * The following example shows how to limit the valid values - * for the age attribute to integers less than 100. - * - *
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * NumberValidator validator = NumberValidator.getIntegerInstance();
- * validator.setMaximum(new Integer(100));
- *
- * Argument age =
- *     builder.withName("age");
- *            .withValidator(validator);
- * 
- * - * @author Rob Oxspring - * @author John Keyes - */ -public class NumberValidator implements Validator { - /** the NumberFormat being used. */ - private NumberFormat format; - - /** the lower bound for argument values. */ - private Number minimum = null; - - /** the upper bound for argument values */ - private Number maximum = null; - - /** - * Creates a new NumberValidator based on the specified NumberFormat - * @param format the format of numbers to accept - */ - public NumberValidator(final NumberFormat format) { - setFormat(format); - } - - /** - * Returns a NumberValidator for a currency format - * for the current default locale. - * @return a NumberValidator for a currency format - * for the current default locale. - */ - public static NumberValidator getCurrencyInstance() { - return new NumberValidator(NumberFormat.getCurrencyInstance()); - } - - /** - * Returns a NumberValidator for an integer number format - * for the current default locale. - * @return a NumberValidator for an integer number format - * for the current default locale. - */ - public static NumberValidator getIntegerInstance() { - final NumberFormat format = NumberFormat.getNumberInstance(); - format.setParseIntegerOnly(true); - - return new NumberValidator(format); - } - - /** - * Returns a NumberValidator for a percentage format - * for the current default locale. - * @return a NumberValidator for a percentage format - * for the current default locale. - */ - public static NumberValidator getPercentInstance() { - return new NumberValidator(NumberFormat.getPercentInstance()); - } - - /** - * Returns a NumberValidator for a general-purpose - * number format for the current default locale. - * @return a NumberValidator for a general-purpose - * number format for the current default locale. - */ - public static NumberValidator getNumberInstance() { - return new NumberValidator(NumberFormat.getNumberInstance()); - } - - /** - * Validate the list of values against the list of permitted values. - * If a value is valid, replace the string in the values - * {@link java.util.List} with the {@link java.lang.Number} instance. - * - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) - throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String value = (String) i.next(); - - final ParsePosition pp = new ParsePosition(0); - final Number number = format.parse(value, pp); - - if (pp.getIndex() < value.length()) { - throw new InvalidArgumentException(value); - } - - if (((minimum != null) && (number.doubleValue() < minimum.doubleValue())) || - ((maximum != null) && (number.doubleValue() > maximum.doubleValue()))) { - throw new InvalidArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.NUMBERVALIDATOR_NUMBER_OUTOFRANGE, - new Object[] { - value - })); - } - - i.set(number); - } - } - - /** - * Return the format being used to validate argument values against. - * - * @return the format being used to validate argument values against. - */ - public NumberFormat getFormat() { - return format; - } - - /** - * Specify the format being used to validate argument values against. - * - * @param format the format being used to validate argument values against. - */ - protected void setFormat(NumberFormat format) { - this.format = format; - } - - /** - * Return the maximum value allowed for an argument value. - * - * @return the maximum value allowed for an argument value. - */ - public Number getMaximum() { - return maximum; - } - - /** - * Specify the maximum value allowed for an argument value. - * - * @param maximum the maximum value allowed for an argument value. - */ - public void setMaximum(Number maximum) { - this.maximum = maximum; - } - - /** - * Return the minimum value allowed for an argument value. - * - * @return the minimum value allowed for an argument value. - */ - public Number getMinimum() { - return minimum; - } - - /** - * Specify the minimum value allowed for an argument value. - * - * @param minimum the minimum value allowed for an argument value. - */ - public void setMinimum(Number minimum) { - this.minimum = minimum; - } -} +/* * 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.commons.cli2.validation;import java.text.NumberFormat;import java.text.ParsePosition;import java.util.List;import java.util.ListIterator;import org.apache.commons.cli2.resource.Resourc eConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * The NumberValidator validates the string argument * values are numbers. If the value is a number, the string value in * the {@link java.util.List} of values is replaced with the * {@link java.lang.Number} instance. * * A maximum and minimum value can also be specified using * the {@link #setMaximum setMaximum}, and the * {@link #setMinimum setMinimum} methods. * * The following example shows how to limit the valid values * for the age attribute to integers less than 100. * *
 * ... * ArgumentBuilder builder = new ArgumentBuilder(); * NumberValidator validator = NumberValidator.getIntegerInstance(); * validator.setMaximum(new Integer(100)); * * Argument age = *     builder.withName("age"); *            .withValidator(validator); * 
* * @author Rob Oxspring * @author John Keyes */public class NumberValidator implements Validator { /** the NumberFormat being used. */ private NumberFormat format; /** the lower bound for argument values. */ private Number minimum = null; /** the upper bound for argument values */ private Number maximum = null; /** * Creates a new NumberValidator based on the specified NumberFormat * @param format the format of numbers to accept */ public NumberValidator(final NumberFormat format) { setFormat(format); } /** * Returns a NumberValidator for a currency format * for the current default locale. * @return a NumberValidator for a currency format * for the current default locale. */ public static NumberValidator getCurrencyInstance() { return new NumberValidator(NumberFormat.getCurrencyInstance()); } /** * Returns a NumberValidator for an integer number format * for the current default locale. * @return a NumberValidator for an integer number format * for the current default locale. */ public static NumberValidator getIntegerInstance() { final NumberFormat format = NumberFormat.getNumberInstance(); format.setParseIntegerOnly(true); return new NumberValidator(format); } /** * Returns a NumberValidator for a percentage format * for the current default locale. * @return a NumberValidator for a percentage format * for the current default locale. */ public static NumberValidator getPercentInstance() { return new NumberValidator(NumberFormat.getPercentInstance()); } /** * Returns a NumberValidator for a general-purpose * number format for the current default locale. * @return a NumberValidator for a general-purpose * number format for the current default locale. */ public static NumberValidator getNumberInstance() { return new NumberValidator(NumberFormat.getNumberInstance()); } /** * Validate the list of values against the list of permitted values. * If a value is valid, replace the string in the values * {@link java.util.List} with the {@link java.lang.Number} instance. * * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) */ public void validate(final List values) throws InvalidArgumentException { for (final ListIterator i = values.listIterator(); i.hasNext();) { final String value = (String) i.next(); final ParsePosition pp = new ParsePosition(0); final Number number = format.parse(value, pp); if (pp.getIndex() < value.length()) { throw new InvalidArgumentException(value); } if (((minimum != null) && (number.doubleValue() < minimum.doubleValue())) || ((maximum != null) && (number.doubleValue() > maximum.doubleValue()))) { throw new InvalidArgumentException(Resour ceHelper.getResourceHelper().getMessage(ResourceConstants.NUMBERVALIDATOR_NUMBER_OUTOFRANGE, new Object[] { value })); } i.set(number); } } /** * Return the format being used to validate argument values against. * * @return the format being used to validate argument values against. */ public NumberFormat getFormat() { return format; } /** * Specify the format being used to validate argument values against. * * @param format the format being used to validate argument values against. */ protected void setFormat(NumberFormat format) { this.format = format; } /** * Return the maximum value a llowed for an argument value. * * @return the maximum value allowed for an argument value. */ public Number getMaximum() { return maximum; } /** * Specify the maximum value allowed for an argument value. * * @param maximum the maximum value allowed for an argument value. */ public void setMaximum(Number maximum) { this.maximum = maximum; } /** * Return the minimum value allowed for an argument value. * * @return the minimum value allowed for an argument value. */ public Number getMinimum() { return minimum; } /** * Specify the minimum value allowed for an argument value. * * @param minimum the minimum value allowed for an argument value. */ public void setMinimum(Number minimum) { this.minimum = minimum; }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/UrlValidator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/UrlValidator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/UrlValidator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/UrlValidator.java Fri Mar 21 19:49:41 2008 @@ -1,115 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.net.MalformedURLException; -import java.net.URL; - -import java.util.List; -import java.util.ListIterator; - -import org.apache.commons.cli2.resource.ResourceConstants; -import org.apache.commons.cli2.resource.ResourceHelper; - -/** - * The UrlValidator validates the string argument - * values are URLs. If the value is a URL, the string value in - * the {@link java.util.List} of values is replaced with the - * {@link java.net.URL} instance. - * - * URLs can also be validated based on their scheme by using - * the {@link #setProtocol setProtocol} method, or by using the specified - * {@link #UrlValidator(java.lang.String) constructor}. - * - * The following example shows how to limit the valid values - * for the site argument to 'https' URLs. - * - *
- * ...
- * ArgumentBuilder builder = new ArgumentBuilder();
- * Argument site =
- *     builder.withName("site");
- *            .withValidator(new URLValidator("https"));
- * 
- * - * @author Rob Oxspring - * @author John Keyes - */ -public class UrlValidator implements Validator { - /** allowed protocol */ - private String protocol = null; - - /** - * Creates a UrlValidator. - */ - public UrlValidator() { - } - - /** - * Creates a UrlValidator for the specified protocol. - */ - public UrlValidator(final String protocol) { - setProtocol(protocol); - } - - /** - * Validate the list of values against the list of permitted values. - * If a value is valid, replace the string in the values - * {@link java.util.List} with the { java.net.URL} instance. - * - * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) - */ - public void validate(final List values) - throws InvalidArgumentException { - for (final ListIterator i = values.listIterator(); i.hasNext();) { - final String name = (String) i.next(); - - try { - final URL url = new URL(name); - - if ((protocol != null) && !protocol.equals(url.getProtocol())) { - throw new InvalidArgumentException(name); - } - - i.set(url); - } catch (final MalformedURLException mue) { - throw new InvalidArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.URLVALIDATOR_MALFORMED_URL, - new Object[] { - name - })); - } - } - } - - /** - * Returns the protocol that must be used by a valid URL. - * - * @return the protocol that must be used by a valid URL. - */ - public String getProtocol() { - return protocol; - } - - /** - * Specifies the protocol that a URL must have to be valid. - * - * @param protocol the protocol that a URL must have to be valid. - */ - public void setProtocol(String protocol) { - this.protocol = protocol; - } -} +/* * 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.commons.cli2.validation;import java.net.MalformedURLException;import java.net.URL;import java.util.List;import java.util.ListIterator;import org.apache.commons.cli2.resource.ResourceCo nstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * The UrlValidator validates the string argument * values are URLs. If the value is a URL, the string value in * the {@link java.util.List} of values is replaced with the * {@link java.net.URL} instance. * * URLs can also be validated based on their scheme by using * the {@link #setProtocol setProtocol} method, or by using the specified * {@link #UrlValidator(java.lang.String) constructor}. * * The following example shows how to limit the valid values * for the site argument to 'https' URLs. * *
 * ... * ArgumentBuilder builder = new ArgumentBuilder(); * Argument site = *     builder.withName("site"); *            .withValidator(new URLValidator("https")); * 
* * @author Rob Oxspring * @author John Keyes */public class UrlValidator implements Validator { /** allowed protocol */ private String protocol = null; /** * Creates a UrlValidator. */ public UrlValidator() { } /** * Creates a UrlValidator for the specified protocol. */ public UrlValidator(final String protocol) { setProtocol(protocol); } /** * Validate the list of values against the list of permitted values. * If a value is valid, replace the string in the values * {@link java.util.List} with the { java.net.URL} instance. * * @see org.apache.commons.cli2.validation.Validator#validate(java.util.List) */ public void validate(final List values) throws InvalidArgumentException { for (final ListIterator i = values.listIterator(); i.hasNext();) { final String name = (String) i.next(); try { final URL url = new URL(name); if ((protocol != null) && !protocol.equals(url.getProtocol())) { throw new InvalidArgumentException(name); } i.set(url); } catch (final MalformedURLException mue) { throw new InvalidArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.URLVALIDATOR_MALFORMED_URL, new Object[] { name })); } } } /** * Returns the protocol that must be used by a valid URL. * * @return the protocol that must be used by a valid URL. */ public String getProtocol() { return protocol; } /** * Specifies the protocol that a URL must have to be valid. * * @param protocol the protocol that a URL must have to be valid. */ public void setProtocol(String protocol) { this.protocol = protocol; }} \ No newline at end of file Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/Validator.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/Validator.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/Validator.java (original) +++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/validation/Validator.java Fri Mar 21 19:49:41 2008 @@ -1,43 +1 @@ -/* - * 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.commons.cli2.validation; - -import java.util.List; - -/** - * The validation interface for validating argument values(s). - * - * A validator can replace the argument string value with a - * specific class instance e.g. the {@link UrlValidator} replaces - * the string value with a {@link java.net.URL} instance. - * - * @author Rob Oxspring - * @author John Keyes - */ -public interface Validator { - - /** - * Validate the specified values (List of Strings). - * - * @param values The values to validate. - * - * @throws InvalidArgumentException If any of the - * specified values are not valid. - */ - void validate(final List values) throws InvalidArgumentException; - -} +/* * 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.commons.cli2.validation;import java.util.List;/** * The validation interface for validating argument values(s). * * A validator can replace the argument string value with a * specific class instance e.g. the {@link UrlValidator} replaces * the string value with a {@link java.net.URL} instance. * * @author Rob Oxspring * @author John Keyes */public interface Validator { /** * Validate the specified values (List of Strings). * * @param values The values to validate. * * @throws InvalidArgumentException If any of the * specified values are not valid. */ void validate(final List values) throws InvalidArgumentException;} \ No newline at end of file Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CLITestCase.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CLITestCase.java?rev=639941&r1=639940&r2=639941&view=diff ============================================================================== --- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CLITestCase.java (original) +++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/CLITestCase.java Fri Mar 21 19:49:41 2008 @@ -1,85 +1 @@ -/** - * 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.commons.cli2; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import junit.framework.TestCase; - -public abstract class CLITestCase extends TestCase { - - public static List list() { - return Collections.EMPTY_LIST; - } - - public static List list(final Object args[]) { - return new LinkedList(Arrays.asList(args)); - } - - public static List list(final Object arg0) { - return list(new Object[] { arg0 }); - } - - public static List list(final Object arg0, final Object arg1) { - return list(new Object[] { arg0, arg1 }); - } - - public static List list(final Object arg0, final Object arg1, final Object arg2) { - return list(new Object[] { arg0, arg1, arg2 }); - } - - public static List list(final Object arg0, final Object arg1, final Object arg2, final Object arg3) { - return list(new Object[] { arg0, arg1, arg2, arg3 }); - } - - public static List list(final Object arg0, final Object arg1, final Object arg2, final Object arg3, final Object arg4) { - return list(new Object[] { arg0, arg1, arg2, arg3, arg4 }); - } - - public static List list(final Object arg0, final Object arg1, final Object arg2, final Object arg3, final Object arg4, final Object arg5) { - return list(new Object[] { arg0, arg1, arg2, arg3, arg4, arg5 }); - } - - public static void assertListContentsEqual(final List expected, final List found) { - - final Iterator e = expected.iterator(); - final Iterator f = found.iterator(); - - while (e.hasNext() && f.hasNext()) { - assertEquals(e.next(), f.next()); - } - - if (e.hasNext()) { - fail("Expected more elements"); - } - - if (f.hasNext()) { - fail("Found more elements"); - } - } - - public static void assertContentsEqual(final Collection expected, final Collection found) { - assertTrue(expected.containsAll(found)); - assertTrue(found.containsAll(expected)); - assertEquals(expected.size(), found.size()); - } -} +/** * 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.commons.cli2;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import junit. framework.TestCase;public abstract class CLITestCase extends TestCase { public static List list() { return Collections.EMPTY_LIST; } public static List list(final Object args[]) { return new LinkedList(Arrays.asList(args)); } public static List list(final Object arg0) { return list(new Object[] { arg0 }); } public static List list(final Object arg0, final Object arg1) { return list(new Object[] { arg0, arg1 }); } public static List list(final Object arg0, final Object arg1, final Object arg2) { return list(new Object[] { arg0, arg1, arg2 }); } public static List list(final Object arg0, final Object arg1, final Object arg2, final Object arg3) { return list(new Object[] { arg0, arg1, arg2, arg3 }); } public static List list(final Object arg0, final Object arg1, final Object arg2, final Object arg3, final Object arg4) { return list(new Object[] { arg0, arg1, arg2, arg3, arg4 }); } public static List list(final Object arg0, final Object arg1, final Ob ject arg2, final Object arg3, final Object arg4, final Object arg5) { return list(new Object[] { arg0, arg1, arg2, arg3, arg4, arg5 }); } public static void assertListContentsEqual(final List expected, final List found) { final Iterator e = expected.iterator(); final Iterator f = found.iterator(); while (e.hasNext() && f.hasNext()) { assertEquals(e.next(), f.next()); } if (e.hasNext()) { fail("Expected more elements"); } if (f.hasNext()) { fail("Found more elements"); } } public static void assertContentsEqual(final Collection expected, final Collection found) { assertTrue(expected.containsAll(found)); assertTrue(found.containsAll(expected)); assertEquals(expected.size(), found.size()); }} \ No newline at end of file