package org.deephacks.westty.internal.cluster; import com.hazelcast.core.EntryEvent; import com.hazelcast.core.EntryListener; import com.hazelcast.core.MultiMap; import org.deephacks.westty.cluster.ClusterListener; import org.deephacks.westty.cluster.DistributedMultiMap; import java.util.Collection; import java.util.Map.Entry; import java.util.Set; class WesttyDistributedMultiMap<K, V> implements DistributedMultiMap<K, V> { private MultiMap<K, V> map; public WesttyDistributedMultiMap(MultiMap<K, V> map) { this.map = map; } @Override public boolean remove(Object key, Object value) { return map.remove(key, value); } @Override public boolean put(K key, V value) { return map.put(key, value); } @Override public void addEntryListener(final ClusterListener<K, V> listener, boolean includeValue) { EntryListener<K, V> delegate = new EntryListener<K, V>() { @Override public void entryAdded(EntryEvent<K, V> event) { listener.entryAdded(new WesttyEntryEvent<>(event)); } @Override public void entryRemoved(EntryEvent<K, V> event) { listener.entryRemoved(new WesttyEntryEvent<>(event)); } @Override public void entryUpdated(EntryEvent<K, V> event) { listener.entryUpdated(new WesttyEntryEvent<>(event)); } @Override public void entryEvicted(EntryEvent<K, V> event) { listener.entryEvicted(new WesttyEntryEvent<>(event)); } }; map.addEntryListener(delegate, includeValue); } @Override public Set<Entry<K, V>> entrySet() { return map.entrySet(); } @Override public Collection<V> get(K key) { return map.get(key); } }