X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Fbuilder%2Fimpl%2FImmutableLeafNodeBuilder.java;h=35450a275a24526e8221d39da171e2d2807de0e3;hb=a7c0733bc9201f67b73196d93792dee582f931fd;hp=60335eb30dd45029e48c4acfad81ea9bbef7076d;hpb=4a5d26c9de475a4cff151ee4255e027211c2eeb4;p=yangtools.git 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 60335eb30d..35450a275a 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,30 +7,54 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +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; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableNormalizedNode; +import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableNormalizedSimpleValueNode; -public class ImmutableLeafNodeBuilder extends AbstractImmutableNormalizedNodeBuilder> { +public class ImmutableLeafNodeBuilder + extends AbstractImmutableNormalizedNodeBuilder> { - protected ImmutableLeafNodeBuilder() { + public static @NonNull NormalizedNodeBuilder> create() { + return new ImmutableLeafNodeBuilder<>(); } - public static NormalizedNodeBuilder> create() { - return new ImmutableLeafNodeBuilder<>(); + @Beta + @SuppressWarnings("unchecked") + public static @NonNull LeafNode createNode(final NodeIdentifier identifier, final T value) { + if (value instanceof byte[]) { + return (LeafNode) new ImmutableBinaryLeafNode(identifier, (byte[]) value); + } + return new ImmutableLeafNode<>(identifier, value); } @Override public LeafNode build() { - return new ImmutableLeafNode<>(nodeIdentifier, value); + return createNode(getNodeIdentifier(), getValue()); } - static final class ImmutableLeafNode extends AbstractImmutableNormalizedNode implements LeafNode { + private static class ImmutableLeafNode + extends AbstractImmutableNormalizedSimpleValueNode, T> implements LeafNode { + ImmutableLeafNode(final NodeIdentifier nodeIdentifier, final T value) { + super(nodeIdentifier, value); + } - ImmutableLeafNode(InstanceIdentifier.NodeIdentifier nodeIdentifier, T value) { + @Override + protected final Class> implementedType() { + return (Class) LeafNode.class; + } + } + + private static final class ImmutableBinaryLeafNode extends ImmutableLeafNode { + ImmutableBinaryLeafNode(final NodeIdentifier nodeIdentifier, final byte[] value) { super(nodeIdentifier, value); } + @Override + protected byte[] wrapValue(final byte[] valueToWrap) { + return valueToWrap.clone(); + } } }