-
Task
-
Resolution: Done
-
High
-
None
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.
- blocks
-
NETCONF-1215 Mandatory attributes in RPC input are not honoured
- Confirmed
-
YANGTOOLS-1242 Split up yang-data-impl
- Confirmed
-
YANGTOOLS-1307 Correctly tag missing key violations
- Confirmed
- relates to
-
YANGTOOLS-980 Expand DataSchemaContextTree capabilities
- Confirmed