/** * Injects listeners into the underlying ADTs that translate their events into * primitive-supplement events. * * @param wid * @param listener */ private void installListeners(final WaveletId wid, final Listener listener) { threadStates.addListener(new ObservableBasicMap.Listener<String, ThreadState>() { @Override public void onEntrySet(String key, ThreadState oldValue, ThreadState newValue) { listener.onThreadStateChanged(wid, key, oldValue, newValue); } }); }
@Override public int getNotifiedVersion(WaveletId waveletId) { Integer version = notifiedVersion.get(waveletId); return version != null ? version : NO_VERSION; }
@Override public Set<WaveletId> getSeenWavelets() { return seenVersion.keySet(); }
/** Tests functionality of keySet method. */ public void testKeySet() { // Should be empty to begin with assertEquals(CollectionUtils.immutableSet(), makeHashSet(map.keySet())); // Test with adding data map.put("A", 1); map.put("B", 2); assertEquals(CollectionUtils.immutableSet("A", "B"), makeHashSet(map.keySet())); map.put("C", 3); assertEquals(CollectionUtils.immutableSet("A", "B", "C"), makeHashSet(map.keySet())); // Remove something map.remove("B"); assertEquals(CollectionUtils.immutableSet("A", "C"), makeHashSet(map.keySet())); }
/** Tests listeners get events. */ public void testEvents() { Listener listener1 = new Listener(); Listener listener2 = new Listener(); map.addListener(listener1); // New values map.put("A", 100); listener1.check(1, "A", null, 100); map.put("B", 200); listener1.check(2, "B", null, 200); map.put("A", 300); listener1.check(3, "A", 100, 300); // No change map.put("B", 200); listener1.check(3); // Add a second listener - both should get same event map.addListener(listener2); listener2.check(0); map.put("B", 400); listener1.check(4, "B", 200, 400); listener2.check(1, "B", 200, 400); // Remove one listener map.removeListener(listener1); map.put("A", 500); listener1.check(4); // no more events here listener2.check(2, "A", 300, 500); // but one here }
/** Tests simple getting and putting of values. */ public void testGetPut() { // New keys ought to have null values assertNull(map.get("A")); assertNull(map.get("B")); // Put values in, and get them out again assertTrue(map.put("A", 1)); assertTrue(map.put("B", 2)); assertEquals(Integer.valueOf(1), map.get("A")); assertEquals(Integer.valueOf(2), map.get("B")); // Rewrite a value assertTrue(map.put("A", 3)); assertEquals(Integer.valueOf(3), map.get("A")); // Overwrite with same value assertFalse(map.put("A", 3)); assertEquals(Integer.valueOf(3), map.get("A")); }
@Override public void setNotifiedVersion(WaveletId waveletId, int signature) { notifiedVersion.put(waveletId, signature); }
@Override public void clearSeenVersion(WaveletId waveletId) { seenVersion.remove(waveletId); }
/** Tests functionality of keySet method. */ public void testKeySet() { // Should be empty to begin with assertEquals(CollectionUtils.immutableSet(), makeHashSet(map.keySet())); // Test with adding data map.put("A", 1); map.put("B", 2); assertEquals(CollectionUtils.immutableSet("A", "B"), makeHashSet(map.keySet())); map.put("C", 3); assertEquals(CollectionUtils.immutableSet("A", "B", "C"), makeHashSet(map.keySet())); // Remove something map.remove("B"); assertEquals(CollectionUtils.immutableSet("A", "C"), makeHashSet(map.keySet())); }
/** Tests listeners get events. */ public void testEvents() { Listener listener1 = new Listener(); Listener listener2 = new Listener(); map.addListener(listener1); // New values map.put("A", 100); listener1.check(1, "A", null, 100); map.put("B", 200); listener1.check(2, "B", null, 200); map.put("A", 300); listener1.check(3, "A", 100, 300); // No change map.put("B", 200); listener1.check(3); // Add a second listener - both should get same event map.addListener(listener2); listener2.check(0); map.put("B", 400); listener1.check(4, "B", 200, 400); listener2.check(1, "B", 200, 400); // Remove one listener map.removeListener(listener1); map.put("A", 500); listener1.check(4); // no more events here listener2.check(2, "A", 300, 500); // but one here }
/** Tests simple getting and putting of values. */ public void testGetPut() { // New keys ought to have null values assertNull(map.get("A")); assertNull(map.get("B")); // Put values in, and get them out again assertTrue(map.put("A", 1)); assertTrue(map.put("B", 2)); assertEquals(Integer.valueOf(1), map.get("A")); assertEquals(Integer.valueOf(2), map.get("B")); // Rewrite a value assertTrue(map.put("A", 3)); assertEquals(Integer.valueOf(3), map.get("A")); // Overwrite with same value assertFalse(map.put("A", 3)); assertEquals(Integer.valueOf(3), map.get("A")); }
@Override public void setSeenVersion(WaveletId waveletId, HashedVersion signature) { seenVersion.put(waveletId, signature); }
@Override public void setIndexability(ParticipantId participant, IndexDecision indexability) { Preconditions.checkNotNull(participant, "Null participant"); IndexDecision current = getIndexability(participant); if (indexability == null) { if (current != null) { data.remove(participant); } } else { data.put(participant, indexability); } }
@Override public ThreadState getThreadState(String threadId) { return threadStates.get(threadId); }
@Override public Iterable<String> getThreads() { return threadStates.keySet(); } }