BUG-4261: intern leaf nodes 07/28507/1
authorRobert Varga <rovarga@cisco.com>
Fri, 16 Oct 2015 13:03:22 +0000 (15:03 +0200)
committerRobert Varga <rovarga@cisco.com>
Fri, 16 Oct 2015 13:03:22 +0000 (15:03 +0200)
Look up the interner for leaf nodes based on the current schema node.

Change-Id: Ibd7ebc3affa315c650c3dce1cae7138d9aed43ab
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/LeafNodeBaseParser.java

index f5dc67e1a322e8772d74456eca9f08ab3c162597..09b6ffb0bc344ad51f4802bf53b6f0e4ba02dfb8 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder;
+import org.opendaylight.yangtools.yang.data.util.LeafInterner;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 
 /**
@@ -38,7 +39,7 @@ public abstract class LeafNodeBaseParser<E> implements ExtensibleParser<NodeIden
 
     @SuppressWarnings("unchecked")
     @Override
-    public final LeafNode<?> parse(Iterable<E> elements, LeafSchemaNode schema) {
+    public final LeafNode<?> parse(final Iterable<E> elements, final LeafSchemaNode schema) {
         final int size = Iterables.size(elements);
         Preconditions.checkArgument(size == 1, "Elements mapped to leaf node illegal count: %s", size);
 
@@ -51,7 +52,7 @@ public abstract class LeafNodeBaseParser<E> implements ExtensibleParser<NodeIden
         leafBuilder.withAttributes(getAttributes(e));
 
         final BuildingStrategy rawBuildingStrat = buildingStrategy;
-        return (LeafNode<?>) rawBuildingStrat.build(leafBuilder.withValue(value));
+        return LeafInterner.forSchema(schema).intern((LeafNode<?>)rawBuildingStrat.build(leafBuilder.withValue(value)));
     }
 
     /**