Engywuck
Geowizard
Moin moin,
ich habe mich einmal um den nächsten großen Punkt gekümmert, der mich im CacheWolf-Datenmodell schon länger stört, und zwar die Klassen CacheHolder/CacheHolderDetail. Dieses Pärchen fand ich immer sehr verwirrend. Aufgrund der Ableitung CacheHolderDetail extends CacheHolder können die Hauptinformationen in beiden Objekten vorkommen - wann was zu verwenden ist, und was nun gilt, ist nicht immer so ganz einsichtig. Innerhalb des Cachewolfs wird mal das eine, mal das andere Objekt instanziert - alles sehr komisch.
Hier habe ich nun mal was aufgeräumt. Die wichtigsten Änderungen sind:
Natürlich hat diese Änderung einigen Einfluß auf diverse Klassen, und es ist nicht ausgeschlossen, dass noch der ein- oder andere Fehler drin ist. Beim mir läuft das allerdings alles tadellos und ich habe - denke ich - alles mal ausprobiert. Da wir zur Zeit auch nicht vor einem neuen Release stehen, ist die Zeit günstig, auch mal tiefere Eingriffe vornehmen zu können.
Ich hänge die Änderungen erstmal als Patch an. Wer mag, kann sie sich ja erstmal angucken. Falls es keine sinnvoll motivierten Proteste gibt, würde ich die Sachen dann in den nächsten Tagen committen.
Gruß,
E.
ich habe mich einmal um den nächsten großen Punkt gekümmert, der mich im CacheWolf-Datenmodell schon länger stört, und zwar die Klassen CacheHolder/CacheHolderDetail. Dieses Pärchen fand ich immer sehr verwirrend. Aufgrund der Ableitung CacheHolderDetail extends CacheHolder können die Hauptinformationen in beiden Objekten vorkommen - wann was zu verwenden ist, und was nun gilt, ist nicht immer so ganz einsichtig. Innerhalb des Cachewolfs wird mal das eine, mal das andere Objekt instanziert - alles sehr komisch.
Hier habe ich nun mal was aufgeräumt. Die wichtigsten Änderungen sind:
- Die Vererbung CacheHolderDetail -> CacheHolder ist aufgehoben. Es handelt sich nun um getrennte Objekte.
- CacheHolder speichert nur noch die Kopfdaten, die für alle Caches immer zur Verfügung stehen sollten, CacheHolderDetail speichert die Detailinformationen, die bei Bedarf aus der Cache.xml-Datei ausgelesen werden. Zwischen den Objekten gibt es 1:1-Referenzen.
- Auf die Eigenschaft details des Objekts CacheHolder wird nur noch per Getter zugegriffen.
- CacheHolder ist das einzige Objekt, das CacheHolderDetail instanziiert, und zwar genau dann, wenn es per entsprechendem Getter angefordert wird.
- Die Liste CachesWithLoadedDetails speichert nun Wegpunkte (String) statt Objekte, um weniger Möglichkeiten für Speicherlecks zu haben.
Natürlich hat diese Änderung einigen Einfluß auf diverse Klassen, und es ist nicht ausgeschlossen, dass noch der ein- oder andere Fehler drin ist. Beim mir läuft das allerdings alles tadellos und ich habe - denke ich - alles mal ausprobiert. Da wir zur Zeit auch nicht vor einem neuen Release stehen, ist die Zeit günstig, auch mal tiefere Eingriffe vornehmen zu können.
Ich hänge die Änderungen erstmal als Patch an. Wer mag, kann sie sich ja erstmal angucken. Falls es keine sinnvoll motivierten Proteste gibt, würde ich die Sachen dann in den nächsten Tagen committen.
Gruß,
E.