MDefaultAjaxBehavior.javaAbstractDefaultAjaxBehavior mit einem einzigen Zweck: Die geschützte Methode getCallbackScript() öffentlich zugänglich zu machen. In der Standard-API von Wicket ist getCallbackScript() geschützt und kann nur innerhalb der eigenen Rendering-Logik des Behaviors aufgerufen werden. Das Micromata-Team benötigte Zugriff auf diese Methode aus externem Callback-Verdrahtungscode – möglicherweise für die FullCalendar-Integration oder andere clientseitige Ereignisbindungen – und erstellte diese Unterklasse, die einfach getCallbackScript() überschreibt, um die Elternimplementierung mit public-Sichtbarkeit aufzurufen.Dies ist ein klassischer Java-Sichtbarkeits-Workaround: Wenn eine Bibliothek (Wicket) eine Methode als protected deklariert, man sie aber außerhalb der Vererbungshierarchie aufrufen muss, erstellt man eine Unterklasse, die die Methode überschreibt und ihre Sichtbarkeit auf public erhöht. Die überschriebene Methode tut nichts außer an super.getCallbackScript() zu delegieren. Dieses Muster ist in Wicket-Codebasen verbreitet, wo die Kapselung des Frameworks bestimmte Integrationsmuster verhindert.
Wickets getCallbackScript() generiert das JavaScript-Snippet, das die serverseitige Callback-URL mit den korrekten Parametern, Anti-Cache-Tokens und Ajax-Einstellungen aufruft. Die FullCalendar-Integration (siehe Dateien #2786-2790) muss diese Callback-Skripte in FullCalendar-Konfigurations-JSON einbetten, anstatt sie als DOM-Ereignishandler anzuhängen. Dazu muss das Callback-Skript aus dem Behavior extrahiert und in einen anderen Kontext interpoliert werden – was öffentlichen Zugriff auf die Skriptgenerierungsmethode erfordert.
Referenziert aus dem FullCalendar-Callback-System in net.ftlines.wicket.fullcalendar.callback.AbstractAjaxCallback (Datei #2789), das ebenfalls AbstractDefaultAjaxBehavior erweitert und das Callback-Skript für die Einbettung in Kalender-Ereignishandler manipulieren muss.
| Commit | Was geändert wurde |
|---|---|
868d6abb7 bis ceb63e8a1 | Sechs jährliche Aktualisierungen der Copyright-Header. Die Klasse selbst – eine einzelne Methodenüberschreibung – musste seit der ursprünglichen Wicket-Version-Migration nie geändert werden. Ihr Zweck ist so eng definiert, dass Änderungen an der Wicket-API wahrscheinlich ohne Änderungen an diesem Wrapper absorbiert würden. |