java.lang.Object | |
↳ | javax.smartcardio.CardTerminals |
The set of terminals supported by a TerminalFactory. This class allows applications to enumerate the available CardTerminals, obtain a specific CardTerminal, or wait for the insertion or removal of cards.
This class is multi-threading safe and can be used by multiple
threads concurrently. However, this object keeps track of the card
presence state of each of its terminals. Multiple objects should be used
if independent calls to waitForChange()
are required.
Applications can obtain instances of this class by calling
terminals()
.
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
CardTerminals.State | Enumeration of attributes of a CardTerminal. |
Protected Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new CardTerminals object.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Returns the terminal with the specified name or null if no such
terminal exists.
| |||||||||||
Returns an unmodifiable list of all terminals matching the specified
state.
| |||||||||||
Returns an unmodifiable list of all available terminals.
| |||||||||||
Waits for card insertion or removal in any of the terminals of this
object.
| |||||||||||
Waits for card insertion or removal in any of the terminals of this
object or until the timeout expires.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Constructs a new CardTerminals object.
This constructor is called by subclasses only. Application should
call terminals()
to obtain a CardTerminals object.
Returns the terminal with the specified name or null if no such terminal exists.
NullPointerException | if name is null |
---|
Returns an unmodifiable list of all terminals matching the specified state.
If state is State.ALL
, this method returns
all CardTerminals encapsulated by this object.
If state is State.CARD_PRESENT
or
State.CARD_ABSENT
, it returns all
CardTerminals where a card is currently present or absent, respectively.
If state is State.CARD_INSERTION
or
State.CARD_REMOVAL
, it returns all
CardTerminals for which an insertion (or removal, respectively)
was detected during the last call to waitForChange()
.
If waitForChange()
has not been called on this object,
CARD_INSERTION
is equivalent to CARD_PRESENT
and CARD_REMOVAL
is equivalent to CARD_ABSENT
.
For an example of the use of CARD_INSERTION
,
see waitForChange()
.
state | the State |
---|
NullPointerException | if attr is null |
---|---|
CardException | if the card operation failed |
Returns an unmodifiable list of all available terminals.
CardException | if the card operation failed |
---|
Waits for card insertion or removal in any of the terminals of this object.
This call is equivalent to calling
waitForChange(0)
.
IllegalStateException | if this CardTerminals
object does not contain any terminals |
---|---|
CardException | if the card operation failed |
Waits for card insertion or removal in any of the terminals of this object or until the timeout expires.
This method examines each CardTerminal of this object.
If a card was inserted into or removed from a CardTerminal since the
previous call to waitForChange()
, it returns
immediately.
Otherwise, or if this is the first call to waitForChange()
on this object, it blocks until a card is inserted into or removed from
a CardTerminal.
If timeout
is greater than 0, the method returns after
timeout
milliseconds even if there is no change in state.
In that case, this method returns false
; otherwise it
returns true
.
This method is often used in a loop in combination with
list(State.CARD_INSERTION)
,
for example:
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 | if positive, block for up to timeout
milliseconds; if zero, block indefinitely; must not be negative |
---|
IllegalStateException | if this CardTerminals
object does not contain any terminals |
---|---|
IllegalArgumentException | if timeout is negative |
CardException | if the card operation failed |