Optimize ImmutableNodes.leafNode() 14/84014/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 27 Aug 2019 14:13:19 +0000 (16:13 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 27 Aug 2019 14:49:53 +0000 (14:49 +0000)
This eliminates instantiation of a temporary builder and shortcuts
to creating the leaf node directly.

Change-Id: I66256b46ef0de1aa3745bb90e70d41a2bd29d419
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java

index 260a28d93ddf83c2269932807cbf442733f43c90..28310400acea3bfd7692dc8547c14fc9863a4847 100644 (file)
@@ -105,10 +105,7 @@ public final class ImmutableNodes {
      * @return Leaf node with supplied identifier and value
      */
     public static <T> @NonNull LeafNode<T> leafNode(final NodeIdentifier name, final T value) {
-        return ImmutableLeafNodeBuilder.<T>create()
-                .withNodeIdentifier(name)
-                .withValue(value)
-                .build();
+        return ImmutableLeafNodeBuilder.createNode(name, value);
     }
 
     /**
index ee6fa4bd4c66704e509d6700c12affd879ce2c8b..96c2413040d9e9f3d01629be2fa2fcac9b3562cf 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl;
 
+import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
@@ -20,15 +21,18 @@ public class ImmutableLeafNodeBuilder<T>
         return new ImmutableLeafNodeBuilder<>();
     }
 
-    @Override
+    @Beta
     @SuppressWarnings("unchecked")
-    public LeafNode<T> build() {
-        final T value = getValue();
+    public static <T> @NonNull LeafNode<T> createNode(final NodeIdentifier identifier, final T value) {
         if (value instanceof byte[]) {
-            return (LeafNode<T>) new ImmutableBinaryLeafNode(getNodeIdentifier(), (byte[]) value);
+            return (LeafNode<T>) new ImmutableBinaryLeafNode(identifier, (byte[]) value);
         }
+        return new ImmutableLeafNode<>(identifier, value);
+    }
 
-        return new ImmutableLeafNode<>(getNodeIdentifier(), value);
+    @Override
+    public LeafNode<T> build() {
+        return createNode(getNodeIdentifier(), getValue());
     }
 
     private static final class ImmutableLeafNode<T>