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:
- If the modifications were performed by the driver, they are sent to the server and replicated
to all other participants of the session.
- If the modifications were performed by the navigator or a spectator they are considered illegal
as they would violate the Pair Programming role model and the consistency of the shared project.
These changes are therefore automatically roled back. To avoid this case, a warning is displayed if
such an illegal modification is attempted: