Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #39211

Re: How to handle methods in a common interface that supports different versions of a message format

Path csiph.com!aioe.org!.POSTED.O5hsyUvK01te0L/SZurVSQ.user.gioia.aioe.org!not-for-mail
From Arne Vajhøj <arne@vajhoej.dk>
Newsgroups comp.lang.java.programmer
Subject Re: How to handle methods in a common interface that supports different versions of a message format
Date Mon, 9 Dec 2019 21:24:30 -0500
Organization Aioe.org NNTP Server
Lines 75
Message-ID <qsmvks$deb$1@gioia.aioe.org> (permalink)
References <2adff0bf-b579-4a12-87bc-70e1fe90a829@googlegroups.com> <qsf3v9$1rqj$1@gioia.aioe.org> <42878753-3e34-4b35-8829-a11f990485d9@googlegroups.com>
NNTP-Posting-Host O5hsyUvK01te0L/SZurVSQ.user.gioia.aioe.org
Mime-Version 1.0
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 8bit
X-Complaints-To abuse@aioe.org
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
Content-Language en-US
X-Notice Filtered by postfilter v. 0.9.2
Xref csiph.com comp.lang.java.programmer:39211

Show key headers only | View raw


On 12/9/2019 2:51 AM, mike wrote:
> Den lördag 7 december 2019 kl. 03:49:27 UTC+1 skrev Arne Vajhøj:
>> On 12/6/2019 2:55 AM, mike wrote:
>>> I would need some advice in the following issue:
>>> 
>>> public interface Netconf {
>>> 
>>> void methodA();
>>> 
>>> void methodB();
>>> 
>>> }
>>> 
>>> The issue I have is that methodA() only supports NETCONF message
>>> 1.0 and methodB() only supports NETCONF message 1.1
>>> 
>>> 1. Is it better to have separate interfaces like: Netconf and
>>> Netconf_1.1 ( better naming?) 2. If we use one interface,
>>> Netconf, and in the implementation we have a property for
>>> netconfVersion should I just throw exception if methodA() is
>>> called and we have set netconfVersion 1.1?
>>> 
>>> Any other considerations I need to do when supporting multiple
>>> versions of a message like NETCONF?
>> 
>> If you want to use proper typing then I like:
>> 
>> public interface Netconf { NetconfVersion getVersion(); }
>> 
>> public interface Netconf10 extends Netconf { void methodA(); }
>> 
>> public interface Netconf11 extends Netconf { void methodB(); }
>> 
>> Having methods that should not be there and that throws an
>> exception is not good IMHO.

> Thanks for the reply. I like the idea. I have a follow-up question:
> 
> Since we only had support for 1.0 user only used Netconf interface.
> Now we will return two types of interfaces Netconf10 or Netconf11.
> This would mean that users using 1.0 (Netconf) now need to use
> Netconf10 in those cases they need Netconf 1.0 specific
> methods.Correct?

If I understand you correctly then your concern is backwards
compatibility.

So if you today have:

public interface Netconf {
     void methodA();
}

public class NetconfFactory {
     public static Netconf getOne() {
         ...
     }
}

and client code:

Netconf nc = NetconfFactory.getOne();
nc.methodA();

Then you will need to either change client code to ref Netconf10 or
use different namings:

interface NetconfBase
interface Netconf extends NetconfBase
interface Netconf11 extends NetconfBase

Arne


Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

How to handle methods in a common interface that supports different versions of a message format mike <mikaelpetterson@hotmail.com> - 2019-12-05 23:55 -0800
  How to handle methods in a common interface that supports different versions of a message format javaXp <n.sharir@gmail.com> - 2019-12-06 04:27 -0800
  Re: How to handle methods in a common interface that supports different versions of a message format Arne Vajhøj <arne@vajhoej.dk> - 2019-12-06 21:49 -0500
    Re: How to handle methods in a common interface that supports different versions of a message format mike <mikaelpetterson@hotmail.com> - 2019-12-08 23:51 -0800
      Re: How to handle methods in a common interface that supports different versions of a message format Arne Vajhøj <arne@vajhoej.dk> - 2019-12-09 21:24 -0500
      Re: How to handle methods in a common interface that supports different versions of a message format Andreas Leitgeb <avl@logic.at> - 2019-12-10 16:41 +0000

csiph-web