Package org.kapott.hbci.rewrite
Rewriter-Module werden von HBCI4Java benutzt, um mit fehlerhaften HBCI-Servern arbeiten zu können. Mit fehlerhaften HBCI-Servern sind Server gemeint, die die HBCI-Spezifikation in bestimmten Punkten falsch oder gar nicht implementiert haben. Da der HBCI4Java-Kernel streng spezifikationskonform implementiert ist, würde es bei der Benutzung eines solchen Servers zu Fehlermeldungen und zum Abbruch des Programmes kommen.
Einige möglicherweise auftretenden Fehler können Ihre Ursache auch tatsächlich in einem Angriff auf die HBCI-Kommunikation haben (z.B. eine versuchte man-in-the-middle-Attacke). Aus eben diesem Grund ist der eigentlichen HBCI-Kernel so implementiert, dass er sämtliche Unstimmigkeiten mit entsprechenden Fehlermeldungen quittiert.
Einige auftretende Probleme haben aber ihre Ursache in fehlerhaft implementierten HBCI-Servern. Sind solche permanent auftretenden Probleme bekannt, und ist keine Aktualisierung der Server-Software möglich bzw. zu erwarten, so kann für das jeweilige Problem ein Rewriter-Modul geschrieben werden.
Der Kernel von HBCI4Java arbeitet nur mit spezifikationskonformen HBCI-Nachrichten und Dialogen. Erwartet ein HBCI-Server allerdings Nachrichten, die von der Spezifikation abweichen (bzw. diese in einem besonders strengen Mass interpretieren, so dass aus "KANN"-Bestimmungen in der Spez. auf einmal "MUSS"- oder "DARF_NICHT"-Bestimmungen in den Analysemodules des Servers werden), so kann die Nachricht vor dem eigentlichen Versenden durch ein entsprechendes Rewriter-Modul geleitet werden, welches diese Nachricht so anpasst, dass der HBCI-Server damit arbeiten kann.
Umgekehrt gilt das auch für eingehende Nachrichten: Diese sind in einigen Fällen nicht spezifikationskonform. HBCI4Java würde beim Analysieren einer solchen Nachricht mit einer Fehlermeldung abbrechen. Deshalb kann jede eingehende Nachricht ebenfalls durch entsprechende Rewriter-Module geleitet werden, die dafür zuständig sind, die "fehlerhafte" Nachricht in eine spezifikationskonforme Nachricht umzuwandeln, so dass sie von HBCI4Java verarbeitet werden kann.
Die Schnittstelle für die Implementierung von Rewriter-Modulen wird an dieser Stelle nicht als "offizielle" Schnittstelle dokumentiert, da sich hier wahrscheinlich noch einige Änderungen ergeben. Vielmehr werden in HBCI4Java bereits einige Rewriter-Module mitgeliefert. Tritt ein bestimmtes Problem mit einem HBCI-Server auf, und liegt die Ursache dieses Problems tatsächlich in einem Fehler des HBCI-Servers, so ist ein entsprechender Bugreport an den Autor zu schicken, so dass evtl. ein entsprechendes Rewriter-Modul erzeugt werden kann.
Defaultmäßig sind alle hier aufgeführten Rewriter-Module aktiviert. Das hat i.d.R.
keine Konsequenzen, wenn alle verarbeiteten Nachrichten bereits HBCI-konform
sind (die Rewriter-Module belassen die Nachrichten dann in ihrer ursprünglichen Form).
Einziger Nachteil ist die zusätzliche Zeit, die die Analyse der Nachrichten in den
einzelnen Rewriter-Modulen benötigt. Vorteil dieses Verhaltens ist jedoch, dass die
Rewriter-Module nicht manuell aktiviert werden müssen (und somit auch nicht
vergessen werden können). Durch manuelles Setzen des Kernel-Parameters
kernel.rewriter
kann die Liste der aktiven Rewriter-Module jedoch
jederzeit manipuliert werden (siehe dazu auch Klassenbeschreibung der Klasse
HBCIUtils
).
-
Class Summary Class Description Rewrite RHBCIVersion Korrektur fehlender HBCI-Versionsnummern.RInvalidSegment RInvalidSuppHBCIVersion Korrigiert falsche HBCI-Versionen in den BPD.RKUmsDelimiters Rewriter-Modul für Kontoauszüge der 1822direkt-Bank (und vielleicht andere).RKUmsEmptyBDateSets RMissingMsgRef RSecTypeTAN Rewriter-Modul für falsche Informationen über TAN-Verfahren.RSigIdLeadingZero RWrongSequenceNumbers RWrongStatusSegOrder