On Apr 14, 2013, at 0:13 AM, Ferry Huberts <[email protected]> wrote:
> On 13/04/13 23:56, Emily Jiang wrote:
>> I still disagree. As I mentioned in the call, most interfaces will be
>> provider type (implemented by service provider). If we assume them all
>> to be consumer type (listener pattern), we will bump the major version
>> unnecessarily when a new method is added. Our guess will be wrong 99% or
>> even more. I would like to hear what majority people think.
>
> As BJ said, @ConsumerType is the _safe_ guess.
And even that guess is not really safe. I always use the following example to
explain. If you have an interface A:
/* version 1.0 */
interface A {
/* returns true in a certain condition */
boolean check();
}
And in a new version, this interface has been changed like this:
/* version ??? */
interface A {
/* returns false in a certain condition */
boolean check();
}
Then, even though the method signature has not changed in any way, the
semantics of this interface have changed in an incompatible way and a major
bump in versioning is required. There is just no way tools are going to pick up
on this as long as they're just based on Java (byte)code, you actually need to
understand the documentation to understand this. So this is another instance
where you might be in for some unpleasant surprises if you blindly use the
output of such versioning tools.
Greetings, Marcel
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev