On 30 August 2017 at 20:11, Benedikt Ritter <brit...@apache.org> wrote:
> 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.

A major version bump does not require changes to package names/maven coords.
It just means that there have been major changes.

However changing package/maven coords is a major change and so
requires a major version bump.

AFAIK 6.0 was binary compatible with the previous release.
That was certainly the intention.

> 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
>

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

Reply via email to