Your argument makes perfect sense, except that [lang] also wants to be the
lowest level, no dependency library. This is why functors are could reside
in [lang], so this kind of cross dependency isn't an issue.

I agree that bean based functors would sit in [beanutils], and io based
functors in [io].

The only [lang] possible functors I can think of was type conversion, but
that could alternatively sit as a separate component in its own right.

Stephen


----- Original Message -----
From: "Tom Drake" <[EMAIL PROTECTED]>
> I think we agree on just about everything, excepting
> dependancies between [functor] and [lang].
>
> I'm not very familiar with the scope of [lang] so take
> my comments with a grain of salt.
>
> My point is that [functor] (defined as having no
> dependancies on any other apache project) represents
> a set of concepts that are completely orthogonal to the
> other packages. All other packages should be free to use
> [functor] w/out having to worry about circular dependencies.
>
> As long as [functor] is scoped with this minimalist view,
> then this is easily achievable.
>
> Implementations of [functor] interfaces that require [lang]
> should be placed in [lang]. Implementations depending on [beanutils]
> belong in [beanutils].
>
> -----Original Message-----
> From: Henri Yandell [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, December 12, 2002 11:55 AM
> To: Jakarta Commons Developers List
> Subject: RE: [collections][lang] Functors, pre-vote
>
>
>
>
>
> On Thu, 12 Dec 2002, Tom Drake wrote:
>
> > Has anyone considered that all functor implementations
> > do not belong in [functor].
>
> I actually don't see any reasons yet why all functor implementations don't
> belong in functor [or the place where the interfaces/core impls are],
> apart from release issues, in which case the implementation can just be
> private in the other lib.
>
> Any implementations of functor which are only dependent on functor should
> be in functor.
>
> An implementation such as in [io] now definitely belongs in [io] as it is
> to do with FileFilters.
>
> > If [functor] contains the functor interfaces, as well as
> > selected dependency-free implementation and utility classes.
>
> > Then, if [lang], [collections], or [foo] wants to use them they are free
> > to, without worrying about dependency hell. If [lang] has a need
> > to create a [lang]-specific Predicate or Transformer, then they
> > should go right ahead and create it somewhere under [lang], introducing
> > a dependancy on [functor].
>
> Lang depending on functor should raise alarm bells. Let's take JDK as an
> example:
>
> java.lang is pretty core right?
>
> java.util is also pretty common. java.util obviously depends on java.lang.
> Does java.lang depend in anyway on java.util??? I wouldn't rule the chance
> out.
>
> So circular dependency.
>
> Now look at Lang. It's do do with java.lang things. Everyone uses
> java.lang things, so there's no package which could not have a desire to
> be dependent on Lang.
>
> Thus:  Functor dependent on Lang is a concept which must be protected.
>
> Now, we're saying that Functor things are these really standard interfaces
> that any code which matches the code signature will probably want to
> consider having.
>
> If Lang happens to have such things, then bang. That's our circular
> dependency. So the hope is that something like Lang does not have a
> dependency on Functor.
>
> Collections doesn't care, it'll depend on both libraries. Same for IO and
> other things out there.
>
> [Equally, assuming it's okay for Commons Lang to use java.util.Vector etc,
> why can't Commons Lang depend on Commons Collection? Except that I've
> already declared that every library should protect the possibility of a
> Lang dependency]
>
> > By way of example, I submitted a BeanPropertyTransformer class
> > (as part of a large submission) a week or so ago. This class
> > implements Transformer, but uses PropertyUtils to transform the
> > Object into a 'named' bean property. Such an implementation class
> > probably doesn't belong in [collections] or [functor], but perhaps
> > belongs with [beanutils]. However, adding it to [beanutils] creates
> > a dependancy on [functor].
>
> This isn't a functor implementation in my view. Maybe I'm belabouring a
> point. It's a Bean implementation which fits the functor standard. The
> same way that BeanComparator is in BeanUtils and not in Collections.
>
> Your class should be in BeanUtils, and as Functor is a higher-priority
> package in dependency terms [i need to define the concept of priority here
> somehow] then BeanUtils should depend on Functor.
>
> > So, I guess I'm saying that the charter for [functor] should
> > stipulate that no external dependancies may be present. This being
> > the case, everything that needs a functor interface, or one of it's
basic
> > implementation classes, it simply depends on [functor]. If it needs a
> > functor implementation that exists in some other package (like [lang])
> > then it must depend on that other package.
>
> I claim that Functor should depend on Lang. In fact, Lang should not
> depend on anything else ;)
>
> > Such a stipulation guarantees, to some extent, that [functor] will
> > always be fairly compact, since it may not contain any dependencies
> > on any other org.apache package.
>
> *nod* Except functor isn't unique in its specialness.
>
> Hen
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>


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

Reply via email to