> 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 am in favor of functors belonging in lang, _but_ if that makes [collection] and 
others reluctant to use the functors, I realize that they have to be in a 
package/component for themselves.

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

Maybe that is the only way to go. In such cases we have to state for both [functor] 
and [lang] that they may not have any dependencies.

[This increases the need for a bundled distribution of at least what can be considered 
a [core] component (classes needed or useful in almost any context, be it Swing, 
servlets, EJBs, comman-line apps).]

/O




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


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

Reply via email to