You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2008/03/22 03:49:46 UTC

svn commit: r639941 [2/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...

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,286 +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.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.option.ArgumentImpl;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-import org.apache.commons.cli2.validation.Validator;
-
-/**
- * Builds Argument instances.
- */
-public class ArgumentBuilder {
-
-	/** i18n */
-	private final static ResourceHelper resources = ResourceHelper.getResourceHelper();
-	
-    /** name of the argument. Used for display and lookups in CommandLine */
-    private String name;
-
-    /** description of the argument. Used in the automated online help */
-    private String description;
-
-    /** minimum number of values required */
-    private int minimum;
-
-    /** maximum number of values permitted */
-    private int maximum;
-
-    /** character used to separate the values from the option */
-    private char initialSeparator;
-
-    /** character used to separate the values from each other */
-    private char subsequentSeparator;
-
-    /** object that should be used to ensure the values are valid */
-    private Validator validator;
-
-    /** used to identify the consume remaining option, typically "--" */
-    private String consumeRemaining;
-
-    /** default values for argument */
-    private List defaultValues;
-
-    /** id of the argument */
-    private int id;
-
-    /**
-     * Creates a new ArgumentBuilder instance
-     */
-    public ArgumentBuilder() {
-        reset();
-    }
-
-    /**
-     * Creates a new Argument instance using the options specified in this
-     * ArgumentBuilder.
-     * 
-     * @return A new Argument instance using the options specified in this
-     * ArgumentBuilder.
-     */
-    public final Argument create() {
-        final Argument argument =
-            new ArgumentImpl(
-                name,
-                description,
-                minimum,
-                maximum,
-                initialSeparator,
-                subsequentSeparator,
-                validator,
-                consumeRemaining,
-                defaultValues,
-                id);
-
-        reset();
-
-        return argument;
-    }
-
-    /**
-     * Resets the ArgumentBuilder to the defaults for a new Argument. The
-     * method is called automatically at the end of a create() call.
-     */
-    public final ArgumentBuilder reset() {
-        name = "arg";
-        description = null;
-        minimum = 0;
-        maximum = Integer.MAX_VALUE;
-        initialSeparator = ArgumentImpl.DEFAULT_INITIAL_SEPARATOR;
-        subsequentSeparator = ArgumentImpl.DEFAULT_SUBSEQUENT_SEPARATOR;
-        validator = null;
-        consumeRemaining = "--";
-        defaultValues = null;
-        id = 0;
-        return this;
-    }
-
-    /**
-     * Sets the name of the argument. The name is used when displaying usage
-     * information and to allow lookups in the CommandLine object.
-     * 
-     * @see org.apache.commons.cli2.CommandLine#getValue(String)
-     * 
-     * @param newName the name of the argument
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withName(final String newName) {
-    	if (newName == null) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_NAME));
-    	}
-    	if ("".equals(newName)) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME));
-    	}
-        this.name = newName;
-        return this;
-    }
-
-    /**
-     * Sets the description of the argument.
-     * 
-     * The description is used when displaying online help.
-     * 
-     * @param newDescription a description of the argument
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withDescription(final String newDescription) {
-        this.description = newDescription;
-        return this;
-    }
-
-    /**
-     * Sets the minimum number of values needed for the argument to be valid.
-     * 
-     * @param newMinimum the number of values needed
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withMinimum(final int newMinimum) {
-    	if (newMinimum < 0) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM));
-    	}
-        this.minimum = newMinimum;
-        return this;
-    }
-
-    /**
-     * Sets the maximum number of values allowed for the argument to be valid.
-     * 
-     * @param newMaximum the number of values allowed
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withMaximum(final int newMaximum) {
-    	if (newMaximum < 0) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM));
-    	}
-        this.maximum = newMaximum;
-        return this;
-    }
-
-    /**
-     * Sets the character used to separate the values from the option. When an
-     * argument is of the form -libs:dir1,dir2,dir3 the initialSeparator would
-     * be ':'.
-     * 
-     * @param newInitialSeparator the character used to separate the values 
-     * from the option
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withInitialSeparator(
-        final char newInitialSeparator) {
-
-        this.initialSeparator = newInitialSeparator;
-        return this;
-    }
-
-    /**
-     * Sets the character used to separate the values from each other. When an
-     * argument is of the form -libs:dir1,dir2,dir3 the subsequentSeparator
-     * would be ','.
-     * 
-     * @param newSubsequentSeparator the character used to separate the values 
-     * from each other
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withSubsequentSeparator(
-        final char newSubsequentSeparator) {
-
-        this.subsequentSeparator = newSubsequentSeparator;
-        return this;
-    }
-
-    /**
-     * Sets the validator instance used to perform validation on the Argument
-     * values.
-     * 
-     * @param newValidator a Validator instance
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withValidator(final Validator newValidator) {
-    	if (newValidator == null) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR));
-    	}
-        this.validator = newValidator;
-        return this;
-    }
-
-    /**
-     * Sets the "consume remaining" option, defaults to "--". Use this if you
-     * want to allow values that might be confused with option strings.
-     * 
-     * @param newConsumeRemaining the string to use for the consume 
-     * remaining option
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withConsumeRemaining(final String newConsumeRemaining) {
-    	if (newConsumeRemaining == null) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING));
-    	} 
-    	if ( "".equals(newConsumeRemaining)) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING));
-    	}
-        this.consumeRemaining = newConsumeRemaining;
-        return this;
-    }
-
-    /**
-     * Sets the default value.
-     * 
-     * @param defaultValue the default value for the Argument
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withDefault(final Object defaultValue) {
-    	if (defaultValue == null) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT));
-    	}
-    	
-        if (this.defaultValues == null) {
-            this.defaultValues = new ArrayList(1);
-        }
-        this.defaultValues.add(defaultValue);
-        return this;
-    }
-
-    /**
-     * Sets the default values.
-     * 
-     * @param newDefaultValues the default values for the Argument
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withDefaults(final List newDefaultValues) {
-    	if (newDefaultValues == null) {
-    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS));
-    	}
-        this.defaultValues = newDefaultValues;
-        return this;
-    }
-
-    /**
-     * Sets the id
-     * 
-     * @param newId the id of the Argument
-     * @return this ArgumentBuilder
-     */
-    public final ArgumentBuilder withId(final int newId) {
-        this.id = newId;
-        return this;
-    }
-}
+/* * 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.builder;import java.util.ArrayList;import java.util.List;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.option.ArgumentImpl;import org.apache.commo
 ns.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;import org.apache.commons.cli2.validation.Validator;/** * Builds Argument instances. */public class ArgumentBuilder {	/** i18n */	private final static ResourceHelper resources = ResourceHelper.getResourceHelper();    /** name of the argument. Used for display and lookups in CommandLine */    private String name;    /** description of the argument. Used in the automated online help */    private String description;    /** minimum number of values required */    private int minimum;    /** maximum number of values permitted */    private int maximum;    /** character used to separate the values from the option */    private char initialSeparator;    /** character used to separate the values from each other */    private char subsequentSeparator;    /** object that should be used to ensure the values are valid */    private Validator validator;    /** used to identify the consume remaining
  option, typically "--" */    private String consumeRemaining;    /** default values for argument */    private List defaultValues;    /** id of the argument */    private int id;    /**     * Creates a new ArgumentBuilder instance     */    public ArgumentBuilder() {        reset();    }    /**     * Creates a new Argument instance using the options specified in this     * ArgumentBuilder.     *     * @return A new Argument instance using the options specified in this     * ArgumentBuilder.     */    public final Argument create() {        final Argument argument =            new ArgumentImpl(                name,                description,                minimum,                maximum,                initialSeparator,                subsequentSeparator,                validator,                consumeRemaining,                defaultValues,                id);        reset();        return argument;    }    /**     * Resets the ArgumentBuilder to the defaults for a new A
 rgument. The     * method is called automatically at the end of a create() call.     */    public final ArgumentBuilder reset() {        name = "arg";        description = null;        minimum = 0;        maximum = Integer.MAX_VALUE;        initialSeparator = ArgumentImpl.DEFAULT_INITIAL_SEPARATOR;        subsequentSeparator = ArgumentImpl.DEFAULT_SUBSEQUENT_SEPARATOR;        validator = null;        consumeRemaining = "--";        defaultValues = null;        id = 0;        return this;    }    /**     * Sets the name of the argument. The name is used when displaying usage     * information and to allow lookups in the CommandLine object.     *     * @see org.apache.commons.cli2.CommandLine#getValue(String)     *     * @param newName the name of the argument     * @return this ArgumentBuilder     */    public final ArgumentBuilder withName(final String newName) {    	if (newName == null) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMEN
 T_BUILDER_NULL_NAME));    	}    	if ("".equals(newName)) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME));    	}        this.name = newName;        return this;    }    /**     * Sets the description of the argument.     *     * The description is used when displaying online help.     *     * @param newDescription a description of the argument     * @return this ArgumentBuilder     */    public final ArgumentBuilder withDescription(final String newDescription) {        this.description = newDescription;        return this;    }    /**     * Sets the minimum number of values needed for the argument to be valid.     *     * @param newMinimum the number of values needed     * @return this ArgumentBuilder     */    public final ArgumentBuilder withMinimum(final int newMinimum) {    	if (newMinimum < 0) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM));
     	}        this.minimum = newMinimum;        return this;    }    /**     * Sets the maximum number of values allowed for the argument to be valid.     *     * @param newMaximum the number of values allowed     * @return this ArgumentBuilder     */    public final ArgumentBuilder withMaximum(final int newMaximum) {    	if (newMaximum < 0) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM));    	}        this.maximum = newMaximum;        return this;    }    /**     * Sets the character used to separate the values from the option. When an     * argument is of the form -libs:dir1,dir2,dir3 the initialSeparator would     * be ':'.     *     * @param newInitialSeparator the character used to separate the values     * from the option     * @return this ArgumentBuilder     */    public final ArgumentBuilder withInitialSeparator(        final char newInitialSeparator) {        this.initialSeparator = newInitialSepa
 rator;        return this;    }    /**     * Sets the character used to separate the values from each other. When an     * argument is of the form -libs:dir1,dir2,dir3 the subsequentSeparator     * would be ','.     *     * @param newSubsequentSeparator the character used to separate the values     * from each other     * @return this ArgumentBuilder     */    public final ArgumentBuilder withSubsequentSeparator(        final char newSubsequentSeparator) {        this.subsequentSeparator = newSubsequentSeparator;        return this;    }    /**     * Sets the validator instance used to perform validation on the Argument     * values.     *     * @param newValidator a Validator instance     * @return this ArgumentBuilder     */    public final ArgumentBuilder withValidator(final Validator newValidator) {    	if (newValidator == null) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR));    	}        this.validator 
 = newValidator;        return this;    }    /**     * Sets the "consume remaining" option, defaults to "--". Use this if you     * want to allow values that might be confused with option strings.     *     * @param newConsumeRemaining the string to use for the consume     * remaining option     * @return this ArgumentBuilder     */    public final ArgumentBuilder withConsumeRemaining(final String newConsumeRemaining) {    	if (newConsumeRemaining == null) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING));    	}    	if ( "".equals(newConsumeRemaining)) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING));    	}        this.consumeRemaining = newConsumeRemaining;        return this;    }    /**     * Sets the default value.     *     * @param defaultValue the default value for the Argument     * @return this ArgumentBuilder     */    p
 ublic final ArgumentBuilder withDefault(final Object defaultValue) {    	if (defaultValue == null) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT));    	}        if (this.defaultValues == null) {            this.defaultValues = new ArrayList(1);        }        this.defaultValues.add(defaultValue);        return this;    }    /**     * Sets the default values.     *     * @param newDefaultValues the default values for the Argument     * @return this ArgumentBuilder     */    public final ArgumentBuilder withDefaults(final List newDefaultValues) {    	if (newDefaultValues == null) {    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS));    	}        this.defaultValues = newDefaultValues;        return this;    }    /**     * Sets the id     *     * @param newId the id of the Argument     * @return this ArgumentBuilder     */    public final ArgumentBuilder
  withId(final int newId) {        this.id = newId;        return this;    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/CommandBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,187 +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.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.Command;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds Command instances
- */
-public class CommandBuilder {
-    /** the preferred name of the command */
-    private String preferredName;
-
-    /** the description of the command */
-    private String description;
-
-    /** the aliases of the command */
-    private Set aliases;
-
-    /** whether the command is required or not */
-    private boolean required;
-
-    /** the argument of the command */
-    private Argument argument;
-
-    /** the children of the command */
-    private Group children;
-
-    /** the id of the command */
-    private int id;
-
-    /**
-     * Creates a new <code>CommandBuilder</code> instance.
-     */
-    public CommandBuilder() {
-        reset();
-    }
-
-    /**
-     * Creates a new <code>Command</code> instance using the properties of the
-     * <code>CommandBuilder</code>.
-     *
-     * @return the new Command instance
-     */
-    public Command create() {
-        // check we have a valid name
-        if (preferredName == null) {
-            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));
-        }
-
-        // build the command
-        final Command option =
-            new Command(preferredName, description, aliases, required, argument, children, id);
-
-        // reset the builder
-        reset();
-
-        return option;
-    }
-
-    /**
-     * Resets the CommandBuilder to the defaults for a new Command.
-     *
-     * This method is called automatically at the end of the
-     * {@link #create() create} method.
-     */
-    public CommandBuilder reset() {
-        preferredName = null;
-        description = null;
-        aliases = new HashSet();
-        required = false;
-        argument = null;
-        children = null;
-        id = 0;
-
-        return this;
-    }
-
-    /**
-     * Specifies the name for the next <code>Command</code>
-     * that is created.  The first name is used as the preferred
-     * display name for the <code>Command</code> and then
-     * later names are used as aliases.
-     *
-     * @param name the name for the next <code>Command</code>
-     * that is created.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public CommandBuilder withName(final String name) {
-        if (preferredName == null) {
-            preferredName = name;
-        } else {
-            aliases.add(name);
-        }
-
-        return this;
-    }
-
-    /**
-     * Specifies the description for the next <code>Command</code>
-     * that is created.  This description is used to produce
-     * help documentation for the <code>Command</code>.
-     *
-     * @param newDescription the description for the next
-     * <code>Command</code> that is created.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public CommandBuilder withDescription(final String newDescription) {
-        this.description = newDescription;
-
-        return this;
-    }
-
-    /**
-     * Specifies whether the next <code>Command</code> created is
-     * required or not.
-     * @param newRequired whether the next <code>Command</code> created is
-     * required or not.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public CommandBuilder withRequired(final boolean newRequired) {
-        this.required = newRequired;
-
-        return this;
-    }
-
-    /**
-     * Specifies the children for the next <code>Command</code>
-     * that is created.
-     *
-     * @param newChildren the child options for the next <code>Command</code>
-     * that is created.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public CommandBuilder withChildren(final Group newChildren) {
-        this.children = newChildren;
-
-        return this;
-    }
-
-    /**
-     * Specifies the argument for the next <code>Command</code>
-     * that is created.
-     *
-     * @param newArgument the argument for the next <code>Command</code>
-     * that is created.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public CommandBuilder withArgument(final Argument newArgument) {
-        this.argument = newArgument;
-
-        return this;
-    }
-
-    /**
-     * Specifies the id for the next <code>Command</code> that is created.
-     *
-     * @param newId the id for the next <code>Command</code> that is created.
-     * @return this <code>CommandBuilder</code>.
-     */
-    public final CommandBuilder withId(final int newId) {
-        this.id = newId;
-
-        return this;
-    }
-}
+/* * 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.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.Co
 mmand;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds Command instances */public class CommandBuilder {    /** the preferred name of the command */    private String preferredName;    /** the description of the command */    private String description;    /** the aliases of the command */    private Set aliases;    /** whether the command is required or not */    private boolean required;    /** the argument of the command */    private Argument argument;    /** the children of the command */    private Group children;    /** the id of the command */    private int id;    /**     * Creates a new <code>CommandBuilder</code> instance.     */    public CommandBuilder() {        reset();    }    /**     * Creates a new <code>Command</code> instance using the properties of the     * <code>CommandBuilder</code>.     *     * @return the new Command instance     */    public Command create() {        // ch
 eck we have a valid name        if (preferredName == null) {            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));        }        // build the command        final Command option =            new Command(preferredName, description, aliases, required, argument, children, id);        // reset the builder        reset();        return option;    }    /**     * Resets the CommandBuilder to the defaults for a new Command.     *     * This method is called automatically at the end of the     * {@link #create() create} method.     */    public CommandBuilder reset() {        preferredName = null;        description = null;        aliases = new HashSet();        required = false;        argument = null;        children = null;        id = 0;        return this;    }    /**     * Specifies the name for the next <code>Command</code>     * that is created.  The first name is used as the preferred     * display name
  for the <code>Command</code> and then     * later names are used as aliases.     *     * @param name the name for the next <code>Command</code>     * that is created.     * @return this <code>CommandBuilder</code>.     */    public CommandBuilder withName(final String name) {        if (preferredName == null) {            preferredName = name;        } else {            aliases.add(name);        }        return this;    }    /**     * Specifies the description for the next <code>Command</code>     * that is created.  This description is used to produce     * help documentation for the <code>Command</code>.     *     * @param newDescription the description for the next     * <code>Command</code> that is created.     * @return this <code>CommandBuilder</code>.     */    public CommandBuilder withDescription(final String newDescription) {        this.description = newDescription;        return this;    }    /**     * Specifies whether the next <code>Command</code> created is  
    * required or not.     * @param newRequired whether the next <code>Command</code> created is     * required or not.     * @return this <code>CommandBuilder</code>.     */    public CommandBuilder withRequired(final boolean newRequired) {        this.required = newRequired;        return this;    }    /**     * Specifies the children for the next <code>Command</code>     * that is created.     *     * @param newChildren the child options for the next <code>Command</code>     * that is created.     * @return this <code>CommandBuilder</code>.     */    public CommandBuilder withChildren(final Group newChildren) {        this.children = newChildren;        return this;    }    /**     * Specifies the argument for the next <code>Command</code>     * that is created.     *     * @param newArgument the argument for the next <code>Command</code>     * that is created.     * @return this <code>CommandBuilder</code>.     */    public CommandBuilder withArgument(final Argument newAr
 gument) {        this.argument = newArgument;        return this;    }    /**     * Specifies the id for the next <code>Command</code> that is created.     *     * @param newId the id for the next <code>Command</code> that is created.     * @return this <code>CommandBuilder</code>.     */    public final CommandBuilder withId(final int newId) {        this.id = newId;        return this;    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/DefaultOptionBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,215 +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.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.DefaultOption;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds DefaultOption instances.
- */
-public class DefaultOptionBuilder {
-    private final String shortPrefix;
-    private final String longPrefix;
-    private final boolean burstEnabled;
-    private String preferredName;
-    private Set aliases;
-    private Set burstAliases;
-    private boolean required;
-    private String description;
-    private Argument argument;
-    private Group children;
-    private int id;
-
-    /**
-     * Creates a new DefaultOptionBuilder using defaults
-     * @see DefaultOption#DEFAULT_SHORT_PREFIX
-     * @see DefaultOption#DEFAULT_LONG_PREFIX
-     * @see DefaultOption#DEFAULT_BURST_ENABLED
-     */
-    public DefaultOptionBuilder() {
-        this(DefaultOption.DEFAULT_SHORT_PREFIX, DefaultOption.DEFAULT_LONG_PREFIX,
-             DefaultOption.DEFAULT_BURST_ENABLED);
-    }
-
-    /**
-     * Creates a new DefaultOptionBuilder
-     * @param shortPrefix the prefix to use for short options
-     * @param longPrefix the prefix to use for long options
-     * @param burstEnabled whether to allow gnu style bursting
-     * @throws IllegalArgumentException if either prefix is less than on
-     *                                  character long
-     */
-    public DefaultOptionBuilder(final String shortPrefix,
-                                final String longPrefix,
-                                final boolean burstEnabled)
-        throws IllegalArgumentException {
-        if ((shortPrefix == null) || (shortPrefix.length() == 0)) {
-            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_SHORT_PREFIX));
-        }
-
-        if ((longPrefix == null) || (longPrefix.length() == 0)) {
-            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_LONG_PREFIX));
-        }
-
-        this.shortPrefix = shortPrefix;
-        this.longPrefix = longPrefix;
-        this.burstEnabled = burstEnabled;
-        reset();
-    }
-
-    /**
-     * Creates a DefaultOption instance
-     * @return the new instance
-     * @throws IllegalStateException if no names have been supplied
-     */
-    public DefaultOption create()
-        throws IllegalStateException {
-        if (preferredName == null) {
-            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));
-        }
-
-        final DefaultOption option =
-            new DefaultOption(shortPrefix, longPrefix, burstEnabled, preferredName, description,
-                              aliases, burstAliases, required, argument, children, id);
-
-        reset();
-
-        return option;
-    }
-
-    /**
-     * Resets the builder
-     */
-    public DefaultOptionBuilder reset() {
-        preferredName = null;
-        description = null;
-        aliases = new HashSet();
-        burstAliases = new HashSet();
-        required = false;
-        argument = null;
-        children = null;
-        id = 0;
-
-        return this;
-    }
-
-    /**
-     * Use this short option name. The first name is used as the preferred
-     * display name for the Command and then later names are used as aliases.
-     *
-     * @param shortName the name to use
-     * @return this builder
-     */
-    public DefaultOptionBuilder withShortName(final String shortName) {
-        final String name = shortPrefix + shortName;
-
-        if (preferredName == null) {
-            preferredName = name;
-        } else {
-            aliases.add(name);
-        }
-
-        if (burstEnabled && (name.length() == (shortPrefix.length() + 1))) {
-            burstAliases.add(name);
-        }
-
-        return this;
-    }
-
-    /**
-     * Use this long option name.  The first name is used as the preferred
-     * display name for the Command and then later names are used as aliases.
-     *
-     * @param longName the name to use
-     * @return this builder
-     */
-    public DefaultOptionBuilder withLongName(final String longName) {
-        final String name = longPrefix + longName;
-
-        if (preferredName == null) {
-            preferredName = name;
-        } else {
-            aliases.add(name);
-        }
-
-        return this;
-    }
-
-    /**
-     * Use this option description
-     * @param newDescription the description to use
-     * @return this builder
-     */
-    public DefaultOptionBuilder withDescription(final String newDescription) {
-        this.description = newDescription;
-
-        return this;
-    }
-
-    /**
-     * Use this optionality
-     * @param newRequired true iff the Option is required
-     * @return this builder
-     */
-    public DefaultOptionBuilder withRequired(final boolean newRequired) {
-        this.required = newRequired;
-
-        return this;
-    }
-
-    /**
-     * Use this child Group
-     * @param newChildren the child Group to use
-     * @return this builder
-     */
-    public DefaultOptionBuilder withChildren(final Group newChildren) {
-        this.children = newChildren;
-
-        return this;
-    }
-
-    /**
-     * Use this Argument
-     * @param newArgument the argument to use
-     * @return this builder
-     */
-    public DefaultOptionBuilder withArgument(final Argument newArgument) {
-        this.argument = newArgument;
-
-        return this;
-    }
-
-    /**
-     * Sets the id
-     *
-     * @param newId
-     *            the id of the DefaultOption
-     * @return this DefaultOptionBuilder
-     */
-    public final DefaultOptionBuilder withId(final int newId) {
-        this.id = newId;
-
-        return this;
-    }
-}
+/* * 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.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.De
 faultOption;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds DefaultOption instances. */public class DefaultOptionBuilder {    private final String shortPrefix;    private final String longPrefix;    private final boolean burstEnabled;    private String preferredName;    private Set aliases;    private Set burstAliases;    private boolean required;    private String description;    private Argument argument;    private Group children;    private int id;    /**     * Creates a new DefaultOptionBuilder using defaults     * @see DefaultOption#DEFAULT_SHORT_PREFIX     * @see DefaultOption#DEFAULT_LONG_PREFIX     * @see DefaultOption#DEFAULT_BURST_ENABLED     */    public DefaultOptionBuilder() {        this(DefaultOption.DEFAULT_SHORT_PREFIX, DefaultOption.DEFAULT_LONG_PREFIX,             DefaultOption.DEFAULT_BURST_ENABLED);    }    /**     * Creates a new DefaultOptionBuilder     * @param shortPrefix 
 the prefix to use for short options     * @param longPrefix the prefix to use for long options     * @param burstEnabled whether to allow gnu style bursting     * @throws IllegalArgumentException if either prefix is less than on     *                                  character long     */    public DefaultOptionBuilder(final String shortPrefix,                                final String longPrefix,                                final boolean burstEnabled)        throws IllegalArgumentException {        if ((shortPrefix == null) || (shortPrefix.length() == 0)) {            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_SHORT_PREFIX));        }        if ((longPrefix == null) || (longPrefix.length() == 0)) {            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_ILLEGAL_LONG_PREFIX));        }        this.shortPrefix = shortPrefix;        this.long
 Prefix = longPrefix;        this.burstEnabled = burstEnabled;        reset();    }    /**     * Creates a DefaultOption instance     * @return the new instance     * @throws IllegalStateException if no names have been supplied     */    public DefaultOption create()        throws IllegalStateException {        if (preferredName == null) {            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME));        }        final DefaultOption option =            new DefaultOption(shortPrefix, longPrefix, burstEnabled, preferredName, description,                              aliases, burstAliases, required, argument, children, id);        reset();        return option;    }    /**     * Resets the builder     */    public DefaultOptionBuilder reset() {        preferredName = null;        description = null;        aliases = new HashSet();        burstAliases = new HashSet();        required = false;        argument = null
 ;        children = null;        id = 0;        return this;    }    /**     * Use this short option name. The first name is used as the preferred     * display name for the Command and then later names are used as aliases.     *     * @param shortName the name to use     * @return this builder     */    public DefaultOptionBuilder withShortName(final String shortName) {        final String name = shortPrefix + shortName;        if (preferredName == null) {            preferredName = name;        } else {            aliases.add(name);        }        if (burstEnabled && (name.length() == (shortPrefix.length() + 1))) {            burstAliases.add(name);        }        return this;    }    /**     * Use this long option name.  The first name is used as the preferred     * display name for the Command and then later names are used as aliases.     *     * @param longName the name to use     * @return this builder     */    public DefaultOptionBuilder withLongName(final String l
 ongName) {        final String name = longPrefix + longName;        if (preferredName == null) {            preferredName = name;        } else {            aliases.add(name);        }        return this;    }    /**     * Use this option description     * @param newDescription the description to use     * @return this builder     */    public DefaultOptionBuilder withDescription(final String newDescription) {        this.description = newDescription;        return this;    }    /**     * Use this optionality     * @param newRequired true iff the Option is required     * @return this builder     */    public DefaultOptionBuilder withRequired(final boolean newRequired) {        this.required = newRequired;        return this;    }    /**     * Use this child Group     * @param newChildren the child Group to use     * @return this builder     */    public DefaultOptionBuilder withChildren(final Group newChildren) {        this.children = newChildren;        return this;    }  
   /**     * Use this Argument     * @param newArgument the argument to use     * @return this builder     */    public DefaultOptionBuilder withArgument(final Argument newArgument) {        this.argument = newArgument;        return this;    }    /**     * Sets the id     *     * @param newId     *            the id of the DefaultOption     * @return this DefaultOptionBuilder     */    public final DefaultOptionBuilder withId(final int newId) {        this.id = newId;        return this;    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/GroupBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,118 +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.builder;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.option.GroupImpl;
-
-/**
- * Builds Group instances
- */
-public class GroupBuilder {
-
-    private String name;
-    private String description;
-    private List options;
-    private int minimum;
-    private int maximum;
-
-    /**
-     * Creates a new GroupBuilder
-     */
-    public GroupBuilder() {
-        reset();
-    }
-
-    /**
-     * Creates a new Group instance
-     * @return the new Group instance
-     */
-    public Group create() {
-        final GroupImpl group =
-            new GroupImpl(options, name, description, minimum, maximum);
-
-        reset();
-
-        return group;
-    }
-
-    /**
-     * Resets the builder
-     */
-    public GroupBuilder reset() {
-        name = null;
-        description = null;
-        options = new ArrayList();
-        minimum = 0;
-        maximum = Integer.MAX_VALUE;
-        return this;
-    }
-
-    /**
-     * Use this option description
-     * @param newDescription the description to use
-     * @return this builder
-     */
-    public GroupBuilder withDescription(final String newDescription) {
-        this.description = newDescription;
-        return this;
-    }
-
-    /**
-     * Use this option name
-     * @param newName the name to use
-     * @return this builder
-     */
-    public GroupBuilder withName(final String newName) {
-        this.name = newName;
-        return this;
-    }
-
-    /**
-     * A valid group requires at least this many options present
-     * @param newMinimum the minimum Options required
-     * @return this builder
-     */
-    public GroupBuilder withMinimum(final int newMinimum) {
-        this.minimum = newMinimum;
-        return this;
-    }
-
-    /**
-     * A valid group requires at most this many options present
-     * @param newMaximum the maximum Options allowed
-     * @return this builder
-     */
-    public GroupBuilder withMaximum(final int newMaximum) {
-        this.maximum = newMaximum;
-        return this;
-    }
-
-    /**
-     * Add this option to the group
-     * @param option the Option to add
-     * @return this builder
-     */
-    public GroupBuilder withOption(final Option option) {
-        this.options.add(option);
-        return this;
-    }
-}
+/** * 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.builder;import java.util.ArrayList;import java.util.List;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.Option;import org.apache.commons.cli2.option.
 GroupImpl;/** * Builds Group instances */public class GroupBuilder {    private String name;    private String description;    private List options;    private int minimum;    private int maximum;    /**     * Creates a new GroupBuilder     */    public GroupBuilder() {        reset();    }    /**     * Creates a new Group instance     * @return the new Group instance     */    public Group create() {        final GroupImpl group =            new GroupImpl(options, name, description, minimum, maximum);        reset();        return group;    }    /**     * Resets the builder     */    public GroupBuilder reset() {        name = null;        description = null;        options = new ArrayList();        minimum = 0;        maximum = Integer.MAX_VALUE;        return this;    }    /**     * Use this option description     * @param newDescription the description to use     * @return this builder     */    public GroupBuilder withDescription(final String newDescription) {        th
 is.description = newDescription;        return this;    }    /**     * Use this option name     * @param newName the name to use     * @return this builder     */    public GroupBuilder withName(final String newName) {        this.name = newName;        return this;    }    /**     * A valid group requires at least this many options present     * @param newMinimum the minimum Options required     * @return this builder     */    public GroupBuilder withMinimum(final int newMinimum) {        this.minimum = newMinimum;        return this;    }    /**     * A valid group requires at most this many options present     * @param newMaximum the maximum Options allowed     * @return this builder     */    public GroupBuilder withMaximum(final int newMaximum) {        this.maximum = newMaximum;        return this;    }    /**     * Add this option to the group     * @param option the Option to add     * @return this builder     */    public GroupBuilder withOption(final Option option
 ) {        this.options.add(option);        return this;    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/PatternBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,202 +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.builder;
-
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.validation.ClassValidator;
-import org.apache.commons.cli2.validation.DateValidator;
-import org.apache.commons.cli2.validation.FileValidator;
-import org.apache.commons.cli2.validation.NumberValidator;
-import org.apache.commons.cli2.validation.UrlValidator;
-import org.apache.commons.cli2.validation.Validator;
-
-/**
- * Builds Options using a String pattern
- */
-//TODO Document and link to the acceptable patterns
-public class PatternBuilder {
-
-    private final GroupBuilder gbuilder;
-    private final DefaultOptionBuilder obuilder;
-    private final ArgumentBuilder abuilder;
-
-    /**
-     * Creates a new PatternBuilder
-     */
-    public PatternBuilder() {
-        this(
-            new GroupBuilder(),
-            new DefaultOptionBuilder(),
-            new ArgumentBuilder());
-    }
-
-    /**
-     * Creates a new PatternBuilder
-     * @param gbuilder the GroupBuilder to use
-     * @param obuilder the DefaultOptionBuilder to use
-     * @param abuilder the ArgumentBuilder to use
-     */
-    public PatternBuilder(
-        final GroupBuilder gbuilder,
-        final DefaultOptionBuilder obuilder,
-        final ArgumentBuilder abuilder) {
-        this.gbuilder = gbuilder;
-        this.obuilder = obuilder;
-        this.abuilder = abuilder;
-    }
-
-    private final Set options = new LinkedHashSet();
-
-    /**
-     * Creates a new Option instance.
-     * @return a new Option instance
-     */
-    public Option create() {
-        final Option option;
-
-        if (options.size() == 1) {
-            option = (Option)options.iterator().next();
-        }
-        else {
-            gbuilder.reset();
-            for (final Iterator i = options.iterator(); i.hasNext();) {
-                gbuilder.withOption((Option)i.next());
-            }
-            option = gbuilder.create();
-        }
-
-        reset();
-
-        return option;
-    }
-
-    /**
-     * Resets this builder
-     */
-    public PatternBuilder reset() {
-        options.clear();
-        return this;
-    }
-
-    private void createOption(
-        final char type,
-        final boolean required,
-        final char opt) {
-        final Argument argument;
-        if (type != ' ') {
-            abuilder.reset();
-            abuilder.withValidator(validator(type));
-            if (required) {
-                abuilder.withMinimum(1);
-            }
-            if (type != '*') {
-                abuilder.withMaximum(1);
-            }
-            argument = abuilder.create();
-        }
-        else {
-            argument = null;
-        }
-
-        obuilder.reset();
-        obuilder.withArgument(argument);
-        obuilder.withShortName(String.valueOf(opt));
-        obuilder.withRequired(required);
-
-        options.add(obuilder.create());
-    }
-
-    /**
-     * Builds an Option using a pattern string.
-     * @param pattern the pattern to build from
-     */
-    public void withPattern(final String pattern) {
-        int sz = pattern.length();
-
-        char opt = ' ';
-        char ch = ' ';
-        char type = ' ';
-        boolean required = false;
-
-        for (int i = 0; i < sz; i++) {
-            ch = pattern.charAt(i);
-
-            switch (ch) {
-                case '!' :
-                    required = true;
-                    break;
-                case '@' :
-                case ':' :
-                case '%' :
-                case '+' :
-                case '#' :
-                case '<' :
-                case '>' :
-                case '*' :
-                case '/' :
-                    type = ch;
-                    break;
-                default :
-                    if (opt != ' ') {
-                        createOption(type, required, opt);
-                        required = false;
-                        type = ' ';
-                    }
-
-                    opt = ch;
-            }
-        }
-
-        if (opt != ' ') {
-            createOption(type, required, opt);
-        }
-    }
-
-    private static Validator validator(final char c) {
-        switch (c) {
-            case '@' :
-                final ClassValidator classv = new ClassValidator();
-                classv.setInstance(true);
-                return classv;
-            case '+' :
-                final ClassValidator instancev = new ClassValidator();
-                return instancev;
-                //case ':':// no validator needed for a string
-            case '%' :
-                return NumberValidator.getNumberInstance();
-            case '#' :
-                return DateValidator.getDateInstance();
-            case '<' :
-                final FileValidator existingv = new FileValidator();
-                existingv.setExisting(true);
-                existingv.setFile(true);
-                return existingv;
-            case '>' :
-            case '*' :
-                return new FileValidator();
-            case '/' :
-                return new UrlValidator();
-            default :
-                return null;
-        }
-    }
-}
+/** * 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.builder;import java.util.Iterator;import java.util.LinkedHashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Option;import
  org.apache.commons.cli2.validation.ClassValidator;import org.apache.commons.cli2.validation.DateValidator;import org.apache.commons.cli2.validation.FileValidator;import org.apache.commons.cli2.validation.NumberValidator;import org.apache.commons.cli2.validation.UrlValidator;import org.apache.commons.cli2.validation.Validator;/** * Builds Options using a String pattern *///TODO Document and link to the acceptable patternspublic class PatternBuilder {    private final GroupBuilder gbuilder;    private final DefaultOptionBuilder obuilder;    private final ArgumentBuilder abuilder;    /**     * Creates a new PatternBuilder     */    public PatternBuilder() {        this(            new GroupBuilder(),            new DefaultOptionBuilder(),            new ArgumentBuilder());    }    /**     * Creates a new PatternBuilder     * @param gbuilder the GroupBuilder to use     * @param obuilder the DefaultOptionBuilder to use     * @param abuilder the ArgumentBuilder to use     */    p
 ublic PatternBuilder(        final GroupBuilder gbuilder,        final DefaultOptionBuilder obuilder,        final ArgumentBuilder abuilder) {        this.gbuilder = gbuilder;        this.obuilder = obuilder;        this.abuilder = abuilder;    }    private final Set options = new LinkedHashSet();    /**     * Creates a new Option instance.     * @return a new Option instance     */    public Option create() {        final Option option;        if (options.size() == 1) {            option = (Option)options.iterator().next();        }        else {            gbuilder.reset();            for (final Iterator i = options.iterator(); i.hasNext();) {                gbuilder.withOption((Option)i.next());            }            option = gbuilder.create();        }        reset();        return option;    }    /**     * Resets this builder     */    public PatternBuilder reset() {        options.clear();        return this;    }    private void createOption(        final char type,
         final boolean required,        final char opt) {        final Argument argument;        if (type != ' ') {            abuilder.reset();            abuilder.withValidator(validator(type));            if (required) {                abuilder.withMinimum(1);            }            if (type != '*') {                abuilder.withMaximum(1);            }            argument = abuilder.create();        }        else {            argument = null;        }        obuilder.reset();        obuilder.withArgument(argument);        obuilder.withShortName(String.valueOf(opt));        obuilder.withRequired(required);        options.add(obuilder.create());    }    /**     * Builds an Option using a pattern string.     * @param pattern the pattern to build from     */    public void withPattern(final String pattern) {        int sz = pattern.length();        char opt = ' ';        char ch = ' ';        char type = ' ';        boolean required = false;        for (int i = 0; i < sz; i+
 +) {            ch = pattern.charAt(i);            switch (ch) {                case '!' :                    required = true;                    break;                case '@' :                case ':' :                case '%' :                case '+' :                case '#' :                case '<' :                case '>' :                case '*' :                case '/' :                    type = ch;                    break;                default :                    if (opt != ' ') {                        createOption(type, required, opt);                        required = false;                        type = ' ';                    }                    opt = ch;            }        }        if (opt != ' ') {            createOption(type, required, opt);        }    }    private static Validator validator(final char c) {        switch (c) {            case '@' :                final ClassValidator classv = new ClassValidator();                classv.setInsta
 nce(true);                return classv;            case '+' :                final ClassValidator instancev = new ClassValidator();                return instancev;                //case ':':// no validator needed for a string            case '%' :                return NumberValidator.getNumberInstance();            case '#' :                return DateValidator.getDateInstance();            case '<' :                final FileValidator existingv = new FileValidator();                existingv.setExisting(true);                existingv.setFile(true);                return existingv;            case '>' :            case '*' :                return new FileValidator();            case '/' :                return new UrlValidator();            default :                return null;        }    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/SwitchBuilder.java Fri Mar 21 19:49:41 2008
@@ -1,194 +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.builder;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.cli2.Argument;
-import org.apache.commons.cli2.Group;
-import org.apache.commons.cli2.option.Switch;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Builds Switch instance.
- */
-public class SwitchBuilder {
-    private final String enabledPrefix;
-    private final String disabledPrefix;
-    private String description;
-    private String preferredName;
-    private Set aliases;
-    private boolean required;
-    private Argument argument;
-    private Group children;
-    private int id;
-    private Boolean switchDefault;
-
-    /**
-     * Creates a new SwitchBuilder using defaults.
-     * @see Switch#DEFAULT_ENABLED_PREFIX
-     * @see Switch#DEFAULT_DISABLED_PREFIX
-     */
-    public SwitchBuilder() {
-        this(Switch.DEFAULT_ENABLED_PREFIX, Switch.DEFAULT_DISABLED_PREFIX);
-    }
-
-    /**
-     * Creates a new SwitchBuilder
-     * @param enabledPrefix the prefix to use for enabling the option
-     * @param disabledPrefix the prefix to use for disabling the option
-     * @throws IllegalArgumentException if either prefix is less than 1
-     *                                  character long or the prefixes match
-     */
-    public SwitchBuilder(final String enabledPrefix,
-                         final String disabledPrefix)
-        throws IllegalArgumentException {
-        if ((enabledPrefix == null) || (enabledPrefix.length() < 1)) {
-            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_ENABLED_PREFIX));
-        }
-
-        if ((disabledPrefix == null) || (disabledPrefix.length() < 1)) {
-            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_DISABLED_PREFIX));
-        }
-
-        if (enabledPrefix.equals(disabledPrefix)) {
-            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_IDENTICAL_PREFIXES));
-        }
-
-        this.enabledPrefix = enabledPrefix;
-        this.disabledPrefix = disabledPrefix;
-        reset();
-    }
-
-    /**
-     * Creates a new Switch instance
-     * @return a new Switch instance
-     */
-    public Switch create() {
-        final Switch option =
-            new Switch(enabledPrefix, disabledPrefix, preferredName, aliases, description,
-                       required, argument, children, id, switchDefault);
-
-        reset();
-
-        return option;
-    }
-
-    /**
-     * Resets the builder
-     */
-    public SwitchBuilder reset() {
-        description = null;
-        preferredName = null;
-        required = false;
-        aliases = new HashSet();
-        argument = null;
-        children = null;
-        id = 0;
-        switchDefault = null;
-
-        return this;
-    }
-
-    /**
-     * Use this option description
-     * @param newDescription the description to use
-     * @return this builder
-     */
-    public SwitchBuilder withDescription(final String newDescription) {
-        this.description = newDescription;
-
-        return this;
-    }
-
-    /**
-     * Use this option name. The first name is used as the preferred
-     * display name for the Command and then later names are used as aliases.
-     *
-     * @param name the name to use
-     * @return this builder
-     */
-    public SwitchBuilder withName(final String name) {
-        if (preferredName == null) {
-            preferredName = name;
-        } else {
-            aliases.add(name);
-        }
-
-        return this;
-    }
-
-    /**
-     * Use this optionality
-     * @param newRequired true iff the Option is required
-     * @return this builder
-     */
-    public SwitchBuilder withRequired(final boolean newRequired) {
-        this.required = newRequired;
-
-        return this;
-    }
-
-    /**
-     * Use this Argument
-     * @param newArgument the argument to use
-     * @return this builder
-     */
-    public SwitchBuilder withArgument(final Argument newArgument) {
-        this.argument = newArgument;
-
-        return this;
-    }
-
-    /**
-     * Use this child Group
-     * @param newChildren the child Group to use
-     * @return this builder
-     */
-    public SwitchBuilder withChildren(final Group newChildren) {
-        this.children = newChildren;
-
-        return this;
-    }
-
-    /**
-     * Sets the id
-     *
-     * @param newId
-     *            the id of the Switch
-     * @return this SwitchBuilder
-     */
-    public final SwitchBuilder withId(final int newId) {
-        this.id = newId;
-
-        return this;
-    }
-
-    /**
-     * Sets the default state for this switch
-     *
-     * @param newSwitchDefault the default state
-     * @return this SwitchBuilder
-     */
-    public final SwitchBuilder withSwitchDefault(final Boolean newSwitchDefault) {
-        this.switchDefault = newSwitchDefault;
-
-        return this;
-    }
-}
+/* * 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.builder;import java.util.HashSet;import java.util.Set;import org.apache.commons.cli2.Argument;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.option.Sw
 itch;import org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Builds Switch instance. */public class SwitchBuilder {    private final String enabledPrefix;    private final String disabledPrefix;    private String description;    private String preferredName;    private Set aliases;    private boolean required;    private Argument argument;    private Group children;    private int id;    private Boolean switchDefault;    /**     * Creates a new SwitchBuilder using defaults.     * @see Switch#DEFAULT_ENABLED_PREFIX     * @see Switch#DEFAULT_DISABLED_PREFIX     */    public SwitchBuilder() {        this(Switch.DEFAULT_ENABLED_PREFIX, Switch.DEFAULT_DISABLED_PREFIX);    }    /**     * Creates a new SwitchBuilder     * @param enabledPrefix the prefix to use for enabling the option     * @param disabledPrefix the prefix to use for disabling the option     * @throws IllegalArgumentException if either prefix is less tha
 n 1     *                                  character long or the prefixes match     */    public SwitchBuilder(final String enabledPrefix,                         final String disabledPrefix)        throws IllegalArgumentException {        if ((enabledPrefix == null) || (enabledPrefix.length() < 1)) {            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_ENABLED_PREFIX));        }        if ((disabledPrefix == null) || (disabledPrefix.length() < 1)) {            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_ILLEGAL_DISABLED_PREFIX));        }        if (enabledPrefix.equals(disabledPrefix)) {            throw new IllegalArgumentException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.SWITCH_IDENTICAL_PREFIXES));        }        this.enabledPrefix = enabledPrefix;        this.disabledPrefix = disabledPrefix;        reset();    }  
   /**     * Creates a new Switch instance     * @return a new Switch instance     */    public Switch create() {        final Switch option =            new Switch(enabledPrefix, disabledPrefix, preferredName, aliases, description,                       required, argument, children, id, switchDefault);        reset();        return option;    }    /**     * Resets the builder     */    public SwitchBuilder reset() {        description = null;        preferredName = null;        required = false;        aliases = new HashSet();        argument = null;        children = null;        id = 0;        switchDefault = null;        return this;    }    /**     * Use this option description     * @param newDescription the description to use     * @return this builder     */    public SwitchBuilder withDescription(final String newDescription) {        this.description = newDescription;        return this;    }    /**     * Use this option name. The first name is used as the preferred 
     * display name for the Command and then later names are used as aliases.     *     * @param name the name to use     * @return this builder     */    public SwitchBuilder withName(final String name) {        if (preferredName == null) {            preferredName = name;        } else {            aliases.add(name);        }        return this;    }    /**     * Use this optionality     * @param newRequired true iff the Option is required     * @return this builder     */    public SwitchBuilder withRequired(final boolean newRequired) {        this.required = newRequired;        return this;    }    /**     * Use this Argument     * @param newArgument the argument to use     * @return this builder     */    public SwitchBuilder withArgument(final Argument newArgument) {        this.argument = newArgument;        return this;    }    /**     * Use this child Group     * @param newChildren the child Group to use     * @return this builder     */    public SwitchBuilder withC
 hildren(final Group newChildren) {        this.children = newChildren;        return this;    }    /**     * Sets the id     *     * @param newId     *            the id of the Switch     * @return this SwitchBuilder     */    public final SwitchBuilder withId(final int newId) {        this.id = newId;        return this;    }    /**     * Sets the default state for this switch     *     * @param newSwitchDefault the default state     * @return this SwitchBuilder     */    public final SwitchBuilder withSwitchDefault(final Boolean newSwitchDefault) {        this.switchDefault = newSwitchDefault;        return this;    }}
\ No newline at end of file

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java?rev=639941&r1=639940&r2=639941&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/commandline/CommandLineImpl.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.commandline;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.cli2.CommandLine;
-import org.apache.commons.cli2.Option;
-import org.apache.commons.cli2.resource.ResourceConstants;
-import org.apache.commons.cli2.resource.ResourceHelper;
-
-/**
- * Instances of CommandLine represent a command line that has been processed
- * according to the definition supplied to the parser.
- */
-public abstract class CommandLineImpl implements CommandLine {
-    public final boolean hasOption(final String trigger) {
-        return hasOption(getOption(trigger));
-    }
-
-    public final List getValues(final String trigger) {
-        return getValues(getOption(trigger), Collections.EMPTY_LIST);
-    }
-
-    public final List getValues(final String trigger,
-                                final List defaultValues) {
-        return getValues(getOption(trigger), defaultValues);
-    }
-
-    public final List getValues(final Option option) {
-        return getValues(option, Collections.EMPTY_LIST);
-    }
-
-    public final Object getValue(final String trigger) {
-        return getValue(getOption(trigger), null);
-    }
-
-    public final Object getValue(final String trigger,
-                                 final Object defaultValue) {
-        return getValue(getOption(trigger), defaultValue);
-    }
-
-    public final Object getValue(final Option option) {
-        return getValue(option, null);
-    }
-
-    public final Object getValue(final Option option,
-                                 final Object defaultValue) {
-        final List values;
-
-        if (defaultValue == null) {
-            values = getValues(option);
-        } else {
-            values = getValues(option, Collections.singletonList(defaultValue));
-        }
-
-        if (values.size() > 1) {
-            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ARGUMENT_TOO_MANY_VALUES));
-        }
-
-        if (values.isEmpty()) {
-            return defaultValue;
-        }
-
-        return values.get(0);
-    }
-
-    public final Boolean getSwitch(final String trigger) {
-        return getSwitch(getOption(trigger), null);
-    }
-
-    public final Boolean getSwitch(final String trigger,
-                                   final Boolean defaultValue) {
-        return getSwitch(getOption(trigger), defaultValue);
-    }
-
-    public final Boolean getSwitch(final Option option) {
-        return getSwitch(option, null);
-    }
-
-    public final String getProperty(final String property) {
-        return getProperty(property, null);
-    }
-
-    public final int getOptionCount(final String trigger) {
-        return getOptionCount(getOption(trigger));
-    }
-
-    public final int getOptionCount(final Option option) {
-        if (option == null) {
-            return 0;
-        }
-
-        int count = 0;
-
-        for (Iterator i = getOptions().iterator(); i.hasNext();) {
-            if (option.equals(i.next())) {
-                ++count;
-            }
-        }
-
-        return count;
-    }
-}
+/* * 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.commandline;import java.util.Collections;import java.util.Iterator;import java.util.List;import org.apache.commons.cli2.CommandLine;import org.apache.commons.cli2.Option;i
 mport org.apache.commons.cli2.resource.ResourceConstants;import org.apache.commons.cli2.resource.ResourceHelper;/** * Instances of CommandLine represent a command line that has been processed * according to the definition supplied to the parser. */public abstract class CommandLineImpl implements CommandLine {    public final boolean hasOption(final String trigger) {        return hasOption(getOption(trigger));    }    public final List getValues(final String trigger) {        return getValues(getOption(trigger), Collections.EMPTY_LIST);    }    public final List getValues(final String trigger,                                final List defaultValues) {        return getValues(getOption(trigger), defaultValues);    }    public final List getValues(final Option option) {        return getValues(option, Collections.EMPTY_LIST);    }    public final Object getValue(final String trigger) {        return getValue(getOption(trigger), null);    }    public final Object getValue(final
  String trigger,                                 final Object defaultValue) {        return getValue(getOption(trigger), defaultValue);    }    public final Object getValue(final Option option) {        return getValue(option, null);    }    public final Object getValue(final Option option,                                 final Object defaultValue) {        final List values;        if (defaultValue == null) {            values = getValues(option);        } else {            values = getValues(option, Collections.singletonList(defaultValue));        }        if (values.size() > 1) {            throw new IllegalStateException(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.ARGUMENT_TOO_MANY_VALUES));        }        if (values.isEmpty()) {            return defaultValue;        }        return values.get(0);    }    public final Boolean getSwitch(final String trigger) {        return getSwitch(getOption(trigger), null);    }    public final Boolean getSwitch(f
 inal String trigger,                                   final Boolean defaultValue) {        return getSwitch(getOption(trigger), defaultValue);    }    public final Boolean getSwitch(final Option option) {        return getSwitch(option, null);    }    public final String getProperty(final String property) {        return getProperty(property, null);    }    public final int getOptionCount(final String trigger) {        return getOptionCount(getOption(trigger));    }    public final int getOptionCount(final Option option) {        if (option == null) {            return 0;        }        int count = 0;        for (Iterator i = getOptions().iterator(); i.hasNext();) {            if (option.equals(i.next())) {                ++count;            }        }        return count;    }}
\ No newline at end of file