Synchronization of project data

To be used in a session, all needed project data needs to be synchronized between the participants. This task is performed automatically and takes place in two forms:

Initial synchronization

This step needs to be performed on each user's machine when he joins a new session or an additional project is added to the session he is participating in. The plug-in receives all needed information about the data belonging to a shared project and compares it to the current local state of the data. Depending on the size and type of the project this process might take some time.
 

 
If there are any differences, they will be displayed to the user for confirmation.
 
If the user is the navigator or a spectator of the session, his only choices are to accept the changes or leave the session. Accepting the changes will lead to the needed modifications of the local data.
 
If he is currently the driver of the session, he can optionally decide to commit his local changes to the XPairtise server, leading to the appropriate modifications of the shared project.
 

Synchronization during the session

Not all modifications of the project data can be covered by the shared editor. The participants might perform modifications to the files and directories belonging to the shared project outside of the editor. They might use the Eclipse Package Explorer to add, delete or rename resources or they might perform refactorings that modify several files, for example by renaming a class that is referenced in many places. To keep the shared project consistent between all participants, these changes are tracked too.
 
If such changes are detected, different actions are performed depending on the user's role in the session: