Skip to main content



      Home
Home » Modeling » Papyrus » CDOAwareTransactionalEditingDomain returns faulty ChangeRecorder
CDOAwareTransactionalEditingDomain returns faulty ChangeRecorder [message #1748215] Mon, 21 November 2016 04:42 Go to next message
Eclipse UserFriend
I think I found a severe problem in the Papyrus\CDO integration. It seems to me that the ChangeRecorder returned by the CDOAwareTransactionalEditingDomain fails to inherit itself to new objects if these objects are added by CDODeltaNotifications.

Using the Papyrus\CDO integration I experience the following problem:

In a multi user environment two users work on the same Papyrus model. They have the same Diagram open and user A adds a new ClassShape to the diagram.
User B sees the ClassShape appearing in his diagram. But user B is not able to move the shape.

The scenario has also been described here:

https://www.eclipse.org/forums/index.php/t/1082532/

I found that the reason for this is the TransactionChangeRecorder used by the CDOAwareTransactionalEditingDomain. The change recorder which is used is a DawnTransactionChangeRecorder which handles CDODeltaNotifications by simply ignoring them. Thus objects which are added by a CDODeltaNotifications do not get the TransactionChangeRecorder added to their set of adapters as this happens only if the notifyChanged method is called. Any activity that involves ChangeRecording is thus not working properly in this scenario.

A lot of Papyrus functionalities rely on ChangeRecording and respective notifications. Thus it seems that Papyrus\CDO integration cannot not really work in a multi user environment.

In the end I think the DawnTransactionChangeRecorder should handle this situation properly.

I have solved this issue by calling the addAdapter method of the ChangeRecorder in the described situation. But I am not 100% sure if i might be missing something here. Any thoughts on this would therefore be appreciated.

Regards,
Thorsten


Re: CDOAwareTransactionalEditingDomain returns faulty ChangeRecorder [message #1748471 is a reply to message #1748215] Wed, 23 November 2016 07:41 Go to previous message
Eclipse UserFriend
Hi Thorsten,

the Change recorder used is defined in class CDOAwareTransactionalEditingDomain of plugin org.eclipse.papyrus.cdo.core.

It is an inner class that extends DawnTransactionChangeRecorder that overrides the method appendNotification.

This extended may forget notifications, and it is a bug that should be corrected by modifying change recorder.

regards,
Xaver
Previous Topic:component, simple port and ball-and-socket notation
Next Topic:slightly OT: Just for fun - my contribution to "ARIS in 10 years"
Goto Forum:
  


Current Time: Wed Apr 30 17:16:18 EDT 2025

Powered by FUDForum. Page generated in 0.03064 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top