Package org.kapott.hbci.callback
Class HBCICallbackIOStreams
java.lang.Object
org.kapott.hbci.callback.AbstractHBCICallback
org.kapott.hbci.callback.HBCICallbackIOStreams
- All Implemented Interfaces:
HBCICallback
- Direct Known Subclasses:
HBCICallbackConsole
Callback-Klasse für Ein-/Ausgabe über IO-Streams. Dabei handelt es sich
eine Callback-Klasse, die Ausgaben auf einem PrintStream ausgibt und
Eingaben über einen BufferedReader liest. Die Klasse
HBCICallbackConsole
ist eine abgeleitete Klasse, welche STDOUT und STDIN für die beiden
I/O-Streams verwendet.-
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
ConstructorsConstructorDescriptionHBCICallbackIOStreams
(PrintStream outStream, BufferedReader inStream) Instanz mit vorgegebenem OUT- und INPUT-Stream erzeugen. -
Method Summary
Modifier and TypeMethodDescriptionvoid
callback
(HBCIPassport passport, int reason, String msg, int datatype, StringBuffer retData) Diese Methode reagiert auf alle möglichen Callback-Ursachen.protected BufferedReader
Gibt des INPUT-Stream zurück.protected PrintStream
Gibt den verwendeten OUTPUT-Stream zurück.void
log
(String msg, int level, Date date, StackTraceElement trace) Schreiben von Logging-Ausgaben in einenPrintStream
.protected String
readLine()
NPE-sichere Variante zum Lesen einer Zeile aus dem Eingabestream (normalerweise STDIN).protected void
TODO: docprotected void
setOutStream
(PrintStream out) TODO: docvoid
status
(HBCIPassport passport, int statusTag, Object[] o) Wird diese Methode von HBCI4Java aufgerufen, so wird der aktuelle Bearbeitungsschritt (mit evtl.Methods inherited from class org.kapott.hbci.callback.AbstractHBCICallback
createDefaultLogLine, status, useThreadedCallback
-
Constructor Details
-
HBCICallbackIOStreams
Instanz mit vorgegebenem OUT- und INPUT-Stream erzeugen.- Parameters:
outStream
- Stream, welcher für die Ausgabe verwendet wird.inStream
- Stream, der für das Einlesen von Antworten verwendet wird
-
-
Method Details
-
setInStream
TODO: doc -
getInStream
Gibt des INPUT-Stream zurück. -
setOutStream
TODO: doc -
getOutStream
Gibt den verwendeten OUTPUT-Stream zurück. -
readLine
NPE-sichere Variante zum Lesen einer Zeile aus dem Eingabestream (normalerweise STDIN). Wenn der NULL ist, weil der Prozess von der Konsole abgekoppelt ist, dann wird ein Leerstring geliefert.- Returns:
- den auf der Konsole eingegebenen Text oder einen Leerstring, wenn kein Eingabestream vorhanden ist.
- Throws:
IOException
-
log
Schreiben von Logging-Ausgaben in einenPrintStream
. Diese Methode implementiert die Logging-Schnittstelle desHBCICallback
-Interfaces. Die Log-Informationen, die dieser Methode übergeben werden, werden formatiert auf dem jeweiligenoutStream
ausgegeben. In dem ausgegebenen String sind in enthalten das Log-Level der Message, ein Zeitstempel im Format "yyyy.MM.dd HH:mm:ss.SSS
", die Namen der ThreadGroup und des Threads, aus dem heraus die Log-Message erzeugt wurde, der Klassenname der Klasse, welche die Log-Ausgabe erzeugt hat sowie die eigentliche Log-Message- Parameters:
msg
- die eigentliche Text-Meldung des HBCI-Kernelslevel
- Loglevel, welcher die "Wichtigkeit" dieser Meldung angibt. Die möglichen Werte dafür sind inHBCIUtils
definiert und lautenLOG_CHIPCARD
LOG_DEBUG
LOG_INFO
LOG_WARN
LOG_ERR
date
- Zeitpunkt, zu dem die Logausgabe generiert wurdetrace
- einStackTrace
-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) Diese Methode reagiert auf alle möglichen Callback-Ursachen. Bei Callbacks, die nur Informationen an den Anwender übergeben sollen, werden diese auf demoutStream
ausgegeben. Bei Callbacks, die Aktionen vom Anwender erwarten (Einlegen der Chipkarte), wird eine entsprechende Aufforderung ausgegeben. Bei Callbacks, die eine Eingabe vom Nutzer erwarten, wird die entsprechende Eingabeaufforderung ausgegeben und die Eingabe vominStream
gelesen.- 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 Parameterreason
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 gleichTYPE_NONE
, so werden keine Antwortdaten (also keine Nutzereingabe) erwartet, beiTYPE_SECRET
undTYPE_TEXT
wird ein normaler String erwartet.
Der Unterschied zwischen beiden ist der, dass beiTYPE_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
Wird diese Methode von HBCI4Java aufgerufen, so wird der aktuelle Bearbeitungsschritt (mit evtl. vorhandenen zusätzlichen Informationen) aufoutStream
ausgegeben.- Parameters:
passport
- gibt an, welches Passport (und damit welches HBCIHandle) benutzt wurde, als der Callback erzeugt wurde (siehe auchHBCICallback.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 mitSTATUS_
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 einzelnenSTATUS_*
-Tag-Konstanten zu entnehmen.
-