/** * Creates a document-based manifest. Package-private for testing. * * @param rootThread the root thread * @param anchor value representing the conversation anchor */ DocumentBasedManifest(ObservableManifestThread rootThread, ObservableStructuredValue<AnchorKey, String> anchor) { ObservableStructuredValue.Listener<AnchorKey, String> anchorListener = new ObservableStructuredValue.Listener<AnchorKey, String>() { @Override public void onValuesChanged(Map<AnchorKey, ? extends String> oldValues, Map<AnchorKey, ? extends String> newValues) { triggerOnAnchorChanged(oldValues, newValues); } @Override public void onDeleted() { // TODO(anorth): remove onDeleted from this interface. } }; this.rootThread = rootThread; this.anchor = anchor; this.anchor.addListener(anchorListener); }
public void testSetOnEmptyStateIsReturnedByGet() { // set(String, String). createEmptyTarget(); value.set(Key.NAME1, 42); assertEquals(new Integer(42), value.get(Key.NAME1)); assertNull(value.get(Key.NAME2)); // set(Map). createEmptyTarget(); value.set(CollectionUtils.immutableMap(Key.NAME1, 42)); assertEquals(new Integer(42), value.get(Key.NAME1)); assertNull(value.get(Key.NAME2)); }
public void testSetSingleFromNullProducesEvent() { createEmptyTarget(); MockStructuredValueObserver observer = new MockStructuredValueObserver(); value.addListener(observer); observer.expectValuesChanged(CollectionUtils.immutableMap(Key.NAME1, (Integer) null), CollectionUtils.immutableMap(Key.NAME1, 42)); value.set(Key.NAME1, 42); observer.checkExpectationsSatisfied(); }
verify(anchorValue).addListener(anchorListener.capture()); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("waveletid"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("blipid"); verify(anchorValue).set(CollectionUtils.immutableMap(AnchorKey.WAVELET, "newwavelet", AnchorKey.BLIP, "newblip")); target.addListener(manifestListener); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("newwavelet"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("newblip"); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("waveletid"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("blipid"); anchorListener.getValue().onValuesChanged( CollectionUtils.immutableMap(AnchorKey.WAVELET, "waveletid", AnchorKey.BLIP, "blipid"),
@Override public void setRole(Role role) { value.set(Key.ROLE, RoleSerializer.INSTANCE.toString(role)); }
public void testSetSingleFromNullProducesEvent() { createEmptyTarget(); MockStructuredValueObserver observer = new MockStructuredValueObserver(); value.addListener(observer); observer.expectValuesChanged(CollectionUtils.immutableMap(Key.NAME1, (Integer) null), CollectionUtils.immutableMap(Key.NAME1, 42)); value.set(Key.NAME1, 42); observer.checkExpectationsSatisfied(); }
verify(anchorValue).addListener(anchorListener.capture()); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("waveletid"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("blipid"); verify(anchorValue).set(CollectionUtils.immutableMap(AnchorKey.WAVELET, "newwavelet", AnchorKey.BLIP, "newblip")); target.addListener(manifestListener); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("newwavelet"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("newblip"); when(anchorValue.get(AnchorKey.WAVELET)).thenReturn("waveletid"); when(anchorValue.get(AnchorKey.BLIP)).thenReturn("blipid"); anchorListener.getValue().onValuesChanged( CollectionUtils.immutableMap(AnchorKey.WAVELET, "waveletid", AnchorKey.BLIP, "blipid"),
@Override public Role getRole() { return RoleSerializer.INSTANCE.fromString(value.get(Key.ROLE)); }
@Override public void setAnchor(AnchorData newAnchor) { anchor.set(CollectionUtils.immutableMap(AnchorKey.WAVELET, newAnchor.getConversationId(), AnchorKey.BLIP, newAnchor.getBlipId())); }
public void testSetNullProducesEvent() { createTargetOn(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); MockStructuredValueObserver observer = new MockStructuredValueObserver(); value.addListener(observer); observer.expectValuesChanged(CollectionUtils.immutableMap(Key.NAME1, 10), CollectionUtils.immutableMap(Key.NAME1, (Integer) null)); value.set(Key.NAME1, null); observer.checkExpectationsSatisfied(); }
public void testSetOnEmptyStateIsReturnedByGet() { // set(String, String). createEmptyTarget(); value.set(Key.NAME1, 42); assertEquals(new Integer(42), value.get(Key.NAME1)); assertNull(value.get(Key.NAME2)); // set(Map). createEmptyTarget(); value.set(CollectionUtils.immutableMap(Key.NAME1, 42)); assertEquals(new Integer(42), value.get(Key.NAME1)); assertNull(value.get(Key.NAME2)); }
@Override public ParticipantId getParticipant() { return ParticipantId.ofUnsafe(value.get(Key.ADDRESS)); }
public static <E> DocumentBasedAssignment create( DocumentEventRouter<? super E, E, ?> router, E container) { DocumentBasedAssignment assignment = new DocumentBasedAssignment( DocumentBasedStructuredValue.create(router, container, Serializer.STRING, Key.class)); assignment.value.addListener(assignment); return assignment; }
public void testSetOnEmptyStateInsertsIntoSubstrate() { // set(String, String). createEmptyTarget(); value.set(Key.NAME1, 10); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(Key.NAME2, 20); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); // set(Map). createEmptyTarget(); value.set(CollectionUtils.immutableMap(Key.NAME1, 10)); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(CollectionUtils.immutableMap(Key.NAME2, 20)); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); }
public void testSetNullProducesEvent() { createTargetOn(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); MockStructuredValueObserver observer = new MockStructuredValueObserver(); value.addListener(observer); observer.expectValuesChanged(CollectionUtils.immutableMap(Key.NAME1, 10), CollectionUtils.immutableMap(Key.NAME1, (Integer) null)); value.set(Key.NAME1, null); observer.checkExpectationsSatisfied(); }
public void testSetNullClearsValue() { // set(String, String). createTargetOn(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(Key.NAME1, null); assertNull(value.get(Key.NAME1)); assertSubstrateEquals(new HashMap<Key, Integer>()); // set(Map). createTargetOn(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(CollectionUtils.immutableMap(Key.NAME1, (Integer) null)); assertNull(value.get(Key.NAME1)); assertSubstrateEquals(new HashMap<Key, Integer>()); }
private void triggerOnAnchorChanged(Map<AnchorKey, ? extends String> oldValues, Map<AnchorKey, ? extends String> newValues) { // Get old values. If a component didn't change use its current value. String oldAnchorWavelet = (oldValues.containsKey(AnchorKey.WAVELET)) ? oldValues.get(AnchorKey.WAVELET) : anchor.get(AnchorKey.WAVELET); String oldAnchorBlipId = (oldValues.containsKey(AnchorKey.BLIP)) ? oldValues.get(AnchorKey.BLIP) : anchor.get(AnchorKey.BLIP); // Get new/current values from the underlying state. If a component didn't // change it will not be present in newValues. String newAnchorWavelet = anchor.get(AnchorKey.WAVELET); String newAnchorBlipId = anchor.get(AnchorKey.BLIP); AnchorData oldAnchor = new AnchorData(oldAnchorWavelet, oldAnchorBlipId); AnchorData newAnchor = new AnchorData(newAnchorWavelet, newAnchorBlipId); if (!oldAnchor.equals(newAnchor)) { for (Listener l : listeners) { l.onAnchorChanged(oldAnchor, newAnchor); } } } }
public void testDeletionProducesEvent() { createTargetOn(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); MockStructuredValueObserver observer = new MockStructuredValueObserver(); value.addListener(observer); observer.expectDeletion(); context.delete(); }
public void testSetOnEmptyStateInsertsIntoSubstrate() { // set(String, String). createEmptyTarget(); value.set(Key.NAME1, 10); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(Key.NAME2, 20); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); // set(Map). createEmptyTarget(); value.set(CollectionUtils.immutableMap(Key.NAME1, 10)); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10)); value.set(CollectionUtils.immutableMap(Key.NAME2, 20)); assertSubstrateEquals(CollectionUtils.immutableMap(Key.NAME1, 10, Key.NAME2, 20)); }