Hi,

looking through the JavaDoc comments in the Visitor interface, it looks like we 
added additional methods in the 6.0 release. 6.0 was a major release but 
without package and maven coords change. Seems like we accepted this kind of 
changes for 6.0. I’m not sure what point I’m trying to make here… But the whole 
versioning/api evolution thingy looks pretty messy in BCEL.

Cheers,
Benedikt

> Am 30.08.2017 um 16:37 schrieb Gary Gregory <garydgreg...@gmail.com>:
> 
> We recently dealt with this kind of compatibility issue in Log4j 2 and we
> decided to subclass the interface in question. I suggest we do the same
> here. Not pretty but it is type safe and bullet-proof.
> 
> Gary
> 
> On Tue, Aug 29, 2017 at 5:17 AM, sebb <seb...@gmail.com> wrote:
> 
>> On 28 August 2017 at 20:07, Gary Gregory <garydgreg...@gmail.com> wrote:
>>> The question is whether this breaks binary compatibility. If it does,
>> this
>>> needs fixing. Unless there are other important changes that warrant a
>> major
>>> version, I would go the sub-interface route; ugly, but workable within
>> the
>>> same major release.
>> 
>> According to [1], it seems it does not.
>> 
>> However it will break source compatibility if a 3rd party implements
>> the interface.
>> 
>> Also I seem to remember there were some concerns about the downstream
>> effect for 3rd party visitor implementations.
>> 
>> IIRC it was that BCEL will expect to be able to invoke the new
>> methods; this will fail.
>> There may be ways around this by catching the exception.
>> 
>> The dev list should have the details.
>> 
>> [1] https://docs.oracle.com/javase/specs/jls/se8/html/jls-13.html
>> 
>>> Gary
>>> 
>>> On Mon, Aug 28, 2017 at 12:58 PM, Benedikt Ritter <brit...@apache.org>
>>> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> Rev. 1782852 [1] has introduced two breaking changes by adding the
>> methods:
>>>> 
>>>> public void visitAnnotation(org.apache.bcel.classfile.Annotations)
>>>> public void visitAnnotationDefault(org.apache.bcel.classfile.
>>>> AnnotationDefault)
>>>> 
>>>> to the interface org.apache.bcel.classfile.Visitor. The commit comment
>>>> indicates that these changes are needed by the Tomcat project. How do we
>>>> want to deal with this for the upcoming 6.1 release? I see several
>> options:
>>>> 
>>>> - accept these changes and make it explicit in release notes
>>>> - add a new interface which extends from the Visitor interface and add
>> the
>>>> new methods to that interface
>>>> - major version bump (probably not the best idea…)
>>>> 
>>>> Thoughts?
>>>> Benedikt
>>>> 
>>>> [1] http://svn.apache.org/viewvc?view=revision&revision=1782852 <
>>>> http://svn.apache.org/viewvc?view=revision&revision=1782852>
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to