@Override public Void apply(EntryView.ReadWriteEntryView<K, Collection<V>> entryView) { Collection<V> newValues = new HashSet<>(); newValues.add(value); entryView.find().map(newValues::addAll); entryView.set(newValues); return null; }
@Override public Byte apply(EntryView.ReadWriteEntryView<CacheXid, TxState> view) { if (view.find().isPresent()) { return Status.ERROR.value; } view.set(new TxState(globalTransaction, recoverable, timeout, timeService)); return Status.OK.value; }
@Override public void setValue(GridBucketState value) { entryView.set(value); }
@Override public void setValue(V value) { rw.set(value); }
@Override public Byte apply(EntryView.ReadWriteEntryView<CacheXid, TxState> view) { if (view.find().isPresent()) { TxState state = view.get(); view.set(state.setStatus(committed ? COMMITTED : ROLLED_BACK, true, timeService)); return OK.value; } else { return NO_TRANSACTION.value; } }
private Object readWriteManyEntries(MagicKey key, int index) { // make sure the other key is stable MagicKey otherKey = new MagicKey("other", cache(0), cache(2)); FunctionalMap.ReadWriteMap<Object, Object> rwMap = ReadWriteMapImpl.create(FunctionalMapImpl.create(cache(0).getAdvancedCache())); HashMap<MagicKey, Object> map = new HashMap<>(); map.put(key, "v" + index); map.put(otherKey, "something"); Traversable<Object> traversable = rwMap.evalMany(map, (value, view) -> { assertFalse(view.find().isPresent()); view.set(value); return "r" + index; }); return traversable.findAny().orElseThrow(IllegalStateException::new); }
private Object readWriteKeyValue(MagicKey key, int index) { FunctionalMap.ReadWriteMap<Object, Object> rwMap = ReadWriteMapImpl.create(FunctionalMapImpl.create(cache(0).getAdvancedCache())); CompletableFuture cfa = rwMap.eval(key, "v" + index, (value, view) -> { assertFalse(view.find().isPresent()); view.set(value); return "r" + index; }); return cfa.join(); }
private Object readWriteMany(MagicKey key, int index) { // make sure the other key is stable MagicKey otherKey = new MagicKey("other", cache(0), cache(2)); FunctionalMap.ReadWriteMap<Object, Object> rwMap = ReadWriteMapImpl.create(FunctionalMapImpl.create(cache(0).getAdvancedCache())); HashSet<MagicKey> keys = new HashSet<>(Arrays.asList(key, otherKey)); Traversable<Object> traversable = rwMap.evalMany(keys, view -> { assertFalse(view.find().isPresent()); view.set("v" + index); return "r" + index; }); return traversable.findAny().orElseThrow(IllegalStateException::new); }
@Override public Void apply(ReadWriteEntryView<K, String> rw) { rw.set("one", new MetaEntryVersion(new NumericVersion(100))); return null; }
private static Integer increment(EntryView.ReadWriteEntryView<String, Integer> view) { int value = view.find().orElse(0); view.set(value + 1); return value; }
public static <K, V> void assertReadWriteViewEquals(K k, V expected, ReadWriteEntryView<K, V> rw) { assertEquals(k, rw.key()); assertTrue(rw.find().isPresent()); assertEquals(expected, rw.find().get()); assertEquals(expected, rw.get()); try { rw.set(null); fail("Expected IllegalStateException since entry view cannot be modified outside lambda"); } catch (IllegalStateException e) { // Expected } }
private static Integer add(Integer param, EntryView.ReadWriteEntryView<String, Integer> view) { int value = view.find().orElse(0); view.set(value + param); return value; }
@Override public Void apply(EntryView.ReadWriteEntryView<Object, Object> view) { Object storedValue = view.find().orElse(null); MetaParam.MetaLifespan expiringMetaParam = region.getExpiringMetaParam(); if (storedValue instanceof Tombstone) { view.set(((Tombstone) storedValue).merge(this), expiringMetaParam); } else { view.set(this, expiringMetaParam); } return null; }
@Override public ReadWriteEntryView<K, String> apply(ReadWriteEntryView<K, String> rw) { Optional<MetaEntryVersion> metaParam = rw.findMetaParam(MetaEntryVersion.class); metaParam.ifPresent(metaVersion -> { if (metaVersion.get().compareTo(new NumericVersion(version)) == EQUAL) rw.set("uno", new MetaEntryVersion(new NumericVersion(200))); }); return rw; }
@Override public Optional<String> apply(ReadWriteEntryView<K, String> rw) { Optional<String> prev = rw.find(); rw.set("one"); return prev; }
@Override public void setValue(GridBucketState value) { entryView.set(value); }
@Override public Void apply(ReadWriteEntryView<K, String> rw) { rw.set(constant); return null; }
private Object readWriteKey(MagicKey key, int index) { FunctionalMap.ReadWriteMap<Object, Object> rwMap = ReadWriteMapImpl.create(FunctionalMapImpl.create(cache(0).getAdvancedCache())); CompletableFuture cf = rwMap.eval(key, view -> { assertFalse(view.find().isPresent()); view.set("v" + index); return "r" + index; }); return cf.join(); }
private <K> SerializableFunction<ReadWriteEntryView<K, String>, ReadWriteEntryView<K, String>> setOneReadWrite() { return rw -> { rw.set("one"); return rw; }; }