On Mon, 2004-07-26 at 19:13, robert burrell donkin wrote:
> hi simon
> 
> we all agree that the long term solution is to use an ArrayStack  
> packaged as part of digester. in fact, if we new then what we know now  
> about developing libraries, we have done this from the start.
> 
> i also agree that it's a trick and a hack but in my mind, it's the  
> least worst solution.
> 
> ArrayStack is stable and mature. there have been no code changes (that  
> i can see) in the last 18 months  
> (http://cvs.apache.org/viewcvs.cgi/jakarta-commons/collections/src/
> java/org/apache/commons/collections/ArrayStack.java) and there seem to  
> be no substantial ones since the code was donated from Digester. this  
> means that it's very, very unlikely that version problems will occur.
> 
> even setting aside the issue of containers (and the risks of insoluble  
> binary compatibility issues), shipping a binary incompatible version of  
> digester would cause compatibility problems for struts users (and  
> anyone else using a framework dependent on digester). they would not be  
> able to drop the new digester jar in as a replacement for the struts  
> digester dependency. yes, they could recompile the struts release from  
> source but i'm keen to see the new enhancements used as widely as  
> possible. this means binary compatibility.
> 

Ok, so the problem is that lib A (eg struts) depends on Digester 1.5.
And lib B depends on Digester 1.6. And a user app then depends on lib A
and lib B. 

We don't want them to have to find versions of A and B which have been
compiled against the same Digester release. Instead we want to provide a
version of Digester that is compatible with both A and B.

I guess the ugliness is only within BeanUtils, not Digester, in that
BeanUtils is bundling the "alien" class, and Digester just wants the
o.a.c.c.ArrayStack class to be *somewhere* in the classpath. 

Are you intending to have two BeanUtils jars, the "standard" one and an
"extended" convenience jar that tosses in some external classes? With
this, I feel a bit more comfortable about this. After all, users can
still use the latest Digester + the latest BeanUtils "standard" release
+ a normal collections jar, and get exactly the same result as using the
BeanUtils "extended" release + no collections lib. [sorry I haven't been
following the BeanUtils emails more closely].

What is the plan for untangling this later? Will BeanUtils 1.x always
depend on collections, with this "extended" jar option available that
includes the necessary dependencies?

And will the Digester 1.x series be committed to depending on
collections, with the happy coincidence that the BeanUtils "extended"
jar also happens to satisfy Digester's need for commons-collections?

Regards,

Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to