<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 20:09:09 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-229] mdsal-dom-api: get rid of CheckedFuture</title>
                <link>https://jira.opendaylight.org/browse/MDSAL-229</link>
                <project id="10137" key="MDSAL">mdsal</project>
                    <description>&lt;p&gt;CheckedFuture is being removed from Guava, which means that we need to make an API-incompatible change before we can upgrade.&lt;/p&gt;

&lt;p&gt;mdsal-dom-api is one of the affected APIs, which needs cooperation with downstreams.&lt;/p&gt;</description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="27051">MDSAL-229</key>
            <summary>mdsal-dom-api: get rid of CheckedFuture</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="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="tpantelis">Tom Pantelis</assignee>
                                    <reporter username="rovarga">Robert Varga</reporter>
                        <labels>
                    </labels>
                <created>Wed, 25 Jan 2017 20:46:42 +0000</created>
                <updated>Mon, 6 Aug 2018 08:28:48 +0000</updated>
                            <resolved>Mon, 6 Aug 2018 08:28:48 +0000</resolved>
                                                    <fixVersion>Fluorine</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="54577" author="rovarga" created="Thu, 26 Jan 2017 13:23:28 +0000"  >&lt;p&gt;We have three options here:&lt;/p&gt;

&lt;p&gt;1) The approach we have taken in Binding V2, where we have an explicit callback interface of two methods&lt;/p&gt;

&lt;p&gt;2) Augment 1) with using BiConsumer&amp;lt;Throwable, T result&amp;gt;, allowing the use of lambdas, but having callers having to check failures first&lt;/p&gt;

&lt;p&gt;3) Switch to using java.util.CompletionStage&lt;/p&gt;

&lt;p&gt;Options 1&amp;amp;2 have the benefit of not being tied to a particular Future-like contract, hence are open to bridging:&lt;/p&gt;

&lt;p&gt;RpcService s;&lt;br/&gt;
CompletableFuture&amp;lt;T&amp;gt; f = new CompletableFuture();&lt;/p&gt;

&lt;p&gt;s.invokeRpc(..., (t, r) -&amp;gt; {&lt;br/&gt;
    if (t != null) &lt;/p&gt;
{
        f.completeExceptionally(t);
    }
&lt;p&gt; else &lt;/p&gt;
{
        f.complete(r);
    }
&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;With the same approach being possible for Guava, Scala and others. It also does not give semblance of having a synchronous get() interface.&lt;/p&gt;

&lt;p&gt;CompletionStage is similarly flexible, with converters for Scala being readily available &amp;#8211; but has one wrinkle, that of CompletionStage#toCompletableFuture(). That method exposes complete(), which is not appropriate and can actually be not implemented. This would leave us vulnerable to users assuming CompletionStages can be converted and that being broken when a different implementation is substituted.&lt;/p&gt;

&lt;p&gt;I think I prefer #2 as the core API with a library of utilities bridging callbacks to popular Future-likes:&lt;/p&gt;

&lt;p&gt;RpcService s:&lt;br/&gt;
ListenableFuture&amp;lt;T&amp;gt; f = GuavaRpcServiceAdaptor.invokeRpc(s, ...);&lt;/p&gt;

&lt;p&gt;where GuavaRpcServiceAdaptor will provide briding to the future, which can then be composited as usual.&lt;/p&gt;</comment>
                            <comment id="62768" author="opendaylight.release" created="Thu, 3 May 2018 10:08:13 +0000"  >&lt;p&gt;Since the bug is unassigned I&apos;m currently assigning it to you.&lt;/p&gt;

&lt;p&gt;Please assign to the relevant person.&#160;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="27105">MDSAL-283</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="27106">MDSAL-284</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="29829">MDSAL-337</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_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7684</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=7684]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10206" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Issue Type</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10318"><![CDATA[Change Request]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10204" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>ODL SR Target Milestone</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10320"><![CDATA[Nitrogen]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02x3z:</customfieldvalue>

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