モジュール java.smartcardio
パッケージ javax.smartcardio

クラスCardTerminals

java.lang.Object
javax.smartcardio.CardTerminals

public abstract class CardTerminals
extends Object
TerminalFactoryによってサポートされる端末のセットです。 このクラスにより、アプリケーションでは、使用可能なCardTerminalの列挙、特定のCardTerminalの取得、またはカードの挿入または取出しの待機を行うことができます。

このクラスは、マルチ・スレッドに対して安全であり、複数のスレッドで並行して使用できます。 ただし、このオブジェクトは、この端末のそれぞれのカードの有無の状態を追跡します。 waitForChange()の独立した呼出しが必要な場合は、複数のオブジェクトを使用する必要があります。

アプリケーションでは、TerminalFactory.terminals()を呼び出すことで、このクラスのインスタンスを取得できます。

導入されたバージョン:
1.6
関連項目:
TerminalFactory, CardTerminal
  • ネストされたクラスのサマリー

    ネストされたクラス 
    修飾子と型 クラス 説明
    static class  CardTerminals.State
    CardTerminalの属性の列挙です。
  • コンストラクタのサマリー

    コンストラクタ 
    修飾子 コンストラクタ 説明
    protected CardTerminals()
    新しいCardTerminalsオブジェクトを構築します。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    CardTerminal getTerminal​(String name)
    指定された名前を持つ端末を返します。そのような端末が存在しない場合はnullを返します。
    List<CardTerminal> list()
    使用可能なすべての端末の変更不可能なリストを返します。
    abstract List<CardTerminal> list​(CardTerminals.State state)
    指定された状態と一致するすべての端末の変更不可能なリストを返します。
    void waitForChange()
    このオブジェクトの端末のいずれかで、カードの挿入または取出しを待機します。
    abstract boolean waitForChange​(long timeout)
    このオブジェクトの端末のいずれかでカードの挿入または取出し、あるいはタイム・アウトの期限切れが発生するのを待機します。

    クラス java.lang.Objectで宣言されたメソッド

    cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait
  • コンストラクタの詳細

    • 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_INSERTIONCARD_PRESENTと同じで、CARD_REMOVALCARD_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 - カード操作が失敗した場合