Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## opencard.core.service
Class CardServiceRegistry

    java.lang.Object
      |
      +--opencard.core.service.CardServiceRegistry

public final class CardServiceRegistry
extends java.lang.Object

The `CardServiceRegistry` keeps track of `CardServiceFactories`. When asked for a certain `CardService` it searches through its registered `CardServiceFactory`s to find one which is able to create this. NOTE that there exists only one system-wide instance of this class which can be accessed via `CardServiceRegistry.getRegistry ()`.

See Also:
  `CardService`, `CardServiceFactory`, `CardServiceScheduler`, `CardChannel`

Method Summary
`void` | `add(CardServiceFactory factory)` Adds a `CardServiceFactory` to the registry.
`protected java.lang.Class` | `getCardServiceClassFor(java.lang.Class clazz, CardID cid, CardServiceScheduler scheduler)` Gets a `CardService` class object for `clazz`.
`java.util.Enumeration` | `getCardServiceFactories()` Gets all registered card service factories.
`protected CardService` | `getCardServiceInstance(java.lang.Class clazz, CardID cid, CardServiceScheduler scheduler, SmartCard card, boolean block)` Tries to instantiate a `CardService` that is an instance of `clazz` and that works with the smart card represented by `cid`.
`static CardServiceRegistry` | `getRegistry()` Gets a reference to the system-wide `CardServiceRegistry` object ('Singleton' pattern).
`protected SmartCard` | `getSmartCard(CardTerminalEvent ctEvent, CardRequest req, java.lang.Object lockHandle)` Gets a `SmartCard` object based on a received `CardTerminalEvent`.
`protected void` | `releaseScheduler(CardServiceScheduler scheduler)` Releases a `CardServiceScheduler`.
`void` | `remove(CardServiceFactory factory)` Removes the passed `CardServiceFactory` from the registry.
`java.lang.String` | `toString()` Gets a meaningful `String` representation of this `CardServiceRegistry`.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Method Detail

### add

    public void add(CardServiceFactory factory)

  Adds a `CardServiceFactory` to the registry.
  Parameters:
    `factory` - The `CardServiceFactory` to add.

### getCardServiceClassFor

    protected java.lang.Class getCardServiceClassFor(java.lang.Class clazz,
                                                     CardID cid,
                                                     CardServiceScheduler scheduler)

  Gets a `CardService` class object for `clazz`.
  Parameters:
    `clazz` - The class that the requested `CardService` should be an instance of.
    `cid` - A `CardID` object representing the smart card for which the `CardService` is requested.
    `scheduler` - The `CardServiceScheduler`for the card to be inspected.``
  Returns:
    The `CardService` class object if available; otherwise `null`.

### getCardServiceFactories

    public final java.util.Enumeration getCardServiceFactories()

  Gets all registered card service factories. A registered factory is one that has been passed to `add`, but has not yet been removed using `remove`.
  Returns:
    an enumeration of the registered card service factories

### getCardServiceInstance

    protected CardService getCardServiceInstance(java.lang.Class clazz,
                                                 CardID cid,
                                                 CardServiceScheduler scheduler,
                                                 SmartCard card,
                                                 boolean block)
                                          throws java.lang.ClassNotFoundException

  Tries to instantiate a `CardService` that is an instance of `clazz` and that works with the smart card represented by `cid`.
  Parameters:
    `clazz` - The class that the requested `CardService` should be an instance of.
    `cid` - A `CardID` object representing the smart card for which the `CardService` is requested.
    `scheduler` - The controlling `CardServiceScheduler`
    `card` - The `SmarCard` object requesting the `CardService`
    `block` - Specifies the waiting behavior of the newly created `CardService`; if true it will wait for `CardChannel` (i.e., block).
  Throws:
    java.lang.ClassNotFoundException - Thrown when no fitting `CardService` could be found.

### getRegistry

    public static CardServiceRegistry getRegistry()

  Gets a reference to the system-wide `CardServiceRegistry` object ('Singleton' pattern).
  Returns:
    Reference to the system-wide `CardServiceRegistry`.

### getSmartCard

    protected SmartCard getSmartCard(CardTerminalEvent ctEvent,
                                     CardRequest req,
                                     java.lang.Object lockHandle)
                              throws CardTerminalException

  Gets a `SmartCard` object based on a received `CardTerminalEvent`.
  Parameters:
    `ctEvent` - A `CardTerminalEvent` event received from a terminal.
    `req` - A `CardRequest` object describing what kind of `SmartCard` is requested.
    `lockHandle` - handle obtained by lock owner when locking the terminal
  Returns:
    A `SmartCard` object or `null` if not successful.

### releaseScheduler

    protected void releaseScheduler(CardServiceScheduler scheduler)

  Releases a `CardServiceScheduler`.
  Parameters:
    `scheduler` - The `CardServiceScheduler` to release.

### remove

    public void remove(CardServiceFactory factory)

  Removes the passed `CardServiceFactory` from the registry.
  Parameters:
    `factory` - The `CardServiceFactory` to add.

### toString

    public java.lang.String toString()

  Gets a meaningful `String` representation of this `CardServiceRegistry`.
  Overrides:
    toString in class java.lang.Object

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD