BUG-4556: enable DataSchemaContextTrees to be scavenged
[yangtools.git] / yang / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / DataSchemaContextTree.java
index e30b5244883d877e26cdec7052e15f1421e55282..4b80edf6861c8267a787e8f8b14fcb226d7b051f 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.util;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
-import java.util.Iterator;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
@@ -18,14 +17,11 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public final class DataSchemaContextTree {
     private static final LoadingCache<SchemaContext, DataSchemaContextTree> TREES = CacheBuilder.newBuilder()
-            .weakKeys()
-            .build(new CacheLoader<SchemaContext, DataSchemaContextTree>() {
-
+            .weakKeys().weakValues().build(new CacheLoader<SchemaContext, DataSchemaContextTree>() {
                 @Override
                 public DataSchemaContextTree load(final SchemaContext key) throws Exception {
                     return new DataSchemaContextTree(key);
                 }
-
             });
 
     private final DataSchemaContextNode<?> root;
@@ -40,9 +36,8 @@ public final class DataSchemaContextTree {
 
     public DataSchemaContextNode<?> getChild(final YangInstanceIdentifier path) {
         DataSchemaContextNode<?> currentOp = root;
-        Iterator<PathArgument> arguments = path.getPathArguments().iterator();
-        while (arguments.hasNext()) {
-            currentOp = currentOp.getChild(arguments.next());
+        for (PathArgument arg : path.getPathArguments()) {
+            currentOp = currentOp.getChild(arg);
         }
         return currentOp;
     }