Package org.kapott.hbci.callback

# Class HBCICallbackUnsupported

java.lang.Object
org.kapott.hbci.callback.HBCICallbackUnsupported

All Implemented Interfaces:
  `HBCICallback`

public class HBCICallbackUnsupported extends Object implements HBCICallback
Implementierung, die für alle Aufrufe eine `UnsupportedOperationException` wirft.

Diese Klasse vereinfacht die Initialisierung der HBCI4Java-Umgebung in Multithread- Anwendungen, die im Haupt-Thread keine echte Interaktion mit HBCI4Java erwarten bzw. sogar sicherstellen wollen.

`HBCIUtils.init(new Properties(), new HBCICallbackUnsupported());
//...`

Author:
  Hendrik Schnepel

## 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, HAVE_VOP_RESULT, 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
`HBCICallbackUnsupported()`

## Method Summary

Modifier and Type
Method
Description
`void`
`callback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)`
Wird vom HBCI-Kernel aufgerufen, wenn die Interaktion mit der Anwendung erforderlich ist.
`void`
`log(String msg, int level, Date date, StackTraceElement trace)`
Wird aufgerufen, wenn der HBCI-Kernel eine Log-Ausgabe erzeugt.
`void`
`status(HBCIPassport passport, int statusTag, Object o)`
Kurzform für `HBCICallback.status(HBCIPassport, int, Object[])` für den Fall, dass das `Object[]` nur ein einziges Objekt enthält
`void`
`status(HBCIPassport passport, int statusTag, Object[] o)`
Wird vom HBCI-Kernel aufgerufen, um einen bestimmten Status der Abarbeitung bekanntzugeben.
`boolean`
`useThreadedCallback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)`
Legt fest, ob ein Callback asynchron oder über den threaded-callback-Mechanismus behandelt werden soll.

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

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

## Constructor Details

### HBCICallbackUnsupported

public HBCICallbackUnsupported()

## Method Details

### callback

public void callback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)
Description copied from interface: `HBCICallback`
Wird vom HBCI-Kernel aufgerufen, wenn die Interaktion mit der Anwendung erforderlich ist. In bestimmten Situationen benötigt der HBCI-Kernel zusätzliche Daten bzw. muss auf die Ausführung einer Aktion des Nutzers warten. Dann wird diese Methode aufgerufen. Dabei wird ein Code (`reason`) übergeben, der anzeigt, welche Ursache dieser Callbackaufruf hat, d.h. welche Daten oder Aktionen erwartet werden. Falls Daten erwartet werden (z.B. ein Passwort, eine Benutzerkennung, ...), so ist legt der Parameter `datatype` fest, wie diese Daten erwartet werden. Die eigentlichen Daten muss die Anwendung im Objekt `retData` ablegen (keinen neuen StringBuffer erzeugen, sondern den Inhalt von `retData` überschreiben!). Bei einigen Callbacks übergibt HBCI4Java einen vorgeschlagenen default-Wert für die Nutzereingabe im retData-Objekt. Diese Tatsache ist besonders bei der Auswertung des Callbacks `HBCICallback.HAVE_CRC_ERROR` zu beachten!

Specified by:
  `callback` in interface `HBCICallback`
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)
Description copied from interface: `HBCICallback`
Kurzform für `HBCICallback.status(HBCIPassport, int, Object[])` für den Fall, dass das `Object[]` nur ein einziges Objekt enthält

Specified by:
  `status` in interface `HBCICallback`

### status

public void status(HBCIPassport passport, int statusTag, Object[] o)
Description copied from interface: `HBCICallback`
Wird vom HBCI-Kernel aufgerufen, um einen bestimmten Status der Abarbeitung bekanntzugeben.

Specified by:
  `status` in interface `HBCICallback`
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.

### log

public void log(String msg, int level, Date date, StackTraceElement trace)
Description copied from interface: `HBCICallback`
Wird aufgerufen, wenn der HBCI-Kernel eine Log-Ausgabe erzeugt. HBCI4Java gibt Logging-Ausgaben nicht selbst auf irgendeinem Device aus, sondern sendet diese mit Hilfe der Methode `log(...)` an die Anwendung. Diese muss selbst entscheiden, was mit der Information geschehen soll (einfach ignorieren, abspeichern, dem Nutzer anzeigen, ...).

Specified by:
  `log` in interface `HBCICallback`
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)

### useThreadedCallback

public boolean useThreadedCallback(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData)
Description copied from interface: `HBCICallback`

Legt fest, ob ein Callback asynchron oder über den threaded-callback-Mechanismus behandelt werden soll. Im "Normalfall" gibt diese Methode `false` zurück, womit die asynchrone Callback-Behandlung aktiviert wird. Für bestimmte Anwendungsfälle ist jedoch eine synchrone Callback-Behandlung sinnvoll. Dazu muss zunächst das zu verwendende Callback-Objekt in einer Instanz der Klasse `HBCICallbackThreaded` gekapselt werden. Außerdem muss diese Methode so überschrieben werden, dass sie für alle Callbacks, die synchron behandelt werden sollen, `true` zurückgibt.

Die übergebenen Parameter entsprechen denen der Methode `HBCICallback.callback(HBCIPassport, int, String, int, StringBuffer)`. Der Rückgabewert gibt ab, ob dieser Callback synchron (`true`) oder asynchron (`false`) behandelt werden soll.

Mehr Informationen dazu in der Datei `README.ThreadedCallbacks`.

Specified by:
  `useThreadedCallback` in interface `HBCICallback`