----- Original Message -----
From: "Victor Volle" <[EMAIL PROTECTED]>
To: "Jakarta Commons Developers List" <[EMAIL PROTECTED]>
Sent: Saturday, November 09, 2002 12:22 PM
Subject: Re: [clazz] draft reflect implementation
> Dmitri,
>
> your work looks very promising!
> I especially like the Idea, that I just have to
> overwrite a method in ReflectScalarPropertyIntrospector
> to match other methods as read/write methods.
>
> There are (currently) two things I do not
> quite understand. As far as I can see,
> all Introspectors scan the complete
> set of available methods. Would it be possible
> to have a list of (pluggable) introspectors like and
> a single loop over all methods. Something like this:
>
> for (int mc = 0; mc < methods.length; mc++){
> Method method = methods[mc];
> for ( int ic = 0; ic < introspectors.length; ic++ ) {
> ReflectedPropertyIntrospector inspector = inspectors[mc];
> inspector.checkMethod( method, ..., parseResults );
> }
> }
I will consider this very seriously. I think it is a good idea.
>
> Second, I am not sure that the methods
>
> addClazzLibrary(), getClazz(), constructLibraryArray
>
> and so on, should be part of the Class Clazz.
> They probably belong to a Class Model or something
> like that.
Sure, I could factor them out.
>
> Victor
>
> PS: I am hesitating to offer my help, yet (besides criticism :-))
> because I am still not sure that I can use it for my own project
> and I would like to wait for the "dust to settle".
Critisizm is in fact extremely valuable help. What I want to know
is what you think needs to be done in clazz for it to be useful for your
project.
Thanks,
- Dmitri
> > I am not really done with the first draft yet, but since I will have to
> > take about a week off from clazz, I wanted to commit what
> > I have done so far and give you a chance to look it over.
> >
> > My initial focus was on implementing functionality equivalent to
> > that of java.beans.Introspector. There are several pretty cool
> > improvements over the Introspector:
> >
> > 1. Highly customizable design.
> >
> > - You can add new ClazzLibraries for new kinds of Clazzes. So far
> > there is only one such library, ReflectClazzLibrary, but more are
> > coming.
> >
> > - You can add new ClazzLoaders to customize Clazz generation for
> > individual clazzes or groups of clazzes.
> >
> > - In the case of Reflected clazzes, you can change the way accessor
> > methods are bound to properties. For example, if you want to make
> > read methods look like "readFoo()" instead of "getFoo()", it is a matter
> > of overriding one method on ReflectScalarPropertyIntrospector.
> >
> > - In the case of Reflected clazzes, you can add new categories of
> > properties. The default list of categories consists of List (which
> > works for Lists as well as arrays), Mapped and Scalar properties.
> >
> > 2. In the case of ReflectedClazzes, richer mapping of accessors to
> > properties: methods like getFoo(int), setBar(key,value), getFooKeySet()
> > etc are recognized.
> >
> > 3. If a property is Mapped, the corresponding clazzProperty.get()
> > returns a Map, even if all the bean defines is a bunch of accessor
> > methods like getFoo(key). The Map implementation returned by
> > clazzProperty will invoke those accessors if they exist (see the
> > ReflectedMap).
> >
> > 4. Similarly, if a property is a List or an array, the corresponding
> > value is a List (see ReflectedList).
> >
> > 5. Powerful diagnostic facility that optionally prints details of
> > introspection. You won't have to wonder any more: "how come it does
> > not see my property 'foo'". I have attached a sample diagnostic log.
> > Check it out, it's pretty cool.
> >
> > The implemented functionality comes with tests, but as you will see not
> > all functionality is implemented yet.
> >
> > Don't look for ATTRIBUTES, DELEGATORS or BEAN stuff yet - I'll get to
> > that in a week or so.
> >
> >
> > - Dmitri
> >
> >
>
>
> --
> To unsubscribe, e-mail:
<mailto:commons-dev-unsubscribe@;jakarta.apache.org>
> For additional commands, e-mail:
<mailto:commons-dev-help@;jakarta.apache.org>
>
>
>
--
To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>