BUG-7464: Switch to use forked TrieMap
[yangtools.git] / common / util / src / main / java / org / opendaylight / yangtools / util / ReadWriteTrieMap.java
index 039e7340a5a7a2260c999b1626d92a2dae1b4037..a345f78bee29bd26e3f99f909c5694b3ee1a002c 100644 (file)
@@ -7,23 +7,23 @@
  */
 package org.opendaylight.yangtools.util;
 
+import com.google.common.base.Preconditions;
 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;
 
-import com.google.common.base.Preconditions;
-import com.romix.scala.collection.concurrent.TrieMap;
-
 /**
  * A TrieMap facade tracking modifications. Since we change structures based on
  * 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()
+ * <p>FIXME: this map does not support modification view the keySet()/values()/entrySet()
  *        methods.
  *
  * @param <K> Key type
@@ -31,10 +31,15 @@ import com.romix.scala.collection.concurrent.TrieMap;
  */
 final class ReadWriteTrieMap<K, V> implements Map<K, V> {
     private static final Logger LOG = LoggerFactory.getLogger(ReadOnlyTrieMap.class);
-    private final TrieMap<K, V> delegate;
+    private final MutableTrieMap<K, V> delegate;
     private int size;
 
-    ReadWriteTrieMap(final TrieMap<K, V> delegate, final int size) {
+    ReadWriteTrieMap() {
+        this.delegate = TrieMap.create();
+        this.size = 0;
+    }
+
+    ReadWriteTrieMap(final MutableTrieMap<K, V> delegate, final int size) {
         this.delegate = Preconditions.checkNotNull(delegate);
         this.size = size;
     }
@@ -89,7 +94,7 @@ final class ReadWriteTrieMap<K, V> implements Map<K, V> {
     }
 
     @Override
-    public void putAll(final Map<? extends K, ? extends V> m) {
+    public void putAll(@Nonnull final Map<? extends K, ? extends V> m) {
         for (Entry<? extends K, ? extends V> e : m.entrySet()) {
             put(e.getKey(), e.getValue());
         }
@@ -125,4 +130,9 @@ final class ReadWriteTrieMap<K, V> implements Map<K, V> {
     public int hashCode() {
         return delegate.hashCode();
     }
+
+    @Override
+    public String toString() {
+        return delegate.toString();
+    }
 }