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

Comments