<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:54:44 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-940] Refactor SchemaAwareApplyOperation</title>
                <link>https://jira.opendaylight.org/browse/YANGTOOLS-940</link>
                <project id="10188" key="YANGTOOLS">yangtools</project>
                    <description>&lt;p&gt;Judging from the current state of SchemaAwareApplyOperation and its subclasses, it seems the various specializations have resulted in quite a bit of pasta.&lt;/p&gt;

&lt;p&gt;This is a maintenance burden, as the various overrides and especially the AutomaticLifecycleMixin indirection causes quite a few turns to be taken to track down what exactly goes on when.&lt;/p&gt;

&lt;p&gt;It also leads to a lot of method overrides which essentially perform either argument adaptation, or check the results of their super operation. This is notably true for min/max validation, AutomaticLifecycleMixin (and its users) and MandatoryLeafEnforcer. This leads to megamorphic execution profile, where the compiler has to deal with various method invocations in different call sites.&lt;/p&gt;

&lt;p&gt;It seems the code structure should be amenable to splitting the various aspects of&#160;SchemaAwareApplyOperation into specialized interfaces (or abstract classes), and then composing individual implementations from these aspects.&lt;/p&gt;

&lt;p&gt;Most notably we should strive for having each aspect implemented in two implementations: one for the &apos;common path&apos; and one forwarding/decorating. This should make the code flows more straightforward, as it becomes clear what the actual interactions are and what special-cases we are performing.&lt;/p&gt;

&lt;p&gt;Having two implementations will also mean method invocation will become bimorphic, which is something HotSpot can handle really well.&lt;/p&gt;</description>
                <environment></environment>
        <key id="31359">YANGTOOLS-940</key>
            <summary>Refactor SchemaAwareApplyOperation</summary>
                <type id="10000" iconUrl="https://jira.opendaylight.org/images/icons/issuetypes/epic.svg">Epic</type>
                                            <priority id="3" iconUrl="https://jira.opendaylight.org/images/icons/priorities/major.svg">Medium</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>
                    </labels>
                <created>Tue, 29 Jan 2019 16:59:42 +0000</created>
                <updated>Mon, 25 Feb 2019 09:06:24 +0000</updated>
                                                                            <component>data-impl</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|i03mef:</customfieldvalue>

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