- java.lang.Object
-
- javax.smartcardio.CardTerminals
-
public abstract class CardTerminals extends Object
TerminalFactoryによってサポートされる端末のセットです。 このクラスにより、アプリケーションでは、使用可能なCardTerminalの列挙、特定のCardTerminalの取得、またはカードの挿入または取出しの待機を行うことができます。このクラスは、マルチ・スレッドに対して安全であり、複数のスレッドで並行して使用できます。 ただし、このオブジェクトは、この端末のそれぞれのカードの有無の状態を追跡します。 waitForChange()の独立した呼出しが必要な場合は、複数のオブジェクトを使用する必要があります。
アプリケーションでは、TerminalFactory.terminals()を呼び出すことで、このクラスのインスタンスを取得できます。
- 導入されたバージョン:
- 1.6
- 関連項目:
TerminalFactory,CardTerminal
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static classCardTerminals.StateCardTerminalの属性の列挙です。
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedCardTerminals()新しいCardTerminalsオブジェクトを構築します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 CardTerminalgetTerminal(String name)指定された名前を持つ端末を返します。そのような端末が存在しない場合はnullを返します。List<CardTerminal>list()使用可能なすべての端末の変更不可能なリストを返します。abstract List<CardTerminal>list(CardTerminals.State state)指定された状態と一致するすべての端末の変更不可能なリストを返します。voidwaitForChange()このオブジェクトの端末のいずれかで、カードの挿入または取出しを待機します。abstract booleanwaitForChange(long timeout)このオブジェクトの端末のいずれかでカードの挿入または取出し、あるいはタイム・アウトの期限切れが発生するのを待機します。
-
-
-
コンストラクタの詳細
-
CardTerminals
protected CardTerminals()
新しいCardTerminalsオブジェクトを構築します。このコンストラクタはサブクラスのみから呼び出されます。 アプリケーションでは、TerminalFactory.terminals()を呼び出してCardTerminalsオブジェクトを取得します。
-
-
メソッドの詳細
-
list
public List<CardTerminal> list() throws CardException
使用可能なすべての端末の変更不可能なリストを返します。- 戻り値:
- 使用可能なすべての端末の変更不可能なリスト
- 例外:
CardException- カード操作が失敗した場合
-
list
public abstract List<CardTerminal> list(CardTerminals.State state) throws CardException
指定された状態と一致するすべての端末の変更不可能なリストを返します。状態が
State.ALLの場合、このメソッドは、このオブジェクトでカプセル化されたすべてのCardTerminalsを返します。 状態がState.CARD_PRESENTまたはState.CARD_ABSENTの場合、それぞれ現在カードが存在するすべてのCardTerminals、または現在カードが存在しないすべてのCardTerminalsを返します。状態が
State.CARD_INSERTIONまたはState.CARD_REMOVALの場合、それぞれ挿入または取出しがwaitForChange()の最後の呼出し中に検出されたすべてのCardTerminalsを返します。 このオブジェクトでwaitForChange()が呼び出されていなかった場合、CARD_INSERTIONはCARD_PRESENTと同じで、CARD_REMOVALはCARD_ABSENTと同じです。CARD_INSERTIONの使用例については、waitForChange()を参照してください。- パラメータ:
state- 状態- 戻り値:
- 指定された状態に一致するすべての端末の変更不可能なリスト。
- 例外:
NullPointerException- 状態がnullの場合CardException- カード操作が失敗した場合
-
getTerminal
public CardTerminal getTerminal(String name)
指定された名前を持つ端末を返します。そのような端末が存在しない場合はnullを返します。- パラメータ:
name- 端末名- 戻り値:
- 指定された名前を持つ端末。そのような端末が存在しない場合はnull
- 例外:
NullPointerException- nameがnullである場合
-
waitForChange
public void waitForChange() throws CardExceptionこのオブジェクトの端末のいずれかで、カードの挿入または取出しを待機します。これは、waitForChange(0)の呼び出しと同等です。
- 例外:
IllegalStateException- このCardTerminalsオブジェクトに端末が含まれない場合CardException- カード操作が失敗した場合
-
waitForChange
public abstract boolean waitForChange(long timeout) throws CardExceptionこのオブジェクトの端末のいずれかでカードの挿入または取出し、あるいはタイム・アウトの期限切れが発生するのを待機します。このメソッドは、このオブジェクトの各CardTerminalを調べます。
waitForChange()の前回の呼出し以降にCardTerminalでカードの挿入または取出しが行われた場合、このメソッドはすぐに復帰します。 そうでない場合、またはこれがこのオブジェクトでの最初のwaitForChange()の呼出しである場合は、CardTerminalでカードの挿入または取出しが行われるまでブロックします。timeoutが0より大きい場合は、状態に変化がなくても、このメソッドはtimeoutミリ秒後に復帰します。 その場合、このメソッドはfalseを返します。そうでない場合、trueを返します。このメソッドは、
list(State.CARD_INSERTION)と組み合わせてループ内でよく使用されます。次に例を示します。TerminalFactory factory = ...; CardTerminals terminals = factory.terminals(); while (true) { for (CardTerminal terminal : terminals.list(CARD_INSERTION)) { // examine Card in terminal, return if it matches } terminals.waitForChange(); }- パラメータ:
timeout- 正の場合は、最大timeoutミリ秒間ブロックする。ゼロの場合は、無期限にブロックする。負にすることはできない- 戻り値:
- タイム・アウトの期限が切れたためにメソッドが復帰した場合はfalse、そうでない場合はtrue
- 例外:
IllegalStateException- このCardTerminalsオブジェクトに端末が含まれない場合IllegalArgumentException- timeoutが負の値の場合CardException- カード操作が失敗した場合
-
-