@Override public Closeable addObserver(Observer observer) { if (scheduler instanceof Observable) { return ((Observable) scheduler).addObserver(observer); } return () -> {}; }
@Override public Object addingService(ServiceReference reference) { Object service = bundleContext.getService(reference); if (service instanceof Observer) { subscriptions.put(reference, observable.addObserver((Observer) service)); return service; } else { bundleContext.ungetService(reference); return null; } }
@Override public Object addingService(ServiceReference reference) { Object service = bundleContext.getService(reference); if (service instanceof Observer) { subscriptions.put(reference, observable.addObserver((Observer) service)); return service; } else { bundleContext.ungetService(reference); return null; } }
private void registerObserver(Observable observable, Executor executor) { backgroundObserver = new BackgroundObserver(this, executor, 5); observerRegistration = observable.addObserver(backgroundObserver); }
private void registerObserver(Observable observable, Executor executor) { backgroundObserver = new BackgroundObserver(this, executor, 5); observerRegistration = observable.addObserver(backgroundObserver); }
observerSubscription.register(((Observable) store).addObserver((Observer) service));
observerSubscription.register(((Observable) store).addObserver((Observer) service));
observerSubscription.register(((Observable) store).addObserver((Observer) service));
CompositeNodeStore(MountInfoProvider mip, NodeStore globalStore, List<MountedNodeStore> nonDefaultStore, CompositeNodeStoreMonitor nodeStateMonitor, CompositeNodeStoreMonitor nodeBuilderMonitor) { assertPartialMountsAreReadOnly(nonDefaultStore); this.ctx = new CompositionContext(mip, globalStore, nonDefaultStore, nodeStateMonitor, nodeBuilderMonitor); this.dispatcher = new ChangeDispatcher(getRoot()); // setup observation proxy mechanism for underlying store for events not dispatched from within our // merge if (globalStore instanceof Observable) { Observable globalStoreObservable = (Observable) globalStore; globalStoreObservable.addObserver((root, info) -> dispatcher.contentChanged(ctx.createRootNodeState(root), info)); } }
@Test public void noContentChangeForCheckpoints() throws Exception{ final AtomicInteger invocationCount = new AtomicInteger(); ((Observable)store).addObserver(new Observer() { @Override public void contentChanged(@NotNull NodeState root, @NotNull CommitInfo info) { invocationCount.incrementAndGet(); } }); invocationCount.set(0); String cp = store.checkpoint(Long.MAX_VALUE); assertEquals(0, invocationCount.get()); store.release(cp); assertEquals(0, invocationCount.get()); }
final CountDownLatch latch = new CountDownLatch(2); ((Observable) store).addObserver(new Observer() { @Override public void contentChanged(
@Test public void luceneWithFSDirectory() throws Exception{ //Issue is not reproducible with MemoryNodeBuilder and //MemoryNodeState as they cannot determine change in childNode without //entering NodeStore nodeStore = SegmentNodeStoreBuilders.builder(new MemoryStore()).build(); tracker = new IndexTracker(); ((Observable)nodeStore).addObserver(new Observer() { @Override public void contentChanged(@NotNull NodeState root, @NotNull CommitInfo info) { tracker.update(root); } }); builder = nodeStore.getRoot().builder(); //Also initialize the NodeType registry required for Lucene index to work builder.setChildNode(JCR_SYSTEM, INITIAL_CONTENT.getChildNode(JCR_SYSTEM)); NodeBuilder index = builder.child(INDEX_DEFINITIONS_NAME); NodeBuilder idxb = newLucenePropertyIndexDefinition(index, "lucene", ImmutableSet.of("foo", "foo2"), null); idxb.setProperty(PERSISTENCE_NAME, PERSISTENCE_FILE); idxb.setProperty(PERSISTENCE_PATH, getIndexDir()); nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); builder = nodeStore.getRoot().builder(); builder.setProperty("foo", "bar"); NodeState indexed = nodeStore.merge(builder, HOOK, CommitInfo.EMPTY); assertQuery(tracker, indexed, "foo", "bar"); builder = nodeStore.getRoot().builder(); builder.setProperty("foo2", "bar2"); indexed = nodeStore.merge(builder, HOOK, CommitInfo.EMPTY); assertQuery(tracker, indexed, "foo2", "bar2"); }