<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:10:06 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[MDSAL-555] Add support for Binding Notification transformers</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-555</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;In Helium Binding APIs there was the provision for reacting to notification subscribers coming in. This was deemed to be an accidental leak and that capability was not brought forward in Lithium+ Binding APIs.&lt;/p&gt;

&lt;p&gt;Aluminium removal of controller APIs is showing that there actually is a valid use case for this API, which is notification transformations.&lt;/p&gt;

&lt;p&gt;This is used in l2switch, which uses the legacy API to lazily register notification listeners, which also act as notification producers: &lt;a href=&quot;https://github.com/opendaylight/l2switch/blob/release/oxygen-sr4/packethandler/implementation/src/main/java/org/opendaylight/l2switch/packethandler/decoders/AbstractPacketDecoder.java#L48&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/opendaylight/l2switch/blob/release/oxygen-sr4/packethandler/implementation/src/main/java/org/opendaylight/l2switch/packethandler/decoders/AbstractPacketDecoder.java#L48&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means they act as functions: they take a notification of some input type and produce a notification of some output type. The lazy bit is a clever optimization, as the input notifications are not listened to until there is somebody interested to receive the output.&lt;/p&gt;

&lt;p&gt;Luckily we have not lost the underlying DOM SPI mechanics, hence we can still reconstruct the capability.&lt;/p&gt;

&lt;p&gt;Design a replacement API, which really needs to work in terms of the transformer being something like:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
@FunctionalInterface
&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; NotificationTransformer&amp;lt;I &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Notification, O &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Notification&amp;gt; &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Function&amp;lt;I, List&amp;lt;? &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; O&amp;gt;&amp;gt; {

}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and being registered something like:&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
&amp;lt;I &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Notification, O &lt;span class=&quot;code-keyword&quot;&gt;extends&lt;/span&gt; Notification&amp;gt; Registration registerNotificationTransformer(&lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;&amp;lt;I&amp;gt; input, &lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;&amp;lt;O&amp;gt; output, NotificationTransformer&amp;lt;I, O&amp;gt; transformer);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;for starters the implementation should react to listeners coming. Downing transformers is currently not needed, but should be doable, provided we can do something about loops (i.e. A-to-B and B-to-A transformers being in existence). Cluster forwarding can make this hard.&lt;/p&gt;</description>
                <environment></environment>
        <key id="32697">MDSAL-555</key>
            <summary>Add support for Binding Notification transformers</summary>
                <type id="10103" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10311&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="2" iconUrl="https://jira.opendaylight.org/images/icons/priorities/critical.svg">High</priority>
                        <status id="10003" iconUrl="https://jira.opendaylight.org/images/icons/status_generic.gif" description="">Confirmed</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Thu, 28 May 2020 18:13:54 +0000</created>
                <updated>Mon, 15 Jan 2024 20:32:29 +0000</updated>
                                                            <fixVersion>14.0.0</fixVersion>
                    <fixVersion>13.0.1</fixVersion>
                                    <component>Binding API</component>
                    <component>Binding runtime</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                        <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03snz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>