-
Task
-
Resolution: Done
-
Blocker
-
3.0.0.Alpha1
-
None
JCR Observation hasn't yet been ported to the '3.x' branch. The basic design and implementation will be pretty similar to how it worked in '2.x', except that the low-level evens are changed pretty dramatically in '3.x'. Also, it'd be useful to have a queue and worker pool to push events out to the registered observers.
Here's the basic outline for the observation implementation:
- implement the JCR ObservationManager interface and manage the registered listeners (much as in 2.x)
- implement a o.m.j.cache.change.ChangeSetListener that receives the cache-level ChangeSet instances, submits each ChangeSet object into a queue, and call RepositoryStatistic.increment(ValueMetric.EVENT_QUEUE_SIZE)
- have the queue worker(s) pull ChangeSet instances from the queue, call RepositoryStatistic.decrement(ValueMetric.EVENT_QUEUE_SIZE), convert to the appropriate JCR event objects, and then notify each registered listener
- change JcrRepository to instantiate the JcrObsevationManager and to register the ChangeSetListener implementation with the RepositoryCache (similarly to how the LockManager is registered as a listener)
- is blocked by
-
MODE-1411 Dispatching events for the system workspace from a separate thread, corrupts the node caches
- Closed
-
MODE-1407 Locking nodes does not add mandatory properties
- Closed
-
MODE-1408 Namespace changes do not trigger repository events
- Closed
-
MODE-1409 Node.orderBefore does not trigger (or triggers incomplete) cache events
- Closed
-
MODE-1410 Workspace.move does not trigger cache events
- Closed