From: Robert Varga Date: Tue, 27 Aug 2019 14:13:19 +0000 (+0200) Subject: Optimize ImmutableNodes.leafNode() X-Git-Tag: v4.0.0~58 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b6ba37de8e39888262a2bfa21d804cd233990e89;p=yangtools.git Optimize ImmutableNodes.leafNode() This eliminates instantiation of a temporary builder and shortcuts to creating the leaf node directly. Change-Id: I66256b46ef0de1aa3745bb90e70d41a2bd29d419 Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java index 260a28d93d..28310400ac 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java @@ -105,10 +105,7 @@ public final class ImmutableNodes { * @return Leaf node with supplied identifier and value */ public static @NonNull LeafNode leafNode(final NodeIdentifier name, final T value) { - return ImmutableLeafNodeBuilder.create() - .withNodeIdentifier(name) - .withValue(value) - .build(); + return ImmutableLeafNodeBuilder.createNode(name, value); } /** diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java index ee6fa4bd4c..96c2413040 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeBuilder.java @@ -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 return new ImmutableLeafNodeBuilder<>(); } - @Override + @Beta @SuppressWarnings("unchecked") - public LeafNode build() { - final T value = getValue(); + public static @NonNull LeafNode createNode(final NodeIdentifier identifier, final T value) { if (value instanceof byte[]) { - return (LeafNode) new ImmutableBinaryLeafNode(getNodeIdentifier(), (byte[]) value); + return (LeafNode) new ImmutableBinaryLeafNode(identifier, (byte[]) value); } + return new ImmutableLeafNode<>(identifier, value); + } - return new ImmutableLeafNode<>(getNodeIdentifier(), value); + @Override + public LeafNode build() { + return createNode(getNodeIdentifier(), getValue()); } private static final class ImmutableLeafNode