ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Mashenkov <andrey.mashen...@gmail.com>
Subject Re: Ensure that builder approach is used for all setters in public API
Date Fri, 03 Feb 2017 12:03:59 GMT
I've found no restriction on return type in MBeans spicification [1]:

A *setter* is any public method that takes a single parameter and whose
name begins with set.


[1] https://docs.oracle.com/javase/tutorial/jmx/mbeans/standard.html


On Fri, Feb 3, 2017 at 11:24 AM, Andrey Mashenkov <
andrey.mashenkov@gmail.com> wrote:

> Vladimir,
>
> Ok. I'll go ahead with changing SPI interfaces and run TC test.
> I think, it would be better to have this branch merged to master as 2
> separate commits at least.
> And may be we should make changes of SPI interfaces in separate Jira
> ticket?
>
> On Fri, Feb 3, 2017 at 11:08 AM, Vladimir Ozerov <vozerov@gridgain.com>
> wrote:
>
>> Andrey,
>>
>> This is very important change from usability standpoint. But my main
>> concern is changes to SPI *interfaces*. If we do so users who implemented
>> custom SPIs will have broken compatibility. On the other hand, I doubt
>> there will be too much affected users, and we break compilation in AI 2.0
>> anyway. So looks like we can go ahead with it.
>>
>> Thoughts?
>>
>> On Fri, Feb 3, 2017 at 7:46 AM, Valentin Kulichenko <
>> valentin.kulichenko@gmail.com> wrote:
>>
>> > My only concern is MBean interfaces. These are not called from code, but
>> > from MBean viewers, and I'm not sure setters not returning voids will be
>> > properly treated as setters by these viewers. This needs to be checked.
>> >
>> > -Val
>> >
>> > On Thu, Feb 2, 2017 at 8:32 PM, Andrey Mashenkov <
>> > andrey.mashenkov@gmail.com
>> > > wrote:
>> >
>> > > Val,
>> > >
>> > > Yes, you are right. I don't think we should care about compilation
>> > > error on user side, as we break compatibility with previous versions.
>> > > But we talk about public interfaces and may be someone has some cons
>> > > or suggestions?
>> > >
>> > > On Fri, Feb 3, 2017 at 5:31 AM, Valentin Kulichenko <
>> > > valentin.kulichenko@gmail.com> wrote:
>> > >
>> > > > Andrey,
>> > > >
>> > > > In which case compatibility is broken? If there is a method that
>> > returns
>> > > > void and you change it to return some type, it doesn't break
>> anything,
>> > > > because currently nobody can assign the result of this method to a
>> > > > variable. I.e. in old code the returned value will be always
>> ignored,
>> > > > therefore it can be of any type.
>> > > >
>> > > > Is there anything else that I'm missing?
>> > > >
>> > > > -Val
>> > > >
>> > > > On Thu, Feb 2, 2017 at 3:49 AM, Andrey Mashenkov <
>> > > > andrey.mashenkov@gmail.com
>> > > > > wrote:
>> > > >
>> > > > > Hi Igniters,
>> > > > >
>> > > > >
>> > > > > I'm working on IGNITE-4564 [1] to make our configuration classes
>> and
>> > > SPI
>> > > > > classes more convenient.
>> > > > >
>> > > > > There is no problem to change return type in setter method
>> signatures
>> > > > > and override methods in child child classes to make them return
>> more
>> > > > > accurate type.
>> > > > >
>> > > > > But, I found that we have set methods in some of our interfaces
>> and
>> > > > > changing its signature may broke compatibility with user
>> > > implementations.
>> > > > >
>> > > > > Here are example interfaces with setters:
>> > > > > org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyMBean
>> > > > > org.apache.ignite.cache.eviction.igfs.IgfsPerBlockLruEvictio
>> nPolicyM
>> > > > XBean
>> > > > > org.apache.ignite.cache.eviction.lru.LruEvictionPolicyMBean
>> > > > > org.apache.ignite.cache.eviction.sorted.SortedEvictionPolicyMBean
>> > > > > org.apache.ignite.spi.checkpoint.CheckpointSpi
>> > > > > org.apache.ignite.spi.collision.CollisionSpi
>> > > > > org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollision
>> SpiMBean
>> > > > >
>> > > > > However we have interfaces with NO setters
>> > > > > org.apache.ignite.spi.loadbalancing.adaptive.
>> > > > > AdaptiveLoadBalancingSpiMBean.
>> > > > >
>> > > > > What can we do with it?
>> > > > > Change signature of setters without regarding compatibility?
Or
>> may
>> > be
>> > > it
>> > > > > is possible to remove setters from some interfaces?
>> > > > >
>> > > > > Thought?
>> > > > >
>> > > > >
>> > > > > [1] https://issues.apache.org/jira/browse/IGNITE-4564
>> > > > >
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > С уважением,
>> > > Машенков Андрей Владимирович
>> > > Тел. +7-921-932-61-82
>> > >
>> > > Best regards,
>> > > Andrey V. Mashenkov
>> > > Cerr: +7-921-932-61-82
>> > >
>> >
>>
>
>
>
> --
> С уважением,
> Машенков Андрей Владимирович
> Тел. +7-921-932-61-82
>
> Best regards,
> Andrey V. Mashenkov
> Cerr: +7-921-932-61-82
>



-- 
С уважением,
Машенков Андрей Владимирович
Тел. +7-921-932-61-82

Best regards,
Andrey V. Mashenkov
Cerr: +7-921-932-61-82

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message