Expand DataSchemaContextTree capabilities

Description

DataSchemaContextTree provides binding between SchemaContext (i.e. effective schema tree) and NormalizedNodes (data tree instantiation), with the current capabilities being limited to walking the trees based either

There are a number of optimizations we can make to NormalizedNodes based on either tree, but since the tree mostly interacts with data, there is a number of services it could provide.

The most notable is an improved version of LeafInterner - unlike the current versions, which needs to be quick, we could spend some time to examine the characteristics of the LeafSchemaNode type to determine whether to intern it - like limited ranges, etc.

It would also be nice to provide proper validation services, such as mandatory node enforcement though we need to differentiate between full validation and incremental validation. The former is useful when a NormalizedNode tree meets a schema-aware component, the latter is useful when a NormalizedNode tree is being built up.

Furtheremore we should consider a capability to trim/introduce LeafNodes and LeafListNodes with default values – so that we can perform proper transformations, either via NormalizedNode reconstitution or via streaming translation (both layered on tom DataSchemaContextTree).

Note this includes evaluation of when/must statements, which opens up it to a quite a chunk of work hence this issue should be analyzed and broken down into reasonable deliverables.

One thing that should be addressed in the first iteration is the use of concurrent maps in DataContainerContextNode.

 

Activity

Show:

Details

Assignee

Reporter

Components

Fix versions

Priority

Created March 30, 2019 at 9:57 PM
Updated last week