X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Fbuilder%2Fimpl%2FImmutableLeafNodeBuilder.java;h=1229b04460ac6e2758f008700b848be221bab333;hb=970923b5f47f7507ec78021965fa5df1a878af48;hp=f466ed3929edf8bfc3a5c072c69d36b9f8f8c510;hpb=6e5d0f5533b9c7eb029f477a5fe2f74b0c8882e8;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 f466ed3929..1229b04460 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,38 +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.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); + } + + @Override + protected final Class> implementedType() { + return (Class) LeafNode.class; + } + } - ImmutableLeafNode(InstanceIdentifier.NodeIdentifier nodeIdentifier, T value) { + private static final class ImmutableBinaryLeafNode extends ImmutableLeafNode { + ImmutableBinaryLeafNode(final NodeIdentifier nodeIdentifier, final byte[] value) { super(nodeIdentifier, value); } @Override - public String toString() { - final StringBuffer sb = new StringBuffer("ImmutableLeafNode{"); - sb.append("nodeIdentifier=").append(nodeIdentifier); - sb.append(", value=").append(value); - sb.append('}'); - return sb.toString(); + protected byte[] wrapValue(final byte[] valueToWrap) { + return valueToWrap.clone(); } } }