donaldp 2002/09/12 03:32:30
Modified: cli/src/java/org/apache/avalon/excalibur/cli
CLArgsParser.java CLOption.java
CLOptionDescriptor.java
Log:
Exposed the descriptor via the CLOption.
Submitted By: [EMAIL PROTECTED] (Torsten Knodt)
PR: 12545
Revision Changes Path
1.21 +2 -2
jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLArgsParser.java
Index: CLArgsParser.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLArgsParser.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- CLArgsParser.java 7 Aug 2002 05:45:02 -0000 1.20
+++ CLArgsParser.java 12 Sep 2002 10:32:28 -0000 1.21
@@ -599,7 +599,7 @@
}
m_state = getStateFor( descriptor );
- m_option = new CLOption( descriptor.getId() );
+ m_option = new CLOption( descriptor );
if( STATE_NORMAL == m_state )
{
1.11 +31 -25
jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLOption.java
Index: CLOption.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLOption.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- CLOption.java 7 Aug 2002 05:45:02 -0000 1.10
+++ CLOption.java 12 Sep 2002 10:32:28 -0000 1.11
@@ -23,29 +23,8 @@
*/
public static final int TEXT_ARGUMENT = 0;
- private final int m_id;
private String[] m_arguments;
-
- /**
- * Constructor taking an id (that must be a proper character code)
- *
- * @param id the new id
- */
- public CLOption( final int id )
- {
- m_id = id;
- }
-
- /**
- * Constructor taking argument for option.
- *
- * @param argument the argument
- */
- public CLOption( final String argument )
- {
- this( TEXT_ARGUMENT );
- addArgument( argument );
- }
+ private CLOptionDescriptor m_descriptor;
/**
* Retrieve argument to option if it takes arguments.
@@ -82,10 +61,37 @@
* The id is eqivalent to character code if it can be a single letter option.
*
* @return the id
+ * @deprecated use <code>getDescriptor().getId()</code> instead
*/
public final int getId()
{
- return m_id;
+ return m_descriptor == null ? TEXT_ARGUMENT : m_descriptor.getId();
+ }
+
+ public final CLOptionDescriptor getDescriptor()
+ {
+ return m_descriptor;
+ }
+
+ /**
+ * Constructor taking an descriptor
+ *
+ * @param descriptor the descriptor
+ */
+ public CLOption( final CLOptionDescriptor descriptor )
+ {
+ m_descriptor = descriptor;
+ }
+
+ /**
+ * Constructor taking argument for option.
+ *
+ * @param argument the argument
+ */
+ public CLOption( final String argument )
+ {
+ this( (CLOptionDescriptor) null );
+ addArgument( argument );
}
/**
@@ -134,7 +140,7 @@
{
final StringBuffer sb = new StringBuffer();
sb.append( "[Option " );
- sb.append( (char)m_id );
+ sb.append( (char)m_descriptor.getId() );
if( null != m_arguments )
{
1.15 +29 -4
jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLOptionDescriptor.java
Index: CLOptionDescriptor.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-excalibur/cli/src/java/org/apache/avalon/excalibur/cli/CLOptionDescriptor.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- CLOptionDescriptor.java 7 Aug 2002 05:45:02 -0000 1.14
+++ CLOptionDescriptor.java 12 Sep 2002 10:32:28 -0000 1.15
@@ -62,19 +62,20 @@
* @param flags the flags
* @param id the id/character option
* @param description description of option usage
- * @param incompatable an array listing the ids of all incompatible options
+ * @param incompatible an array listing the ids of all incompatible options
+ * @deprecated use the version with the array of CLOptionDescriptor's
*/
public CLOptionDescriptor( final String name,
final int flags,
final int id,
final String description,
- final int[] incompatable )
+ final int[] incompatible )
{
m_id = id;
m_name = name;
m_flags = flags;
m_description = description;
- m_incompatible = incompatable;
+ m_incompatible = incompatible;
int modeCount = 0;
if( ( ARGUMENT_REQUIRED & flags ) == ARGUMENT_REQUIRED )
@@ -104,6 +105,30 @@
final String message = "Multiple modes specified for option " + this;
throw new IllegalStateException( message );
}
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param name the name/long option
+ * @param flags the flags
+ * @param id the id/character option
+ * @param description description of option usage
+ */
+ public CLOptionDescriptor( final String name,
+ final int flags,
+ final int id,
+ final String description,
+ final CLOptionDescriptor[] incompatible )
+ {
+ m_id = id;
+ m_name = name;
+ m_flags = flags;
+ m_description = description;
+
+ m_incompatible = new int[incompatible.length];
+ for (int i = 0; i < incompatible.length; i++)
+ m_incompatible[i] = incompatible[i].getId();
}
/**
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>