[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] Re: sync API

Hi Scott and Mustafa,

I'm going to start the changeover of DocShare to the sync API, in this begging I will follow the steps that Scott wrote.

- Marcelo

On Wed, Oct 22, 2008 at 1:49 AM, Scott Lewis <slewis@xxxxxxxxxxxxx> wrote:
Hi Mustafa and Marcelo,

(context for others...work has been going on with the new sync API in org.eclipse.ecf.sync.  This effectively separates the cola-based replicated document synchronization from the DocShare UI/editor integration, and makes the document synchronization available for other applications/use by other components as per bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=234142 )

And now onto the note...

I think we now have a sync API (with document synchronization implemented with cola) that can serve as an extensible starting point.  See the interfaces in plugin org.eclipse.ecf.sync package and org.eclipse.ecf.sync.doc (document synchronization).  The projects are in

/cvsroot/rt org.eclipse.ecf/framework/bundles/org.eclipse.ecf.sync
/cvsroot/rt org.eclipse.ecf/tests/bundles/org.eclipse.ecf.tests.sync

Just today (Tues 10/21) I added the use of IAdaptable as super interface for the core sync API interfaces:  ISynchronizationStrategy, IModelChange, and IModelChangeMessage.  See the javadocs in ISynchronizationStrategy for an explanation of use of the interface.

Thanks to Marcelo we now have some significant test code in org.eclipse.ecf.tests.sync plugin.  The tests now simulate two clients that asynchronously and randomly make changes (insert char, delete char, etc) to an underlying replicated String.  See SimulatedClientTests.testSharedDocClient().

Soon, I would like to remove the Docshare copy of the cola code, and replace it with use of the sync API (with cola behind).  What this will entail, I believe, is to

1) remove the packages/classes that implement the current docshare synchronization strategy
2) Use/access the IDocumentSynchronizationStrategyFactory service (that is registered by the org.eclipse.ecf.sync plugin Activator) to create an ISynchronizationStrategy instance from within the DocShare class. 3) Replace the existing synchronization strategy calls with calls to the ISynchronizationStrategy instance created via IDocumentSynchronizationStrategyFactory .createSynchronizationStrategy
3) Test the new DocShare/ISynchronizationStrategy
4) Note that the new DocShare will *not* interoperate with the old/existing docshare unless we explicitly attempt to figure out allowing them to interoperate...I'm not sure whether this is worth it or not.

So are the two of you ready to begin the changeover of DocShare to the sync API?

Mustafa...do you have some specific test cases from the original cola integration that need to be introduced to org.eclipse.ecf.tests.sync (e.g. range insertion/range delete?)