X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Futil%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Futil%2FReadWriteTrieMap.java;h=788c2d9b66834c961b6e4d1f3ef49c5ae0c35bcf;hb=950c070a8c54b026acf7860094d699052611ab54;hp=7eeb2911ec5a21cd3bc879ed36e9f76c1b23f28a;hpb=c24d6e2f39acbb11e22b5676bb7481ed52bec461;p=yangtools.git diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/ReadWriteTrieMap.java b/common/util/src/main/java/org/opendaylight/yangtools/util/ReadWriteTrieMap.java index 7eeb2911ec..788c2d9b66 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/ReadWriteTrieMap.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/ReadWriteTrieMap.java @@ -8,12 +8,14 @@ package org.opendaylight.yangtools.util; import com.google.common.base.Preconditions; -import com.romix.scala.collection.concurrent.TrieMap; +import com.google.common.collect.ForwardingMap; import java.util.Collection; import java.util.Collections; import java.util.Map; import java.util.Set; import javax.annotation.Nonnull; +import org.opendaylight.yangtools.triemap.MutableTrieMap; +import org.opendaylight.yangtools.triemap.TrieMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,27 +24,34 @@ import org.slf4j.LoggerFactory; * their size, and determining the size of a TrieMap is expensive, we make sure * to update it as we go. * - *

FIXME: this map does not support modification view the keySet()/values()/entrySet() - * methods. + *

+ * FIXME: this map does not support modification view the keySet()/values()/entrySet() methods. * * @param Key type * @param Value type */ -final class ReadWriteTrieMap implements Map { +final class ReadWriteTrieMap extends ForwardingMap { private static final Logger LOG = LoggerFactory.getLogger(ReadOnlyTrieMap.class); - private final TrieMap delegate; + + private final MutableTrieMap delegate; + private int size; ReadWriteTrieMap() { - this.delegate = new TrieMap<>(); + this.delegate = TrieMap.create(); this.size = 0; } - ReadWriteTrieMap(final TrieMap delegate, final int size) { + ReadWriteTrieMap(final MutableTrieMap delegate, final int size) { this.delegate = Preconditions.checkNotNull(delegate); this.size = size; } + @Override + protected Map delegate() { + return delegate; + } + Map toReadOnly() { final Map ret = new ReadOnlyTrieMap<>(delegate, size); LOG.trace("Converted read-write TrieMap {} to read-only {}", this, ret); @@ -59,21 +68,6 @@ final class ReadWriteTrieMap implements Map { return size == 0; } - @Override - public boolean containsKey(final Object key) { - return delegate.containsKey(key); - } - - @Override - public boolean containsValue(final Object value) { - return delegate.containsValue(value); - } - - @Override - public V get(final Object key) { - return delegate.get(key); - } - @Override public V put(final K key, final V value) { final V ret = delegate.put(key, value); @@ -93,6 +87,7 @@ final class ReadWriteTrieMap implements Map { } @Override + @SuppressWarnings("checkstyle:parameterName") public void putAll(@Nonnull final Map m) { for (Entry e : m.entrySet()) { put(e.getKey(), e.getValue()); @@ -119,14 +114,4 @@ final class ReadWriteTrieMap implements Map { public Set> entrySet() { return Collections.unmodifiableSet(delegate.entrySet()); } - - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - @Override - public int hashCode() { - return delegate.hashCode(); - } }