InputHandler

Overview

概要

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 org.apache.tools.ant.input.InputHandler interface to prompt the user and hand the user input back to the task.

あるタスクでユーザ入力を促したい場合、 単純にコンソールからの入力を読みません。 なぜなら、そうするとAnt を IDE に埋め込むことができなくなるからです。 その代わりに、 ユーザに入力を促し、ユーザ入力をタスクに手渡すための org.apache.tools.ant.input.InputHandlerインターフェースの実装を必要とします。

To do this, the task creates an InputRequest object and passes it to the InputHandler Such an InputRequest may know whether a given user input is valid and the InputHandler is supposed to reject all invalid input.

これを行うには、 そのタスクはInputRequest オブジェクトを生成し、 それをInputHandlerに渡します。 そこでは、 InputRequestは 与えられたユーザ入力が有効であるか知っており、 InputHandler は全ての無効な入力を拒否するよう想定されています。

Exactly one InputHandler instance is associated with every Ant process, users can specify the implementation using the -inputhandler command line switch.

正確に一つのInputHandlerインスタンスが、 それぞれの Ant プロセスに割り当てられており、 ユーザは、 -inputhandlerコマンドラインスイッチにより実装を指定することができます。

InputHandler

The InputHandler interface contains exactly one method

InputHandler インタフェースには、 幾つかの前提条件、事後条件のある一つのメソッドが厳密にあります。

    void handleInput(InputRequest request) 
        throws org.apache.tools.ant.BuildException;

with some pre- and postconditions. The main postcondition is that this method must not return unless the request considers the user input valid, it is allowed to throw an exception in this situation.

主要な事後条件は このメソッドはrequestがユーザ入力を有効と見なさない限りは値を返すべきではないということです。 このような状況では例外をスローすることができます。

Ant comes with two built-in implementations of this interface:

Ant には、このインタフェースの 2 つの組込みの実装があります:

DefaultInputHandler

This is the implementation you get, when you don't use the -inputhandler command line switch at all. This implementation will print the prompt encapsulated in the request object to Ant's logging system and re-prompt for input until the user enters something that is considered valid input by the request object. Input will be read from the console and the user will need to press the Return key.

これは、 -inputhandlerコマンドラインスイッチを全く使わない場合に使われる実装です。 この実装は、requestオブジェクトにカプセル化されたプロンプトを Ant のログシステムに出力し、 requestオブジェクトにより有効な入力であると見なせる何かをユーザが入力するまで再入力を促します。 入力はコンソールより読み込まれ、 ユーザはリターンキーを押す必要があります。

PropertyFileInputHandler

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 ant.input.properties.

この実装は意図しないビルド手続きを実行したい時に便利です。 これは、全ての入力をプロパティより読み込み、 このファイルに有効な入力がなかった場合には、ビルドは失敗します。 プロパティファイルの名前は Java システムプロパティ ant.input.properties で指定されなければなりません。

The prompt encapsulated in a request 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.

requestにカプセル化されたプロンプトは プロパティファイル中で入力を探すときのキーとして使われます。 入力が見つからない場合、 入力は無効と見なされ、例外がスローされます。

Note that ant.input.properties must be a Java system property, not an Ant property. I.e. you cannot define it as a simple parameter to ant, but you can define it inside the ANT_OPTS environment variable.

ant.input.propertiesは Java システムプロパティであり、Ant のプロパティであってはならないことに注意してください 即ち、それをantの単純なパラメータとして定義できず、 ANT_OPTS環境変数中で定義できます。

InputRequest

Instances of org.apache.tools.ant.input.InputRequest encapsulate the information necessary to ask a user for input and validate this input.

org.apache.tools.ant.input.InputRequest のインスタンスは、 ユーザに入力と問い合わせるのに必要な 情報をカプセル化し、この入力を有効化します。

The instances of InputRequest itself will accept any input, but subclasses may use stricter validations. org.apache.tools.ant.input.MultipleChoiceInputRequest should be used if the user input must be part of a predefined set of choices.

InputRequestのインスタンス自身は、 任意の入力を受け付けますが、 サブクラスはより厳密な有効化を用います。 org.apache.tools.ant.input.MultipleChoiceInputRequest は、 ユーザ入力があらかじめ定義された選択肢の一つでなければならない時に使われます。


Copyright © 2002 Apache Software Foundation. All rights Reserved.

[訳注:これは漆島賢二が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]