Skip to content

Commit

Permalink
feat(ObservableObjectMap): Added ObservableObjectMap
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgeV220 committed Apr 8, 2023
1 parent 6a6a66a commit 049f676
Showing 1 changed file with 33 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.georgev22.library.maps;

import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.List;

public class ObservableObjectMap<K, V> extends ConcurrentObjectMap<K, V> implements ObjectMap<K, V> {

private List<MapChangeListener<K, V>> listeners = new ArrayList<>();

public void addListener(MapChangeListener<K, V> listener) {
listeners.add(listener);
}

@Override
public V put(@NotNull K key, @NotNull V value) {
V oldValue = super.put(key, value);
fireEntryAddedEvent(key, value);
return oldValue;
}

private void fireEntryAddedEvent(K key, V value) {
for (MapChangeListener<K, V> listener : listeners) {
listener.entryAdded(key, value);
}
}

public interface MapChangeListener<K, V> {
void entryAdded(K key, V value);
}

}

0 comments on commit 049f676

Please sign in to comment.