Remove the object cache
[yangtools.git] / third-party / triemap / src / main / java / org / opendaylight / yangtools / triemap / AbstractEntrySet.java
index c915945d77c43f58eeedfa82a33337bb5bd70e39..e82ba87a345b0febdc9d12372b5fecb82a16ee1e 100644 (file)
  */
 package org.opendaylight.yangtools.triemap;
 
-import static com.google.common.base.Preconditions.checkNotNull;
+import static java.util.Objects.requireNonNull;
 
 import java.util.AbstractSet;
 import java.util.Map.Entry;
+import java.util.Spliterator;
+import java.util.Spliterators;
 
 /**
  * Abstract base class for implementing {@link TrieMap} entry sets.
@@ -32,7 +34,7 @@ abstract class AbstractEntrySet<K, V> extends AbstractSet<Entry<K, V>> {
     private final TrieMap<K, V> map;
 
     AbstractEntrySet(final TrieMap<K, V> map) {
-        this.map = checkNotNull(map);
+        this.map = requireNonNull(map);
     }
 
     final TrieMap<K, V> map() {
@@ -40,6 +42,7 @@ abstract class AbstractEntrySet<K, V> extends AbstractSet<Entry<K, V>> {
     }
 
     @Override
+    @SuppressWarnings("checkstyle:parameterName")
     public final boolean contains(final Object o) {
         if (!(o instanceof Entry)) {
             return false;
@@ -59,4 +62,12 @@ abstract class AbstractEntrySet<K, V> extends AbstractSet<Entry<K, V>> {
     public final int size() {
         return map.size();
     }
+
+    @Override
+    public final Spliterator<Entry<K, V>> spliterator() {
+        // TODO: this is backed by an Iterator, we should be able to do better
+        return Spliterators.spliterator(map.immutableIterator(), Long.MAX_VALUE, characteristics());
+    }
+
+    abstract int characteristics();
 }