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 identityref YANG statement has been updated to use singleton objects instead of corresponding .class references. These singleton objects are exposed as VALUE constants, hence the migration is a straightforward move from Foo.class to Foo.VALUE.

Binding classes generated for type enumeration YANG statement now have ofName() and ofValue() methods, which return a non-null object or throw an IllegalArgumentException.

The feature YANG statement now has a representation in Binding: it is a final class which subclasses YangFeature with a singleton value.

New Features

Both DOMNotificationService and NotificationService have gained the ability to register single-type and flexible multi-type notification listerners. This change allows Binding users to implement only specific listeners, unlike the previous method of using generated interfaces extending NotificationListener – which required implementation of methods for every notification defined in a specific module.

Deprecated Features

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

Removed Features

No removed features.

Resolved Issues

The following table lists the issues resolved in this release.

Issues resolved in versions 10.0.0 through 10.0.2 (JIRA)

Type

Key

Summary

Resolution

Fix Version(s)

Bug

MDSAL-756

PingPongTransactionChain’s cancel() always closes underlying chain

Done

10.0.0, 8.0.14, 9.0.3

Improvement

MDSAL-747

Do not shade byte-buddy

Done

10.0.0

Improvement

MDSAL-733

Change ‘type identityref’ Binding representation to normal objects

Done

10.0.0

Improvement

MDSAL-641

Convert mdsal-binding-dom-codec to a JPMS module

Done

10.0.0

Improvement

MDSAL-754

Generate ofName() and ofValue() for enumerations

Done

10.0.0

Improvement

MDSAL-753

Generate a switch expression for enum’s forName()/forValue() methods

Done

10.0.0

Improvement

MDSAL-740

Generate fields for all Identityrefs in an Union binding class.

Done

10.0.0

Improvement

MDSAL-692

Use HexFormat to print out byte[] properties

Done

10.0.0

Improvement

MDSAL-693

Improve TypeObject.toString()

Done

10.0.0

Improvement

MDSAL-755

Improve javadoc of generated classes

Done

10.0.0

Improvement

MDSAL-760

Generate javadoc for unions

Done

10.0.1

Improvement

MDSAL-761

Generate javadoc for augments

Done

10.0.1

Improvement

MDSAL-759

Improve javadoc for generated keys

Done

10.0.1

Improvement

MDSAL-758

Generate javadocs for Builder.withKey()

Done

10.0.1

Improvement

MDSAL-762

Generate javadoc for ScalarTypes

Done

10.0.2

Improvement

MDSAL-769

Reflect identity status in generated classes

Done

10.0.2, 9.0.6

Improvement

MDSAL-770

Reflect feature status in generated classes

Done

10.0.2

New Feature

MDSAL-701

Support for atomic registration of diverse DOMNotificationListeners

Done

10.0.0

New Feature

MDSAL-702

Add support for listening on multiple notifications

Done

10.0.0

New Feature

MDSAL-767

Add support for advertizing supported features

Done

10.0.1

New Feature

MDSAL-766

Generate code for ‘feature’ statements

Done

10.0.1

Task

MDSAL-49

Do not generate Builders for Union types

Done

10.0.0

Task

MDSAL-757

Do not generate @java.beans.ConstructorProperties

Done

10.0.0

Task

MDSAL-704

Do not use IllegalArgumentCodec

Done

10.0.0

Task

MDSAL-496

Deprecate generated notification listener interface

Done

10.0.0

Known Issues

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

Issues affecting versions 10.0.0 through 10.0.2 (JIRA)

Type

Key

Summary

Status

Affected Version(s)

Fix Version(s)

Bug

MDSAL-796

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

Resolved

10.0.0, 10.0.3, 11.0.0, 7.0.0, 7.0.14, 8.0.0, 8.0.16, 9.0.0, 9.0.6

10.0.4, 11.0.1, 9.0.7

Resolved Issues in SR1

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

Issues resolved in versions 10.0.3 through 10.0.5 (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

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

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.

Known Issues in SR1

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