Split out immutable NormalizedNode implementations
Description
Activity
Show:
Done
Details
Details
Assignee
Robert Varga
Robert VargaReporter
Robert Varga
Robert VargaLabels
Components
Fix versions
Priority
Created February 19, 2021 at 7:03 PM
Updated February 6, 2025 at 2:12 PM
Resolved January 5, 2024 at 3:57 PM
Many yang-data-api users are interested only in the immutable NormalizedNode implementation hosted in yang-data-impl. Split it out to yang-data-spi, so it can be used independently of others.
This also entails dealing with Builders and ImmutableNodes classes. The new artifact should only have ImmutableNodes, which provides a superset of methods from Builders and ImmutableNodes.
Furthermore OrderingAware constructs, like MapNode and LeafListNode should have three basic builder factories:
class ImmutableNodes { public static CollectionNodeBuilder<MapEntryNode, ? extends MapNode> mapBuilder(Ordering ordering) { return switch (ordering) { case SYSTEM -> systemMapBuilder(); case USER -> userMapBuilder(); }; } public static CollectionNodeBuilder<MapEntryNode, SystemMapNode> systemMapBuilder() { return ImmutableMapNodeBuilder.create(); } public static CollectionNodeBuilder<MapEntryNode, UserMapNode> userMapBuilder() { return ImmutableUserMapNodeBuilder.create(); } }
Access to individual builders is mediated through NormalizedNode.BuilderFactory and the shapes of builders dictated by NormalizedNode.Builder interface hierarchy.