Java Smart Card I/O

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)
          指定された名前を持つ端末を返します。
 List<CardTerminal> list()
          使用可能なすべての端末の変更不可能なリストを返します。
abstract  List<CardTerminal> list(CardTerminals.State state)
          指定された状態と一致するすべての端末の変更不可能なリストを返します。
 void waitForChange()
          このオブジェクトの端末のいずれかで、カードの挿入または取り出しを待機します。
abstract  boolean waitForChange(long timeout)
          このオブジェクトの端末のいずれかでカードの挿入または取り出し、あるいはタイムアウトの期限切れが発生するのを待機します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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 - state が null である場合
CardException - カード操作が失敗した場合

getTerminal

public CardTerminal getTerminal(String name)
指定された名前を持つ端末を返します。そのような端末が存在しない場合は null を返します。

戻り値:
指定された名前を持つ端末。そのような端末が存在しない場合は null
例外:
NullPointerException - 名前が 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 - カード操作が失敗した場合

Java Smart Card I/O