diff --git a/common/src/main/java/me/lucko/luckperms/common/util/LoadingMap.java b/common/src/main/java/me/lucko/luckperms/common/util/LoadingMap.java index 85d7060a..f4901d2d 100644 --- a/common/src/main/java/me/lucko/luckperms/common/util/LoadingMap.java +++ b/common/src/main/java/me/lucko/luckperms/common/util/LoadingMap.java @@ -25,49 +25,32 @@ package me.lucko.luckperms.common.util; -import java.util.Collection; +import com.google.common.collect.ForwardingMap; + import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; -public interface LoadingMap extends Map { - static LoadingMap of(Map map, Function function) { - return new LoadingMapImpl<>(map, function); +public class LoadingMap extends ForwardingMap implements Map { + public static LoadingMap of(Map map, Function function) { + return new LoadingMap<>(map, function); } - static LoadingMap of(Function function) { + public static LoadingMap of(Function function) { return of(new ConcurrentHashMap<>(), function); } -} -final class LoadingMapImpl implements LoadingMap { private final Map map; private final Function function; - LoadingMapImpl(Map map, Function function) { + private LoadingMap(Map map, Function function) { this.map = map; this.function = function; } @Override - public int size() { - return this.map.size(); - } - - @Override - public boolean isEmpty() { - return this.map.isEmpty(); - } - - @Override - public boolean containsKey(Object key) { - return this.map.containsKey(key); - } - - @Override - public boolean containsValue(Object value) { - return this.map.containsValue(value); + protected Map delegate() { + return this.map; } @Override @@ -78,39 +61,4 @@ final class LoadingMapImpl implements LoadingMap { } return this.map.computeIfAbsent((K) key, this.function); } - - @Override - public V put(K key, V value) { - return this.map.put(key, value); - } - - @Override - public V remove(Object key) { - return this.map.remove(key); - } - - @Override - public void putAll(Map that) { - this.map.putAll(that); - } - - @Override - public void clear() { - this.map.clear(); - } - - @Override - public Set keySet() { - return this.map.keySet(); - } - - @Override - public Collection values() { - return this.map.values(); - } - - @Override - public Set> entrySet() { - return this.map.entrySet(); - } } \ No newline at end of file