Index: oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java =================================================================== --- oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (revision 1378912) +++ oak-core/src/main/java/org/apache/jackrabbit/oak/core/TreeImpl.java (working copy) @@ -18,12 +18,8 @@ */ package org.apache.jackrabbit.oak.core; -import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; @@ -65,7 +61,8 @@ /** * Cache for child trees that have been accessed before. */ - private final Children children = new Children(); + private final Map children = + CacheBuilder.newBuilder().weakValues().build().asMap(); private TreeImpl(RootImpl root, TreeImpl parent, String name) { assert root != null; @@ -499,53 +496,6 @@ return !isDirty[0]; } - private static class Children implements Iterable { - - private final Map children = - CacheBuilder.newBuilder().weakValues().build().asMap(); - - private final Lock readLock; - private final Lock writeLock; - - { - ReadWriteLock lock = new ReentrantReadWriteLock(); - readLock = lock.readLock(); - writeLock = lock.writeLock(); - } - - public void put(String name, TreeImpl tree) { - writeLock.lock(); - try { - children.put(name, tree); - } finally { - writeLock.unlock(); - } - } - - public TreeImpl get(String name) { - readLock.lock(); - try { - return children.get(name); - } finally { - readLock.unlock(); - } - } - - public void remove(String name) { - writeLock.lock(); - try { - children.remove(name); - } finally { - writeLock.unlock(); - } - } - - @Override - public Iterator iterator() { - return children.values().iterator(); - } - } - //------------------------------------------------------------< TreeLocation >--- public class NodeLocation implements TreeLocation {