You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/07/21 17:20:05 UTC

svn commit: r1364113 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/ oak-core/src...

Author: jukka
Date: Sat Jul 21 15:20:04 2012
New Revision: 1364113

URL: http://svn.apache.org/viewvc?rev=1364113&view=rev
Log:
OAK-200: Replace Commons Collections with Guava

Simplify code using higher-level collection abstractions in Guava

Removed:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/PagedIterator.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryChildNodeEntry.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeState.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/ArrayUtils.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java Sat Jul 21 15:20:04 2012
@@ -21,12 +21,10 @@ package org.apache.jackrabbit.oak.kernel
 import static org.apache.jackrabbit.oak.kernel.CoreValueMapper.fromJsopReader;
 import static org.apache.jackrabbit.oak.kernel.CoreValueMapper.listFromJsopReader;
 
-import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 
 import javax.annotation.Nonnull;
 
@@ -42,9 +40,9 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
-import org.apache.jackrabbit.oak.util.PagedIterator;
 
-import com.google.common.collect.Iterators;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 
 /**
  * Basic {@link NodeState} implementation based on the {@link MicroKernel}
@@ -168,18 +166,20 @@ final class KernelNodeState extends Abst
 
     @Override
     public Iterable<? extends ChildNodeEntry> getChildNodeEntries() {
-        return new Iterable<ChildNodeEntry>() {
-            @Override
-            public Iterator<ChildNodeEntry> iterator() {
-                return  Iterators.concat(
-                    new PagedIterator<ChildNodeEntry>(MAX_CHILD_NODE_NAMES) {
-                        @Override
-                        protected Iterator<? extends ChildNodeEntry> getPage(long pos, int size) {
-                            return getChildNodeEntries(pos, size);
-                        }
-                });
+        init();
+        Iterable<ChildNodeEntry> iterable =
+                MemoryChildNodeEntry.iterable(childNodes.entrySet());
+        if (childNodeCount > childNodes.size()) {
+            List<Iterable<ChildNodeEntry>> iterables = Lists.newArrayList();
+            iterables.add(iterable);
+            long offset = childNodes.size();
+            while (offset < childNodeCount) {
+                iterables.add(getChildNodeEntries(offset, MAX_CHILD_NODE_NAMES));
+                offset += MAX_CHILD_NODE_NAMES;
             }
-        };
+            iterable = Iterables.concat(iterables);
+        }
+        return iterable;
     }
 
     /**
@@ -261,60 +261,35 @@ final class KernelNodeState extends Abst
 
     //------------------------------------------------------------< private >---
 
-    private Iterator<? extends ChildNodeEntry> getChildNodeEntries(
-            long offset, int count) {
-        init();
-        boolean all;
-        if (count == -1) {
-            count = Integer.MAX_VALUE;
-            all = true;
-            if (childNodeCount > count) {
-                throw new RuntimeException("Too many child nodes");
-            }
-        } else {
-            all = false;
-        }
-
-        List<ChildNodeEntry> entries = new ArrayList<ChildNodeEntry>();
-
-        if (offset < childNodes.size()) {
-            Iterator<Entry<String, NodeState>> iterator =
-                    childNodes.entrySet().iterator();
-            while (offset > 0) {
-                iterator.next();
-                offset--;
-            }
-            while (count > 0 && iterator.hasNext()) {
-                entries.add(new MemoryChildNodeEntry(iterator.next()));
-                count--;
+    private Iterable<ChildNodeEntry> getChildNodeEntries(
+            final long offset, final int count) {
+        return new Iterable<ChildNodeEntry>() {
+            @Override
+            public Iterator<ChildNodeEntry> iterator() {
+                List<ChildNodeEntry> entries =
+                        Lists.newArrayListWithCapacity(count);
+                String json = kernel.getNodes(
+                        path, revision, 0, offset, count, null);
+                JsopReader reader = new JsopTokenizer(json);
+                reader.read('{');
+                do {
+                    String name = reader.readString();
+                    reader.read(':');
+                    if (reader.matches('{')) {
+                        reader.read('}');
+                        String childPath = getChildPath(name);
+                        NodeState child =
+                                new KernelNodeState(kernel, childPath, revision);
+                        entries.add(new MemoryChildNodeEntry(name, child));
+                    } else {
+                        reader.read();
+                    }
+                } while (reader.matches(','));
+                reader.read('}');
+                reader.read(JsopReader.END);
+                return entries.iterator();
             }
-            offset = childNodes.size();
-        }
-
-        if (count > 0 && childNodeCount > MAX_CHILD_NODE_NAMES) {
-            String json = kernel.getNodes(
-                    path, revision, 0, offset, all ? -1 : count, null);
-
-            JsopReader reader = new JsopTokenizer(json);
-            reader.read('{');
-            do {
-                String name = reader.readString();
-                reader.read(':');
-                if (reader.matches('{')) {
-                    reader.read('}');
-                    String childPath = getChildPath(name);
-                    NodeState child =
-                            new KernelNodeState(kernel, childPath, revision);
-                    entries.add(new MemoryChildNodeEntry(name, child));
-                } else {
-                    reader.read();
-                }
-            } while (reader.matches(','));
-            reader.read('}');
-            reader.read(JsopReader.END);
-        }
-
-        return entries.iterator();
+        };
     }
 
     private String getChildPath(String name) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryChildNodeEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryChildNodeEntry.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryChildNodeEntry.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryChildNodeEntry.java Sat Jul 21 15:20:04 2012
@@ -18,16 +18,15 @@
  */
 package org.apache.jackrabbit.oak.plugins.memory;
 
+import java.util.Map;
+import java.util.Map.Entry;
+
 import org.apache.jackrabbit.oak.spi.state.AbstractChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 import com.google.common.base.Function;
-import com.google.common.collect.Iterators;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
+import com.google.common.collect.Iterables;
 
 /**
  * Basic JavaBean implementation of a child node entry.
@@ -36,10 +35,10 @@ public class MemoryChildNodeEntry extend
     private final String name;
     private final NodeState node;
 
-    public static Iterator<ChildNodeEntry> iterator(
-            final Iterator<Entry<String, NodeState>> iterator) {
-        return Iterators.transform(
-                iterator,
+    public static Iterable<ChildNodeEntry> iterable(
+            final Iterable<Entry<String, NodeState>> iterable) {
+        return Iterables.transform(
+                iterable,
                 new Function<Entry<String, NodeState>, ChildNodeEntry>() {
                     @Override
                     public ChildNodeEntry apply(Entry<String, NodeState> input) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeState.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeState.java Sat Jul 21 15:20:04 2012
@@ -24,7 +24,6 @@ import org.apache.jackrabbit.oak.spi.sta
 
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 /**
@@ -88,12 +87,7 @@ public class MemoryNodeState extends Abs
 
     @Override
     public Iterable<ChildNodeEntry> getChildNodeEntries() {
-        return new Iterable<ChildNodeEntry>() {
-            @Override
-            public Iterator<ChildNodeEntry> iterator() {
-                return MemoryChildNodeEntry.iterator(nodes.entrySet().iterator());
-            }
-        };
+        return MemoryChildNodeEntry.iterable(nodes.entrySet());
     }
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java Sat Jul 21 15:20:04 2012
@@ -24,11 +24,10 @@ import org.apache.jackrabbit.oak.spi.sta
 
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.common.collect.Iterators;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
 
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Map.Entry;
 
 public class ModifiedNodeState extends AbstractNodeState {
 
@@ -80,21 +79,18 @@ public class ModifiedNodeState extends A
         if (properties.isEmpty()) {
             return base.getProperties(); // shortcut
         }
-        final Iterable<? extends PropertyState> unmodified = base.getProperties();
-        final Iterable<? extends PropertyState> modified = properties.values();
 
-        return new Iterable<PropertyState>() {
-            @Override
-            public Iterator<PropertyState> iterator() {
-                Iterator<? extends PropertyState> a = Iterators.filter(
-                        unmodified.iterator(), new UnmodifiedPropertyPredicate());
-
-                Iterator<? extends PropertyState> b = Iterators.filter(
-                        modified.iterator(), Predicates.notNull());
-
-                return Iterators.concat(a, b);
-            }
-        };
+        Iterable<? extends PropertyState> unmodified = Iterables.filter(
+                base.getProperties(),
+                new Predicate<PropertyState>() {
+                    @Override
+                    public boolean apply(PropertyState property) {
+                        return !properties.containsKey(property.getName());
+                    }
+                });
+        Iterable<PropertyState> modified =
+                Iterables.filter(properties.values(), Predicates.notNull());
+        return Iterables.concat(unmodified, modified);
     }
 
     @Override
@@ -128,21 +124,18 @@ public class ModifiedNodeState extends A
         if (nodes.isEmpty()) {
             return base.getChildNodeEntries(); // shortcut
         }
-        final Iterable<? extends ChildNodeEntry> unmodified = base.getChildNodeEntries();
-        final Iterator<Entry<String, NodeState>> modified = nodes.entrySet().iterator();
 
-        return new Iterable<ChildNodeEntry>() {
-            @Override
-            public Iterator<ChildNodeEntry> iterator() {
-                Iterator<? extends ChildNodeEntry> a = Iterators.filter(
-                        unmodified.iterator(), new UnmodifiedChildNodePredicate());
-
-                Iterator<Entry<String, NodeState>> b = Iterators.filter(
-                        modified, new UndeletedChildNodePredicate());
-
-                return Iterators.concat(a, MemoryChildNodeEntry.iterator(b));
-            }
-        };
+        Iterable<? extends ChildNodeEntry> unmodified = Iterables.filter(
+                base.getChildNodeEntries(),
+                new Predicate<ChildNodeEntry>() {
+                    @Override
+                    public boolean apply(ChildNodeEntry input) {
+                        return !nodes.containsKey(input.getName());
+                    }
+                });
+        Iterable<ChildNodeEntry> modified = MemoryChildNodeEntry.iterable(
+                Maps.filterValues(nodes, Predicates.notNull()).entrySet());
+        return Iterables.concat(unmodified, modified);
     }
 
     /**
@@ -226,27 +219,4 @@ public class ModifiedNodeState extends A
         }
     }
 
-    //-----------------------------------------------------------< private >--
-
-    private class UnmodifiedPropertyPredicate implements Predicate<PropertyState> {
-        @Override
-        public boolean apply(PropertyState property) {
-            return !properties.containsKey(property.getName());
-        }
-    }
-
-    private class UnmodifiedChildNodePredicate implements Predicate<ChildNodeEntry> {
-        @Override
-        public boolean apply(ChildNodeEntry entry) {
-            return !nodes.containsKey(entry.getName());
-        }
-    }
-
-    private static class UndeletedChildNodePredicate implements Predicate<Entry<?, ?>> {
-        @Override
-        public boolean apply(Entry<?, ?> entry) {
-            return entry.getValue() != null;
-        }
-    }
-
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeRegistry.java Sat Jul 21 15:20:04 2012
@@ -26,11 +26,12 @@ import javax.annotation.Nonnull;
 import javax.jcr.RepositoryException;
 
 import org.apache.jackrabbit.oak.api.ContentSession;
-import org.apache.jackrabbit.oak.util.ArrayUtils;
 import org.apache.jackrabbit.oak.util.TODO;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeDefinition;
 import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeProvider;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * PrivilegeProviderImpl... TODO
  */
@@ -130,7 +131,7 @@ public class PrivilegeRegistry implement
 
         private PrivilegeDefinitionImpl(String name, boolean isAbstract,
                                         String... declaredAggregateNames) {
-            this(name, isAbstract, ArrayUtils.toSet(declaredAggregateNames));
+            this(name, isAbstract, ImmutableSet.copyOf(declaredAggregateNames));
         }
 
         //--------------------------------------------< PrivilegeDefinition >---

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/ArrayUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/ArrayUtils.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/ArrayUtils.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/ArrayUtils.java Sat Jul 21 15:20:04 2012
@@ -17,8 +17,6 @@
 package org.apache.jackrabbit.oak.util;
 
 import java.lang.reflect.Array;
-import java.util.HashSet;
-import java.util.Set;
 
 import javax.annotation.Nonnull;
 
@@ -207,31 +205,4 @@ public class ArrayUtils {
         }
     }
 
-        /**
-     * Check whether an array contains a given element
-     * @param array
-     * @param element
-     * @param <T>
-     * @return {@code true} iff {@code array} contains {@code element}.
-     */
-    public static <T> boolean contains(T[] array, T element) {
-        for (T t : array) {
-            if (element == null && t == null || element != null && element.equals(t)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Convert an array to a set.
-     * @param elements
-     * @param <T>
-     * @return
-     */
-    @Nonnull
-    public static <T> Set<T> toSet(T... elements) {
-        return new HashSet<T>(java.util.Arrays.asList(elements));
-    }
-
 }

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1364113&r1=1364112&r2=1364113&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Sat Jul 21 15:20:04 2012
@@ -66,9 +66,9 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
+import com.google.common.collect.Sets;
+
 import static java.util.Arrays.asList;
-import static org.apache.jackrabbit.oak.util.ArrayUtils.contains;
-import static org.apache.jackrabbit.oak.util.ArrayUtils.toSet;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -1402,16 +1402,16 @@ public class RepositoryTest extends Abst
     public void testNamespaceRegistry() throws RepositoryException {
         NamespaceRegistry nsReg =
                 getSession().getWorkspace().getNamespaceRegistry();
-        assertFalse(contains(nsReg.getPrefixes(), "foo"));
-        assertFalse(contains(nsReg.getURIs(), "file:///foo"));
+        assertFalse(asList(nsReg.getPrefixes()).contains("foo"));
+        assertFalse(asList(nsReg.getURIs()).contains("file:///foo"));
 
         nsReg.registerNamespace("foo", "file:///foo");
-        assertTrue(contains(nsReg.getPrefixes(), "foo"));
-        assertTrue(contains(nsReg.getURIs(), "file:///foo"));
+        assertTrue(asList(nsReg.getPrefixes()).contains("foo"));
+        assertTrue(asList(nsReg.getURIs()).contains("file:///foo"));
 
         nsReg.unregisterNamespace("foo");
-        assertFalse(contains(nsReg.getPrefixes(), "foo"));
-        assertFalse(contains(nsReg.getURIs(), "file:///foo"));
+        assertFalse(asList(nsReg.getPrefixes()).contains("foo"));
+        assertFalse(asList(nsReg.getURIs()).contains("file:///foo"));
     }
 
     @Ignore // TODO implement node type support
@@ -1455,15 +1455,15 @@ public class RepositoryTest extends Abst
 
     @Test
     public void observation() throws RepositoryException, InterruptedException {
-        final Set<String> addNodes = toSet(
+        final Set<String> addNodes = Sets.newHashSet(
                 TEST_PATH + "/1",
                 TEST_PATH + "/2",
                 TEST_PATH + "/3");
 
-        final Set<String> removeNodes = toSet(
+        final Set<String> removeNodes = Sets.newHashSet(
                 TEST_PATH + "/2");
 
-        final Set<String> addProperties = toSet(
+        final Set<String> addProperties = Sets.newHashSet(
                 TEST_PATH + "/property",
                 TEST_PATH + "/prop0",
                 TEST_PATH + "/1/prop1",
@@ -1473,10 +1473,10 @@ public class RepositoryTest extends Abst
                 TEST_PATH + "/3/jcr:primaryType",
                 TEST_PATH + "/3/prop3");
 
-        final Set<String> setProperties = toSet(
+        final Set<String> setProperties = Sets.newHashSet(
                 TEST_PATH + "/1/prop1");
 
-        final Set<String> removeProperties = toSet(
+        final Set<String> removeProperties = Sets.newHashSet(
                 TEST_PATH + "/1/prop2",
                 TEST_PATH + "/2/jcr:primaryType");
 
@@ -1564,18 +1564,18 @@ public class RepositoryTest extends Abst
 
     @Test
     public void observation2() throws RepositoryException, InterruptedException {
-        final Set<String> addNodes = toSet(
+        final Set<String> addNodes = Sets.newHashSet(
                 TEST_PATH + "/1",
                 TEST_PATH + "/2");
 
-        final Set<String> removeNodes = toSet(
+        final Set<String> removeNodes = Sets.newHashSet(
                 TEST_PATH + "/1");
 
-        final Set<String> addProperties = toSet(
+        final Set<String> addProperties = Sets.newHashSet(
                 TEST_PATH + "/1/jcr:primaryType",
                 TEST_PATH + "/2/jcr:primaryType");
 
-        final Set<String> removeProperties = toSet(
+        final Set<String> removeProperties = Sets.newHashSet(
                 TEST_PATH + "/1/jcr:primaryType");
 
         final List<Event> failedEvents = new ArrayList<Event>();