|
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <title>InputHandler</title>
- </head>
-
- <body>
- <h1>InputHandler</h1>
-
- <h2>Overview</h2>
-
- <p>When a task wants to prompt a user for input, it doesn't simply
- read the input from the console as this would make it impossible to
- embed Ant in an IDE. Instead it asks an implementation of the
- <code>org.apache.tools.ant.input.InputHandler</code> interface to
- prompt the user and hand the user input back to the task.</p>
-
- <p>To do this, the task creates an <code>InputRequest</code> object
- and passes it to the <code>InputHandler</code> Such an
- <code>InputRequest</code> may know whether a given user input is valid
- and the <code>InputHandler</code> is supposed to reject all invalid
- input.</p>
-
- <p>Exactly one <code>InputHandler</code> instance is associated with
- every Ant process, users can specify the implementation using the
- <code>-inputhandler</code> command line switch.</p>
-
- <h2>InputHandler</h2>
-
- <p>The <code>InputHandler</code> interface contains exactly one
- method</p>
-
- <pre>
- void handleInput(InputRequest request)
- throws org.apache.tools.ant.BuildException;
- </pre>
-
- <p>with some pre- and postconditions. The main postcondition is that
- this method must not return unless the <code>request</code> considers
- the user input valid, it is allowed to throw an exception in this
- situation.</p>
-
- <p>Ant comes with two built-in implementations of this interface:</p>
-
- <h3><a name="defaulthandler">DefaultInputHandler</a></h3>
-
- <p>This is the implementation you get, when you don't use the
- <code>-inputhandler</code> command line switch at all. This
- implementation will print the prompt encapsulated in the
- <code>request</code> object to Ant's logging system and re-prompt for
- input until the user enters something that is considered valid input
- by the <code>request</code> object. Input will be read from the
- console and the user will need to press the Return key.</p>
-
- <h3>PropertyFileInputHandler</h3>
-
- <p>This implementation is useful if you want to run unattended build
- processes. It reads all input from a properties file and makes the
- build fail if it cannot find valid input in this file. The name of
- the properties file must be specified in the Java system property
- <code>ant.input.properties</code>.</p>
-
- <p>The prompt encapsulated in a <code>request</code> will be used as
- the key when looking up the input inside the properties file. If no
- input can be found, the input is considered invalid and an exception
- will be thrown.</p>
-
- <p><strong>Note</strong> that <code>ant.input.properties</code> must
- be a Java system property, not an Ant property. I.e. you cannot
- define it as a simple parameter to <code>ant</code>, but you can
- define it inside the <code>ANT_OPTS</code> environment variable.</p>
-
- <h2>InputRequest</h2>
-
- <p>Instances of <code>org.apache.tools.ant.input.InputRequest</code>
- encapsulate the information necessary to ask a user for input and
- validate this input.</p>
-
- <p>The instances of <code>InputRequest</code> itself will accept any
- input, but subclasses may use stricter validations.
- <code>org.apache.tools.ant.input.MultipleChoiceInputRequest</code>
- should be used if the user input must be part of a predefined set of
- choices.</p>
-
- <hr>
- <p align="center">Copyright © 2002 Apache Software Foundation. All rights
- Reserved.</p>
- </html>
|