Optimize AbstractDataNodeContainerModificationStrategy loader 97/16997/2
authorRobert Varga <rovarga@cisco.com>
Mon, 23 Mar 2015 14:29:33 +0000 (15:29 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 23 Mar 2015 15:55:52 +0000 (16:55 +0100)
The cache loader can be directly instantiated, removing the need for an
intermediate function.

Change-Id: I46329978d93874920adb5b64c00e502418869d6c
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractDataNodeContainerModificationStrategy.java

index a93713e4e1432fb89fe3335ec27feb8d202835a2..af3a9045153e64babfe1750d87d078259e6cbb7a 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema.tree;
 
-import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
@@ -21,6 +20,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Base strategy for applying changes to a ContainerNode, irrespective of its
@@ -29,23 +30,19 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
  * @param <T> Type of the container node
  */
 abstract class AbstractDataNodeContainerModificationStrategy<T extends DataNodeContainer> extends AbstractNodeContainerModificationStrategy {
-
+    private static final Logger LOG = LoggerFactory.getLogger(AbstractDataNodeContainerModificationStrategy.class);
     private final LoadingCache<PathArgument, ModificationApplyOperation> childCache = CacheBuilder.newBuilder()
-            .build(CacheLoader.from(new Function<PathArgument, ModificationApplyOperation>() {
-
+            .build(new CacheLoader<PathArgument, ModificationApplyOperation>() {
                 @Override
-                public ModificationApplyOperation apply(final PathArgument identifier) {
-                    if (identifier instanceof AugmentationIdentifier && schema instanceof AugmentationTarget) {
-                        return SchemaAwareApplyOperation.from(schema, (AugmentationTarget) schema, (AugmentationIdentifier) identifier);
+                public ModificationApplyOperation load(final PathArgument key) throws Exception {
+                    if (key instanceof AugmentationIdentifier && schema instanceof AugmentationTarget) {
+                        return SchemaAwareApplyOperation.from(schema, (AugmentationTarget) schema, (AugmentationIdentifier) key);
                     }
 
-                    DataSchemaNode child = schema.getDataChildByName(identifier.getNodeType());
-                    if (child == null) {
-                        return null;
-                    }
-                    return SchemaAwareApplyOperation.from(child);
+                    final DataSchemaNode child = schema.getDataChildByName(key.getNodeType());
+                    return child == null ? null : SchemaAwareApplyOperation.from(child);
                 }
-            }));
+            });
     private final T schema;
 
     protected AbstractDataNodeContainerModificationStrategy(final T schema, final Class<? extends NormalizedNode<?, ?>> nodeClass) {
@@ -62,6 +59,7 @@ abstract class AbstractDataNodeContainerModificationStrategy<T extends DataNodeC
         try {
             return Optional.<ModificationApplyOperation> fromNullable(childCache.get(identifier));
         } catch (ExecutionException e) {
+            LOG.trace("Child {} not present in container schema {}", identifier, this);
             return Optional.absent();
         }
     }