Saros: Refactoring des Filesystems
Während den Entwicklungen von Saros/I, musste festgestellt werden, dass einige Konzepte von Saros Core,
wie zum Beispiel das Filesystem von Saros, nicht mit den von
IntelliJ übereinstimmte. Es fängt damit an,
dass das Filesystem von
IntelliJ zu komplex ist, bis hin, dass Saros projektbasiert ist.
Aufgrund dessen muss das Design des Saros Filesystem überdacht und neu entworfen werden. Mit der Überarbeitung
des Filesystems ist es ebenfalls notwendig das projektbasierte Design von Saros zu ersetzen.
Diese Problemstellungen werde ich im Rahmen meiner Masterarbeit untersuchen.
Einer der Kernfragen wird sein, wie der Ressourcenbaum von Saros aufgebaut sein soll.
Betrachtet man hingegen den Ressourcenbaum von Eclipse, betrachtet Eclipse seine Ressourcen wie folgt:
Für Saros soll es reichen, dass die Ressourcen als ein Ressourcenbaum, bestehend aus File und Folder, betrachtet.
So kann ein User jeden beliebigen Teilbaum teilen können (Zum Beispiel den Source Order als Wurzel).
Dabei hat der Source Ordner bzw. die Wurzel des Teilbaumes einen absoluten Pfad. Allerdings kann der absoluten
Pfad bei jeden Saros Session User unterscheiden. Was allerdings die absoluten Pfade vereint, ist, dass der
gleiche Referenzpunkt gemeint ist. Saros weiß lokal für sich, wo sich die Referenzpunkte befinden. Ressourcen
können mithilfe des Referenzpunktes und dem relativen Pfad ausgehend vom Referenzpunkt aufgelöst werden.
Die Filesysteme von den IDEs (Eclipse und
IntelliJ) können allerdings mit Referenzpunkten nichts anfangen.
Daher wird ein Mapper benötigt, der Referenzpunkte auf IDE spezifische Container-Objekte mappt. Mit der
Anpassung der Komponenten des Saros-Cores an Referenzpunkten kommt ebenfalls die Frage auf, welche Komponenten
ausschließlich mit Pfaden arbeitet. Welche Komponenten benötigen Saros Ressourcen. Gibt es Komponenten, die
beides verwenden? Wenn ja, können diese separiert werden?
Die Abgrenzungen der Abschlussarbeit liegt darin, dass die Saros-User jeweils die gleichen Repositories verwerden.
Das heißt, dass bei der Erstellung einer Session keine Ressourcen erstellt werden müssen.
Im Rahmen der Abschlussarbeit werden drei Meilensteine festgelegt:
1. Einführung des Referenzpunktes
Im ersten Meilenstein wird als Ziel festgelegt, dass Saros um
IReferencePoint erweitert wird. Zusätzlich wird, als temporärer Übergang, die IResource um die Methode getReferencePoint() erweitert. Solange Saros projektbasiert ist, wird der
IReferencePoint auf dem absoluten Pfad der Projekte zeigen. Ebenso wird der Referenzpunkt nicht beliebig wählbar sein, sondern ist der absolute Pfad des Projektes. Aufgrund des Designs des neuen Filesystems von Saros wird es nicht nötig sein, dass das Interface
IReferencePoint Methoden enthält. Es wird lediglich wichtig sein, dass mehrere, lokale Referenzpunkte (zum Beispiel, wenn mehrere Projekte geteilt werden) anhand der Pfade der Projekte unterscheidbar sind.
2. Anpassung Saros Core
3. Anpassung Saros/E, Saros/I und Saros Server