/** * Exposes a document as a map from wavelet ids to version numbers. * * @param router router for the archiving document * @return archiving state. */ private static <E> ObservableMonotonicMap<WaveletId, Integer> createWaveletArchiveState( DocumentEventRouter<? super E, E, ?> router) { return DocumentBasedMonotonicMap.create(router, router.getDocument().getDocumentElement(), WaveletIdSerializer.INSTANCE, Serializer.INTEGER, ARCHIVE_TAG, ID_ATTR, VERSION_ATTR); }
/** * Creates a monotonic map. */ public static <E, K, C extends Comparable<C>> DocumentBasedMonotonicMap<E, K, C> create( DocumentEventRouter<? super E, E, ?> router, E entryContainer, Serializer<K> keySerializer, Serializer<C> valueSerializer, String entryTagName, String keyAttrName, String valueAttrName) { DocumentBasedMonotonicMap<E, K, C> map = new DocumentBasedMonotonicMap<E, K, C>( router, entryContainer, keySerializer, valueSerializer, entryTagName, keyAttrName, valueAttrName, true); map.dispatchAndLoad(); return map; } }
public void testRemovePutWithLesserValues() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().remove(KEY1); getTarget().put(KEY1, 5); assertEquals(new Integer(5), getTarget().get(KEY1)); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 5) .add(KEY2, 20)); }
public void testReplacementEntryTriggersSingleEvent() { createEmptyMap(); getTarget().put(KEY1, 10); MockListener<String, Integer> listener = new MockListener<String, Integer>(); getTarget().addListener(listener); getTarget().put(KEY1, 20); List<Entry<String, Integer>> receivedEntries = listener.getEntries().build(); assertEquals(1, receivedEntries.size()); }
public void testPutOnEmptyMapInsertsIntoSubstrate() { createEmptyMap(); getTarget().put(KEY1, 10); assertSubstrateEquals(new ListBuilder<String, Integer>().add(KEY1, 10)); }
public void testRemovePutWithLesserValues() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().remove(KEY1); getTarget().put(KEY1, 5); assertEquals(new Integer(5), getTarget().get(KEY1)); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 5) .add(KEY2, 20)); }
public void testReplacementEntryTriggersSingleEvent() { createEmptyMap(); getTarget().put(KEY1, 10); MockListener<String, Integer> listener = new MockListener<String, Integer>(); getTarget().addListener(listener); getTarget().put(KEY1, 20); List<Entry<String, Integer>> receivedEntries = listener.getEntries().build(); assertEquals(1, receivedEntries.size()); }
public void testPutOnEmptyMapInsertsIntoSubstrate() { createEmptyMap(); getTarget().put(KEY1, 10); assertSubstrateEquals(new ListBuilder<String, Integer>().add(KEY1, 10)); }
public void testPutOfNewEntryTriggersEvent() { createEmptyMap(); MockListener<String, Integer> listener = new MockListener<String, Integer>(); getTarget().addListener(listener); getTarget().put(KEY1, 10); List<Entry<String, Integer>> receivedEntries = listener.getEntries().build(); assertEquals(1, receivedEntries.size()); }
/** * Exposes a document as a map of per-wavelet notified-versions. * * @param router router for the notified-state document * @return wavelet notified version. */ private static <E> ObservableBasicMap<WaveletId, Integer> createWaveletNotifiedVersion( DocumentEventRouter<? super E, E, ?> router) { return DocumentBasedMonotonicMap.create(router, router.getDocument().getDocumentElement(), WaveletIdSerializer.INSTANCE, Serializer.INTEGER, NOTIFIED_VERSION_TAG, ID_ATTR, VERSION_ATTR); }
public void testPutOfAnEqualValueDoesNothing() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().put(KEY2, 20); // If the substrate were to have been rewritten, we'd expect to find KEY2 at // the start of the document as a newly written entry. Therefore, we test // that it remains at its old location. assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); }
public void testPutOfAGreaterValueReplacesOld() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().put(KEY1, 30); assertEquals(new Integer(30), getTarget().get(KEY1)); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 30) .add(KEY2, 20)); }
public void testPutOfNewEntryTriggersEvent() { createEmptyMap(); MockListener<String, Integer> listener = new MockListener<String, Integer>(); getTarget().addListener(listener); getTarget().put(KEY1, 10); List<Entry<String, Integer>> receivedEntries = listener.getEntries().build(); assertEquals(1, receivedEntries.size()); }
/** * Exposes a document as a map of per-wavelet seen-version/seen-hash pairs. * * @param router router for the seen-state document * @return wavelet seen version and hash signature. */ private static <E> ObservableBasicMap<WaveletId, HashedVersion> createWaveletSeenVersion( DocumentEventRouter<? super E, E, ?> router) { return DocumentBasedMonotonicMap.create(router, router.getDocument().getDocumentElement(), WaveletIdSerializer.INSTANCE, HashedVersionSerializer.INSTANCE, SEEN_VERSION_TAG, ID_ATTR, SIGNATURE_ATTR); }
public void testPutOfAnEqualValueDoesNothing() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().put(KEY2, 20); // If the substrate were to have been rewritten, we'd expect to find KEY2 at // the start of the document as a newly written entry. Therefore, we test // that it remains at its old location. assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); }
public void testPutOfALesserValueDoesNothing() { // Set up the target with some initial state. createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); getTarget().put(KEY1, 05); assertEquals(new Integer(10), getTarget().get(KEY1)); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20)); }
DocumentBasedWaveletReadState(DocumentEventRouter<? super E, E, ?> router, E container) { this.router = router; this.container = container; blips = DocumentBasedMonotonicMap.create(router, container, Serializer.STRING, Serializer.INTEGER, WaveletBasedSupplement.BLIP_READ_TAG, WaveletBasedSupplement.ID_ATTR, WaveletBasedSupplement.VERSION_ATTR); participants = DocumentBasedMonotonicValue.create(router, container, Serializer.INTEGER, WaveletBasedSupplement.PARTICIPANTS_READ_TAG, WaveletBasedSupplement.VERSION_ATTR); tags = DocumentBasedMonotonicValue.create(router, container, Serializer.INTEGER, WaveletBasedSupplement.TAGS_READ_TAG, WaveletBasedSupplement.VERSION_ATTR); wavelet = DocumentBasedMonotonicValue.create(router, container, Serializer.INTEGER, WaveletBasedSupplement.WAVELET_READ_TAG, WaveletBasedSupplement.VERSION_ATTR); }
public void testLoadLeavesOverridenEntriesInSubstrateButCleansOnWrite() { createTargetOn(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20) .add(KEY1, 30)); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY1, 10) .add(KEY2, 20) .add(KEY1, 30)); getTarget().put(KEY2, 50); assertSubstrateEquals(new ListBuilder<String, Integer>() .add(KEY2, 50) .add(KEY1, 30)); }