<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:55:29 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>[YANGTOOLS-1204] Do not subclass NamespaceBehaviour in NamespaceBehaviourWithListeners</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-1204</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;We currently allow, in theory at least, for an IdentifierNamespace to be serviced by differing behaviours. This facility is not used and realistically all behaviours are co-located with their namespaces.&lt;/p&gt;

&lt;p&gt;All lookups are also based on FooNamespace.class, which means do not pass anything useful beyond the identifier &#8211; and ends up being quite weird to use for newcomers. The reactor than has to perform a rather expensive (in relative terms) lookup to acquire the behaviour and execute on it. There is also the annoying matter of ensuring the behaviour registry is correctly populated.&lt;/p&gt;

&lt;p&gt;Introduce an parser.spi.meta.ParserIdentifierNamespace:&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;
&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;interface&lt;/span&gt; ParserNamespace {

    @NonNull NamespaceBehaviour behaviour();
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;as well as an AbstractParserNamespace to form the baseline for all implementations.&lt;/p&gt;

&lt;p&gt;Then turn all parser implementation namespaces into these, eliminating their respective BEHAVIOUR constants instread of singleton INSTANCEs. All callers need to be then converted to pass &apos;FooNamespace.INSTANCE&apos; instread of &apos;FooNamespace.class&apos; in their interactions.&lt;/p&gt;

&lt;p&gt;All of reactor mechanics need to be updated to eliminate the behaviour lookup and and instead just take the behaviour from the instance.&lt;/p&gt;

&lt;p&gt;This will eliminate a chunk of complexity, make things a bit easier to understand, but most importantly will eliminate map-based/recursive behaviour lookups.&lt;/p&gt;</description>
                <environment></environment>
        <key id="33728">YANGTOOLS-1204</key>
            <summary>Do not subclass NamespaceBehaviour in NamespaceBehaviourWithListeners</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</priority>
                        <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Done</resolution>
                                        <assignee username="rovarga">Robert Varga</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                            <label>pt</label>
                    </labels>
                <created>Wed, 13 Jan 2021 16:30:25 +0000</created>
                <updated>Thu, 6 Apr 2023 14:59:30 +0000</updated>
                            <resolved>Thu, 6 Apr 2023 14:59:30 +0000</resolved>
                                                    <fixVersion>11.0.0</fixVersion>
                                    <component>parser</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="71529" author="rovarga" created="Tue, 4 Oct 2022 12:48:27 +0000"  >&lt;p&gt;A further examination reveals that there is one behaviour (SourceSpecificContext.SupportedStatements) which is implemented separately by the reactor, i.e. somewhere different than yang-parser-spi.&lt;/p&gt;

&lt;p&gt;We need to lookup the behaviour in terms of reactor, simply because the ParserNamespace is the contract spec while the NamespaceBehaviour is the implementation of the contract.&lt;/p&gt;

&lt;p&gt;In order to provide this sort of a direct binding all namespace declarations would need to be lifted to yang-parser-rfc7950, which would provide the definitions and implementation based on yang-parser-reactor.&lt;/p&gt;

&lt;p&gt;This needs further thought.&lt;/p&gt;</comment>
                            <comment id="72110" author="rovarga" created="Thu, 6 Apr 2023 12:45:03 +0000"  >&lt;p&gt;So after going through &lt;a href=&quot;https://jira.opendaylight.org/browse/YANGTOOLS-1497&quot; title=&quot;Improve NamespaceBehaviour/NamespaceStorageNode interactions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;YANGTOOLS-1497&quot;&gt;&lt;del&gt;YANGTOOLS-1497&lt;/del&gt;&lt;/a&gt; this gets a lot clearer. At the end of the day, NamespaceBehaviour is the part that is defined by statements and namespaces themselves, but unfortunately it gets muddled by reactor subclassing NamespaceBehaviour for its own purposes (NamespaceBehaviourWithListeners).&lt;/p&gt;

&lt;p&gt;What we actually need to do here is remove this subclassing and make NamespaceBehaviourWithListeners a facade backed by NamespaceBehaviours.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="36818">YANGTOOLS-1497</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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_10002" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>YANGTOOLS-652</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i03wq7:</customfieldvalue>

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