In SLING-5013 the according provider type/consumer type annotations have been 
added to all interfaces except for the annotation types.
In older versions of the maven-bundle-plugin the provider type has been the 
default but now it is consumer type 
(https://github.com/bndtools/bnd/commit/5935e70ba990e40a95e14fb932158ebf8d2225fe).
But testing it out it actually doesn’t make any difference for baselining 
whether any annotation type is marked consumer or provider type. In case I add 
a new element to the type (independent on whether this has a default or not), 
the suggested version upgrade is only minor. The output of the baselining is 
always 

org.apache.sling.models.annotations.injectorspecific minor      1.1.0      
1.1.0      1.2.0      Version increase required
[INFO]      < annotation 
org.apache.sling.models.annotations.injectorspecific.ResourcePath
[INFO]          + method newField()
[INFO]              + access abstract
[INFO]              + return boolean

This is probably because adding a method to an interface does not break 
compatibility 
(https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3, and 
https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.7), but 
in reality all the clients will fail at runtime if the element does not have a 
default value. Is this some corner case, which is just not covered by the 
baselining plugin or have I discovered a bug?
Thanks for your comments on that.
Konrad

Reply via email to