Package org.kapott.hbci.callback

# Class HBCICallbackThreaded

java.lang.Object
org.kapott.hbci.callback.AbstractHBCICallback
org.kapott.hbci.callback.HBCICallbackThreaded

All Implemented Interfaces:
  `HBCICallback`

public final class HBCICallbackThreaded extends AbstractHBCICallback

Wrapper-Klasse, die bei Verwendung des threaded-callback-Mechanismus benötigt wird. Sollen Callbacks synchron behandelt werden, so ist es zur Aktivierung dieses Mechanismus' notwendig, das "normale" Callback-Objekt in einer Instanz dieser Klasse zu kapseln. Diese Klasse sorgt dafür, dass "normale" (asynchrone) Callbacks wie gewohnt von dem "normalen" Callback-Objekt behandelt werden. Bei synchron zu behandelnden Callbacks sorgt diese Callback-Implementierung dafür, dass `hbci.executeThreaded()` terminiert.

Mehr Informationen sind in der Datei `README.ThreadedCallbacks` sowie unter `HBCICallback.useThreadedCallback(HBCIPassport, int, String, int, StringBuffer)` zu finden.

## Field Summary

### Fields inherited from interface org.kapott.hbci.callback.HBCICallback

`CLOSE_CONNECTION, HAVE_CHIPCARD, HAVE_CRC_ERROR, HAVE_ERROR, HAVE_HARDPIN, HAVE_IBAN_ERROR, HAVE_INST_MSG, HAVE_NEW_MY_KEYS, NEED_BLZ, NEED_CHIPCARD, NEED_CONNECTION, NEED_COUNTRY, NEED_CUSTOMERID, NEED_FILTER, NEED_HARDPIN, NEED_HOST, NEED_INFOPOINT_ACK, NEED_NEW_INST_KEYS_ACK, NEED_PASSPHRASE_LOAD, NEED_PASSPHRASE_SAVE, NEED_PORT, NEED_PROXY_PASS, NEED_PROXY_USER, NEED_PT_DECOUPLED, NEED_PT_DECOUPLED_RETRY, NEED_PT_PHOTOTAN, NEED_PT_PIN, NEED_PT_QRTAN, NEED_PT_SECMECH, NEED_PT_TAN, NEED_PT_TANMEDIA, NEED_REMOVE_CHIPCARD, NEED_SIZENTRY_SELECT, NEED_SOFTPIN, NEED_USERID, STATUS_DIALOG_END, STATUS_DIALOG_END_DONE, STATUS_DIALOG_INIT, STATUS_DIALOG_INIT_DONE, STATUS_INIT_SIGID, STATUS_INIT_SIGID_DONE, STATUS_INIT_SYSID, STATUS_INIT_SYSID_DONE, STATUS_INIT_UPD, STATUS_INIT_UPD_DONE, STATUS_INST_BPD_INIT, STATUS_INST_BPD_INIT_DONE, STATUS_INST_GET_KEYS, STATUS_INST_GET_KEYS_DONE, STATUS_LOCK_KEYS, STATUS_LOCK_KEYS_DONE, STATUS_MSG_CREATE, STATUS_MSG_CRYPT, STATUS_MSG_DECRYPT, STATUS_MSG_PARSE, STATUS_MSG_RAW_RECV, STATUS_MSG_RAW_RECV_ENCRYPTED, STATUS_MSG_RAW_SEND, STATUS_MSG_RECV, STATUS_MSG_SEND, STATUS_MSG_SIGN, STATUS_MSG_VERIFY, STATUS_SEND_INFOPOINT_DATA, STATUS_SEND_KEYS, STATUS_SEND_KEYS_DONE, STATUS_SEND_TASK, STATUS_SEND_TASK_DONE, TYPE_BOOLEAN, TYPE_NONE, TYPE_SECRET, TYPE_TEXT, USERID_CHANGED, WRONG_PIN`

## Constructor Summary

Constructors
Constructor
Description
`HBCICallbackThreaded(HBCICallback realCallback)`
Erzeugt eine Instanz dieser Klasse.

## Method Summary

Modifier and Type
Method
Description
`void`
`callback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)`
Für asynchron zu behandelnde Callbacks wird der Aufruf an das "normale" Callback-Objekt weitergereicht.
`void`
`log(String msg, int level, Date date, StackTraceElement trace)`
Aufruf wird an das "normale" Callback-Objekt weitergereicht.
`void`
`status(HBCIPassport passport, int statusTag, Object[] o)`
Aufruf wird an das "normale" Callback-Objekt weitergereicht.

### Methods inherited from class org.kapott.hbci.callback.AbstractHBCICallback

`createDefaultLogLine, status, useThreadedCallback`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### HBCICallbackThreaded

public HBCICallbackThreaded(HBCICallback realCallback)
Erzeugt eine Instanz dieser Klasse. Ein HBCIThreadedCallback-Objekt muss bei `HBCIUtils.init(Properties, HBCICallback)` als Callback-Objekt übergeben werden, wenn der threaded-callback-Mechanismus benutzt werden soll.

Parameters:
  `realCallback` - eine Instanz einer "normalen" Callback-Klasse. Alle asynchron zu behandelnden Callbacks (der Normalfall) werden an dieses Objekt weitergegeben - nur die synchron zu behandelnden Callbacks werden anders behandelt.

## Method Details

### log

public void log(String msg, int level, Date date, StackTraceElement trace)
Aufruf wird an das "normale" Callback-Objekt weitergereicht.

Parameters:
  `msg` - die eigentliche Text-Meldung des HBCI-Kernels
  `level` - Loglevel, welcher die "Wichtigkeit" dieser Meldung angibt. Die möglichen Werte dafür sind in `HBCIUtils` definiert und lauten
  - `LOG_CHIPCARD`
  - `LOG_DEBUG`
  - `LOG_INFO`
  - `LOG_WARN`
  - `LOG_ERR`
  `date` - Zeitpunkt, zu dem die Logausgabe generiert wurde
  `trace` - ein `StackTrace`-Element, welches die Stelle im Code beschreibt, an der die Logausgabe erzeugt wurde (kann benutzt werden, um die Klasse, Methode, Zeilennummer etc. des Aufrufes zu ermitteln)

### callback

public void callback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)
Für asynchron zu behandelnde Callbacks wird der Aufruf an das "normale" Callback-Objekt weitergereicht. Synchron zu behandelnde Callbacks werden von dieser Methode behandelt, in dem der entsprechende Aufruf von `HBCIHandler.executeThreaded()` terminiert und Callback-Info-Daten zurückgibt.

Parameters:
  `passport` - enthält das Passport-Objekt, bei dessen Benutzung der Callback erzeugt wurde. Falls also in einer Anwendung mehrere Passport-Objekte gleichzeitig benutzt werden, so kann anhand dieses Parameters festgestellt werden, welches Passport (und damit welches HBCIHandle) HBCI4Java gerade benutzt.
  `reason` - gibt den Grund für diesen Aufruf an. Dieser Parameter kann alle Werte annehmen, die als "Ursache des Callback-Aufrufes" in der Dokumentation aufgeführt sind. Je nach Wert dieses Parameters werden vom Nutzer Aktionen oder Eingaben erwartet.
  `msg` - ein Hinweistext, der den Grund des Callbacks näher beschreibt. Dieser Parameter muss nicht ausgewertet werden, der Parameter `reason` ist bereits eindeutig. Er dient nur dazu, bei Anwendungen, die nicht für jeden Ursache des Callback-Aufrufes einen eigenen Hinweistext bereitstellen wollen, eine Art default-Wert für den anzuzeigenden Text bereitzustellen.
  `datatype` - legt fest, welchen Datentyp die vom HBCI-Kernel erwarteten Antwortdaten haben müssen. Ist dieser Wert gleich `TYPE_NONE`, so werden keine Antwortdaten (also keine Nutzereingabe) erwartet, bei `TYPE_SECRET` und `TYPE_TEXT` wird ein normaler String erwartet.
  Der Unterschied zwischen beiden ist der, dass bei `TYPE_SECRET` sensible Daten (Passwörter usw.) eingegeben werden sollen, so dass die Eingaberoutine evtl. anders arbeiten muss (z.B. Sternchen anstatt dem eingegebenen Text darstellen).
  `retData` - In diesem StringBuffer-Objekt müssen die Antwortdaten abgelegt werden. Beim Aufruf der Callback-Methode von HBCI4Java wird dieser StringBuffer u.U. mit einem vorgeschlagenen default-Wert für die Nutzereingabe gefüllt.

### status

public void status(HBCIPassport passport, int statusTag, Object[] o)
Aufruf wird an das "normale" Callback-Objekt weitergereicht.

Parameters:
  `passport` - gibt an, welches Passport (und damit welches HBCIHandle) benutzt wurde, als der Callback erzeugt wurde (siehe auch `HBCICallback.callback(org.kapott.hbci.passport.HBCIPassport,int,String,int,StringBuffer)`).
  `statusTag` - gibt an, welche Stufe der Abarbeitung gerade erreicht wurde (alle oben beschriebenen Konstanten, die mit `STATUS_` beginnen)
  `o` - ein Array aus Objekten, das zusätzliche Informationen zum jeweiligen Status enthält. In den meisten Fällen handelt es sich um einen String, der zusätzliche Informationen im Klartext enthält. Welche Informationen das jeweils sind, ist der Beschreibung zu den einzelnen `STATUS_*`-Tag-Konstanten zu entnehmen.