commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Kitching <si...@ecnetwork.co.nz>
Subject [digester] local ArrayStack implementation not backwards compatible?
Date Mon, 19 Apr 2004 08:01:17 GMT
Hi all,

There was a recent change by Craig to add a copy of the collections
ArrayStack class into digester to make it independent of collections.

The critical emails seem to be:
http://marc.theaimsgroup.com/?l=jakarta-commons-dev&m=107574718316162&w=2
and
http://www.mail-archive.com/commons-dev@jakarta.apache.org/msg35448.html

While compiling the release notes, and checking for API
incompatibilities between releases, it occurred to me that there is a
backward compatibility issue. Am I right in thinking that when
subclassing a class with "protected" members, if the parent class
implementation changes the type of those members then that is a binary
incompatibility with the subclass?

Below is the draft text I wrote for the release notes.

I don't think these incompatibilities are *too* severe. However given
that we can't drop the Collections library until BeanUtils2.0 anyway,
maybe it makes sense to roll this change back?

Any comments?

PS: I've tested BeanUtils and Digester against collections-3.0, and:
(a) binaries compiled against collections-2.1 complete all tests ok
    when 3.0 is put in the classpath instead of 2.1.
(b) all source compiles against 3.0 fine, and tests run ok.

== Potentially incompatible changes

* ArrayStack
Previously, Digester required the collections library, simply for a
single class: ArrayStack. To avoid depending explicitly on the
commons-collections library, a copy of this class has been made within
the digester library. All places which once used the collections version
now use the digester version. Unfortunately, user classes which subclass
the modified classes may need to be recompiled. The affected classes
are:
  CallParamRule (member bodyTextStack)
  Digester (members bodyTexts, params and stack)
  xmlrules.DigesterRuleParser



Note that the following class *uses* ArrayStack, but because it is
private, not protected I believe there is no issue (?)
  FactoryCreateRule


Regards,

Simon


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


Mime
View raw message