On 11/29/11 10:20 AM, Galder ZamarreƱo wrote:
Hmmm, why do you need to break API here?
Couldn't you maintain the current API and add?:
void Message.setMsgFlag(short flag)
void Message.clearMsgFlag(short flag)
boolean Message.isMsgFlagSet(short flag)
The problem here is that if you call Message.setFlag(byte flag) with
Message.OOB, you'll have to change your code anyway, namely narrow the
short to a byte.
Any new flags you add could be added to Message or a different
interface and define them as short?
I think you can avoid breaking old clients here. Also, I don't think it's good to
break such API in 3.1, should have been done in 3.0 :)
No shit ? That's why I sent this email !$%#$ :-)
On Nov 28, 2011, at 5:38 PM, Bela Ban wrote:
> FYI
>
> -------- Original Message --------
> Subject: [jgroups-dev] Incompatible change in 3.1.0
> Date: Mon, 28 Nov 2011 17:36:49 +0100
> From: Bela Ban<belaban(a)yahoo.com>
> To: jg-users<javagroups-users(a)lists.sourceforge.net>, jg-dev
> <javagroups-development(a)lists.sourceforge.net>
>
> I'm working on an issue that requires a change in Message and
> RequestOptions: I want to change the 'flags' field from a byte to a
> short. I'd changethe follwoing methods and fields:
>
> - Message.OOB, DONT_BUNDLE, NO_FC, SCOPED, NO_RELIABILITY,
> NO_TOTAL_ORDER, NO_RELAY would become a short from a byte
>
> - void Message.setFlag(byte flag) --> void Message.setFlag(short flag);
> - void Message.clearFlag(byte flag) --> void Message.clearFlag(short flag)
> - boolean Message.isFlagSet(byte flag) --> boolean
> Message.isFlagSet(short flag)
>
> A typical use case such as:
>
> Message msg=new Message(...);
> msg.setFlag(Message.OOB);
>
> would *not* require any change at all.
>
> However, if you have:
>
> byte flags=Message.OOB;
> msg.setFlag(flags);
>
> This wouldn't work as 'flags' would have to be a short (or downcast to a
> byte).
>
> Also, in RequestOptions, the 'flags' field would have to be changed to a
> short (from a byte). RequestOptions.setFlags()/getFlags()/clearFlags()
> would be affected. Again, typical code like this:
> RequestOptions opts=new RequestOptions(ResponseMode.GET_ALL, 5000,
> false).setFlags(Message.OOB)
>
> would not have to be changed at all.
>
>
> What do people think ? I know this is an API change, although a minor
> one, and I wanted to see if anyone's code would break.
>
> I checked Infinispan (master) and this doesn't cause any code breakage.
>
>
> [1]
https://issues.jboss.org/browse/JGRP-1250
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Galder ZamarreƱo
Sr. Software Engineer
Infinispan, JBoss Cache
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Bela Ban
Lead JGroups (
http://www.jgroups.org)
JBoss / Red Hat