Model-Driven Service Abstraction Layer (MD-SAL)

Overview

MD-SAL provides infrastructure for binding YANG models to Java object model and infrastructure for providing YANG-defined interaction patterns: * Reactive datastore update * RPC and Action invocation * Notification sourcing and delivery

Behavior/Feature Changes

The Binding mapping of type bits YANG statement has been updated to use a dedicated common superinterface, BitsTypeObject. Furthermore individual bits within these classes are now represented as primitive boolean values rather than nullable Boolean objects.

New Features

Both DOMRpcProviderService and RpcProviderService have gained the ability to register single-type and flexible multi-type RPC implementations. RpcConsumerRegistry have gained the ability to access single-RPC handles. These capabilities are based on new codegen feature, which generates @FunctionalInterface interfaces for each individual rpc, similar to how action statements are processed.

Binding code generator now recognizes RFC8040 rc:yang-data extensions and generates corresponding interfaces.

Deprecated Features

NotificationService.registerNotificationListener() method has been deprecated, along with its Binding specification interfaces based on NotificationListener. These will be removed in a future major release.

RpcProviderService.registerRpcImplementation() methods, RpcConsumerRegistry.getRpcService() methods and Binding specification interfaces based on RpcService have been deprecated. These will be removed in a future major release.

Removed Features

No removed features.

Resolved Issues

The following table lists the issues resolved in this release.

Issues resolved in versions 11.0.0 through 11.0.7 (JIRA)

Type

Key

Summary

Resolution

Fix Version(s)

Bug

MDSAL-796

DOMRpcService.registerImplementations() does not work with pre-existing entries

Done

10.0.4, 11.0.1, 9.0.7

Bug

MDSAL-797

Union’s stringValue() does not handle BitsTypeObject

Done

11.0.3

Bug

MDSAL-807

typedef/bits generates invalid code

Done

11.0.4

Bug

MDSAL-811

Notification registration not updated with ‘registerNotificationListeners’

Done

10.0.7, 11.0.6

Improvement

MDSAL-776

Integrate Action with BindingContract

Done

11.0.0

Improvement

MDSAL-673

Add nonnullFoo() getters for non-semantic objects

Done

11.0.0

Improvement

MDSAL-791

Do not track uninteresting bundles

Done

10.0.3, 11.0.0

Improvement

MDSAL-792

Union value classes need to enforce non-null components

Done

10.0.4, 11.0.0

Improvement

MDSAL-744

Map bits type to primitive boolean

Done

11.0.0

Improvement

MDSAL-794

Change mapping of action input/output

Done

11.0.0

Improvement

MDSAL-777

Support single-RPC interfaces in RpcConsumerRegistry and RpcProviderService

Done

11.0.0

Improvement

MDSAL-86

Split up BindingDOMRpcImplementationAdapter

Done

11.0.0

Improvement

MDSAL-743

Add BitsTypeObject

Done

11.0.0

Improvement

MDSAL-806

Add Augmentable.augmentationOrElseThrow()

Done

10.0.7, 11.0.5

Improvement

MDSAL-810

Disambiguate generated classes based on source statement

Done

11.0.6

New Feature

MDSAL-768

Package RFC7317’s iana-crypt-hash module

Done

11.0.0

New Feature

MDSAL-808

Generate NAME constant for ietf-restconf:yang-data interfaces

Duplicate

11.0.5

New Feature

MDSAL-675

Generate structures for RFC8040 yang-data extensions

Done

11.0.5

Sub-task

MDSAL-793

Split out mdsal.binding.dom.codec.impl.loader

Done

11.0.0

Sub-task

MDSAL-786

Remove BindingReflections.isAugmentationChild()

Done

11.0.0

Sub-task

MDSAL-788

Remove BindingReflections.resolveRpc{Input,Output}Class()

Done

11.0.0

Sub-task

MDSAL-787

Remove BindingReflections.findHierarchicalParent()

Done

11.0.0

Task

MDSAL-773

Generate Rpc specializations

Done

11.0.0

Task

MDSAL-541

Switch DOMRpc{Implementation,Result} to work on ContainerNode

Done

11.0.0

Task

MDSAL-775

Do not allow cross-datastore transactions

Done

11.0.0

Task

MDSAL-784

Generate binding codecs in a dedicated namespace

Done

11.0.0

Task

MDSAL-778

Deprecate RpcService and related API contracts

Done

11.0.0

Task

MDSAL-800

Deprecate BindingReflections.getModelRootPackageName()

Done

11.0.3

Task

MDSAL-802

Deprecate DataObjectReadingUtil

Done

11.0.3

Known Issues

The following table lists the known issues that exist in this release.

Issues affecting versions 11.0.0 through 11.0.7 (JIRA)

Type

Key

Summary

Status

Affected Version(s)

Fix Version(s)

Bug

MDSAL-822

DOMDataTreeCommitCohort does not expose EffectiveModelContext

Resolved

10.0.6, 11.0.7

11.0.8, 12.0.0

Bug

MDSAL-828

Fix mdsal-binding-dom-codec module definition

Resolved

10.0.0, 10.0.8, 11.0.0, 11.0.11

11.0.12, 12.0.0

Resolved Issues in SR1

The following table lists the issues resolved in Service Release 1.

Issues resolved in versions 11.0.8 through 11.0.9 (JIRA)

Type

Key

Summary

Resolution

Fix Version(s)

Bug

MDSAL-818

Wildcard KeyedInstanceIdentifier cannot be constructed

Done

10.0.7, 11.0.8, 12.0.0

Bug

MDSAL-822

DOMDataTreeCommitCohort does not expose EffectiveModelContext

Done

11.0.8, 12.0.0

Improvement

MDSAL-821

Annotate generated serialVersionUID with @java.io.Serial

Done

10.0.7, 11.0.8, 12.0.0

Improvement

MDSAL-789

ModuleInfoSnapshot{Builder,Resolver} should propagate supported features

Done

11.0.9, 12.0.0

Known Issues in SR1

The following table lists the known issues that exist in Service Release 1.

Resolved Issues in SR2

The following table lists the issues resolved in Service Release 2.

Issues resolved in versions 11.0.10 through 11.0.12 (JIRA)

Type

Key

Summary

Resolution

Fix Version(s)

Bug

MDSAL-824

Runtime types fail to be generated for ietf-keystore

Done

10.0.8, 11.0.10, 12.0.0

Bug

MDSAL-829

Runtime types fail with leafref typedef and disabled features

Done

11.0.12, 12.0.0

Bug

MDSAL-828

Fix mdsal-binding-dom-codec module definition

Done

11.0.12, 12.0.0

Improvement

MDSAL-790

mdsal-dom-schema-osgi needs to propagate YangFeatureProviders

Done

11.0.10, 12.0.0

Known Issues in SR2

The following table lists the known issues that exist in Service Release 2.

Issues affecting versions 11.0.10 through 11.0.12 (JIRA)

Type

Key

Summary

Status

Affected Version(s)

Fix Version(s)

Bug

MDSAL-838

AbstractPingPongTransactionChain is not idempotent

Resolved

10.0.8, 11.0.12, 12.0.1, 3.0.16, 4.0.17, 5.0.17, 6.0.12, 7.0.14, 8.0.16, 9.0.8

10.0.9, 11.0.13, 12.0.2

Resolved Issues in SR3

The following table lists the issues resolved in Service Release 3.

Issues resolved in versions 11.0.13 through 11.0.15 (JIRA)

Type

Key

Summary

Resolution

Fix Version(s)

Bug

MDSAL-838

AbstractPingPongTransactionChain is not idempotent

Done

10.0.9, 11.0.13, 12.0.2

Known Issues in SR3

The following table lists the known issues that exist in Service Release 3.

Issues affecting versions 11.0.13 through 11.0.15 (JIRA)

Type

Key

Summary

Status

Affected Version(s)

Fix Version(s)

Bug

MDSAL-852

IAE during dynamic proxy instantiation

Resolved

10.0.9, 11.0.15, 12.0.4, 13.0.0

11.0.16, 12.0.5, 13.0.0