Class InterningLeafSetNodeBuilder<T>

java.lang.Object
org.opendaylight.yangtools.yang.data.spi.node.InterningLeafSetNodeBuilder<T>
All Implemented Interfaces:
Mutable, org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>, org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>, org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>, org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument,org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>, org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode.Builder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode.Builder, org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>

public final class InterningLeafSetNodeBuilder<T> extends Object implements org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
Utility class for sharing instances of LeafSetEntryNodes which have low cardinality -- e.g. those which hold boolean or enumeration values. Instances containing attributes are not interned.

Such objects have cardinality which is capped at the product of QNAMES * TYPE_CARDINALITY, where QNAMES is the total number of different QNames where the type is used and TYPE_CARDINALITY is the number of possible values for the type. Boolean has cardinality of 2, enumerations have cardinality equal to the number of enum statements.

The theory here is that we tend to have a large number (100K+) of entries in a few places, which could end up hogging the heap retained via the DataTree with duplicate objects (same QName, same value, different object). Using this utility, such objects will end up reusing the same object, preventing this overhead.

  • Constructor Summary

    Constructors
    Constructor
    Description
    InterningLeafSetNodeBuilder(org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> delegate, com.google.common.collect.Interner<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>> interner)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    addChild(org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T> child)
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    removeChild(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument key)
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    withChild(org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T> child)
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    withNodeIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier nodeIdentifier)
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    withoutChild(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument key)
     
    org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>
    withValue(Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>> value)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • InterningLeafSetNodeBuilder

      public InterningLeafSetNodeBuilder(org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> delegate, com.google.common.collect.Interner<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>> interner)
  • Method Details

    • withNodeIdentifier

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> withNodeIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier nodeIdentifier)
      Specified by:
      withNodeIdentifier in interface org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withNodeIdentifier in interface org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withNodeIdentifier in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withNodeIdentifier in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument,org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • withValue

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> withValue(Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>> value)
      Specified by:
      withValue in interface org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withValue in interface org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withValue in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withValue in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument,org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • withChild

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> withChild(org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T> child)
      Specified by:
      withChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • withoutChild

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> withoutChild(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument key)
      Specified by:
      withoutChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
      Specified by:
      withoutChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • withChildValue

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> withChildValue(T child)
      Specified by:
      withChildValue in interface org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • addChild

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> addChild(org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T> child)
      Specified by:
      addChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument,org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • removeChild

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T> removeChild(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument key)
      Specified by:
      removeChild in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument,org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
    • build

      public org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T> build()
      Specified by:
      build in interface org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode.Builder
      Specified by:
      build in interface org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder<org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier,Collection<org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode<T>>,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>