Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[platform-ui-dev] Giving some love to org.eclipse.core.databinding.observable

I'm starting to use the org.eclipse.core.databinding.observable plugin for one of my projects, but I see it hasn't had any love for about 5 years. I was thinking of updating the plugin but figured I'd discuss the changes here first, since they'd be fairly sweeping.

1. I notice the plugin has been updated to java 1.7, but the code is still written in 1.4 style.
- Most of the IObservable implementations were designed to be generics but they haven't been converted to actually use generics yet.
- Many of the methods are supposed to be annotated with @TrackedGetter, but the annotation is currently in comments rather than actual code.

2. It hasn't been updated to use modern algorithms for reactive programming frameworks. The whole library still uses listeners for change propogation, which are subject to event storms and degenerate in the repeated diamond shape.

Reference:
http://en.wikipedia.org/wiki/Reactive_programming#Evaluation_models_of_reactive_programming

I know a good algorithm that addresses this quite efficiently and can deep-dive on it if anyone wants details.

3. Each async event currently gets executed as a separate asyncExec. This allows paints to get interleaved with the events, possibly causing flicker and triggering multiple layouts. I plan to put all pending updates in a queue and process them as a batch, ensuring that only one paint or layout pass occurs at the end.

Thoughts?

  - Stefan

Back to the top