You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Giacomo Pati <gi...@apache.org> on 2003/07/01 20:27:19 UTC

Re: Cocoon 2.1 showstopper?

On Mon, 16 Jun 2003, Carsten Ziegeler wrote:

> Hi,
>
> I think I found a showstopper for 2.1 :( :
> 2.1 is not binary compatible to 2.0.x - if you compile a (sitemap)
> component using 2.0.x and put this into 2.1 it will in most cases
> fail to run. As a simple example, you can use the FileGenerator.class
> from 2.0.x.
>
> Why is this so? Well, the reason is the change from Loggable
> to LogEnabled. If you write your own sitemap component,
> you most likely use the provided abstract classes (e.g. AbstractGenerator
> or ComposerGenerator). In 2.0.4 these classes inherited from
> AbstractLoggable - in 2.1 they inherit from AbstractLogEnabled.
> Both offer the same method but with a different return type,
> so if you use a component compiled for 2.0.4 in 2.1 it looks for the
> getLogger() method of AbstractLoggable and does not find one
> with a matching signature. Bang.
>
> I think, mostly this affects own sitemap components inheriting from
> the provided classes, but of course this can occur with every
> class where we changed from Loggable to LogEnabled.
>
> We could solve this problem for sitemap components but not in
> general, I fear.
>
> So, the question is: do we want to have this kind of compatibility
> or do the users have to recompile (which works of course as we are
> compatible on the source level)?

I would suggest being source level compatible for a minor version change
(2.0 -> 2.1) and binary compatible for a release version change
(ie. 2.0.1 -> 2.0.2). Personally I can live with that easily.

Giacomo