Split out immutable NormalizedNode implementations

Description

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.

Activity

Show:
Done

Details

Assignee

Reporter

Labels

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