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
ConstructorsConstructorDescriptionInterningLeafSetNodeBuilder(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 TypeMethodDescriptionorg.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>build()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>org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode.Builder<T>withChildValue(T child) 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)
-
Constructor Details
-
InterningLeafSetNodeBuilder
-
-
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:
withNodeIdentifierin interfaceorg.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:
withNodeIdentifierin interfaceorg.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>> - Specified by:
withNodeIdentifierin interfaceorg.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:
withNodeIdentifierin interfaceorg.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:
withValuein interfaceorg.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:
withValuein interfaceorg.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>> - Specified by:
withValuein interfaceorg.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:
withValuein interfaceorg.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:
withChildin interfaceorg.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:
withChildin interfaceorg.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:
withoutChildin interfaceorg.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:
withoutChildin interfaceorg.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder<T,org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode<T>>
-
withChildValue
-
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:
addChildin interfaceorg.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:
removeChildin interfaceorg.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
- Specified by:
buildin interfaceorg.opendaylight.yangtools.yang.data.api.schema.NormalizedNode.Builder- Specified by:
buildin interfaceorg.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>>
-