public class HBCICallbackUnsupported extends java.lang.Object implements HBCICallback
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());
//...
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_PHOTOTAN, NEED_PT_PIN, 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_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 and Description |
---|
HBCICallbackUnsupported() |
Modifier and Type | Method and Description |
---|---|
void |
callback(HBCIPassport passport,
int reason,
java.lang.String msg,
int datatype,
java.lang.StringBuffer retData)
Wird vom HBCI-Kernel aufgerufen, wenn die Interaktion mit der
Anwendung erforderlich ist.
|
void |
log(java.lang.String msg,
int level,
java.util.Date date,
java.lang.StackTraceElement trace)
Wird aufgerufen, wenn der HBCI-Kernel eine Log-Ausgabe
erzeugt.
|
void |
status(HBCIPassport passport,
int statusTag,
java.lang.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,
java.lang.Object[] o)
Wird vom HBCI-Kernel aufgerufen, um einen bestimmten Status der
Abarbeitung bekanntzugeben.
|
boolean |
useThreadedCallback(HBCIPassport passport,
int reason,
java.lang.String msg,
int datatype,
java.lang.StringBuffer retData)
Legt fest, ob ein Callback asynchron oder über den threaded-callback-Mechanismus
behandelt werden soll.
|
public void callback(HBCIPassport passport, int reason, java.lang.String msg, int datatype, java.lang.StringBuffer retData)
HBCICallback
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!callback
in interface HBCICallback
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.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.public void status(HBCIPassport passport, int statusTag, java.lang.Object o)
HBCICallback
HBCICallback.status(HBCIPassport, int, Object[])
für den Fall,
dass das Object[]
nur ein einziges Objekt enthältstatus
in interface HBCICallback
public void status(HBCIPassport passport, int statusTag, java.lang.Object[] o)
HBCICallback
status
in interface HBCICallback
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.public void log(java.lang.String msg, int level, java.util.Date date, java.lang.StackTraceElement trace)
HBCICallback
log(...)
an die Anwendung. Diese muss selbst
entscheiden, was mit der Information geschehen soll (einfach ignorieren,
abspeichern, dem Nutzer anzeigen, ...).log
in interface HBCICallback
msg
- die eigentliche Text-Meldung des HBCI-Kernelslevel
- 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 wurdetrace
- 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)public boolean useThreadedCallback(HBCIPassport passport, int reason, java.lang.String msg, int datatype, java.lang.StringBuffer retData)
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
.
useThreadedCallback
in interface HBCICallback