Die Verbindung zum CommunityMashup wird direkt beim Start in der Klasse CommunityMirror, in der Funktion connectToCommunityMashup() hergestellt.
Konfiguration:
- mashup.useMashupData = true # if mashup should be used at all
- mashup.serverurl =
- mashup.xmlinterface = $mashup.serverurl + "mashup/"
- mashup.updateinterval = -1
- mashup.attachmentspreload = false
mashup.fallbackfile =
Die Verbindung wird über eine Bibliothek aus dem CommunityMashup-Paket hergestellt - org.sociotech.communitymashup.framework.CommunityMashupApplicationFramework.jar. Diese Bibliothek verwendet aktuell noch einiges aus dem Eclipse Ecore-Paket - was bei Gelegenheit mal abgestellt werden sollte (Neuimplementierung der Client-Bibliothek).
Es wird zuerst ein MashupConnector-Objekt erzeugt, welches über eine XML-Url Daten vom Mashup lädt und falls konfiguriert regelmäßig aktualisiert.
Die lokal replizierten Daten werden im dataSet-Objekt zur Verfügung gestellt (zugreifbar gemacht).
Dabei ist updateinterval das Intervall (in Sekunden) zwischen zwei Update-Nachfragen an das Remote-Mashup - 0 oder kleiner führt dazu, dass keine Updates nachgefragt werden.
Update-Nachfragen werden über den org.sociotech.communitymashup.framework.java.updater.UpdateThread durchgeführt - durch Aufruf der Funktion update() im Connector. Dabei werden nur Items geladen, die seit der letzten Nachfrage geändert worden sind. Änderungen werden ausgeführt, indem delete: auf dem Item die delete()-Methode aufgerufen wird, add: auf dem dataSet die Methode forceAdd() aufgerufen wird, update: auf dem dataSet die Methode forceUpdate() aufgerufen wird - in den Funktionen localDelete(), localAdd() und localUpdate().
Notifkationen über Änderungen durch die update()-Methode bekommt man also im View durch hinzufügen eines Update-Listeners auf dem dataSet - wenn gewünscht. - im FlowView ist das aktuell noch nicht umgesetzt.
Nur wenn writeback == true, dann wird im MashupConnector ein DataSetChangeObserver erzeugt, der Änderungen im dataSet wieder an das Remote-Mashup zurückspielt.
Die Reverenz auf das dataSet wird an den View weitergegeben.