+1

regards,
gerhard



2009/1/18 Matthias Wessendorf <mat...@apache.org>

> On Sun, Jan 18, 2009 at 1:00 PM, Bernd Bohmann
> <bernd.bohm...@atanion.com> wrote:
> > Hello,
> >
> > perhaps the annotation scanning was already solved by openejb?
> > We should try to create a common annotation module for apache projects
> > like openejb, tomcat, cxf and myfaces.
> and openwebbeans
>
> +1
> >
> > Regards
> >
> > Bernd
> >
> >
> >
> > Gerhard Petracek schrieb:
> >> hello,
> >>
> >> i agree with simon.
> >>
> >> regards,
> >> gerhard
> >>
> >>
> >>
> >> 2009/1/18 Simon Lessard <simon.lessar...@gmail.com>
> >>
> >>> Hi again,
> >>>
> >>> Actually, much more packages have to be scanned. The goal of those
> >>> annotation is 0-Config, so a faces-config.xml might not even be needed
> >>> anymore in the libraries. Anyway, before implementing any kind of
> package
> >>> filter, I would wait for the final spec version, as long as the scanner
> is
> >>> designed to easily include such filter if/when the need arise.
> >>>
> >>>
> >>> Regards,
> >>>
> >>> ~ Simon
> >>>
> >>>
> >>> On Sun, Jan 18, 2009 at 11:15 AM, Cagatay Civici <
> cagatay.civ...@gmail.com
> >>>> wrote:
> >>>> I also have some questions for the JSF 2.0 EG, like what classpaths
> >>>>> need to be scanned by default. Or the policy of dealing with runtime
> >>>>> invisible annotations (I can read them, but Reflection cannot). I'm
> >>>>> also interested in general rules regarding class/method signatures.
> >>>>> For example, do you need to implement a specific interface when
> >>>>> annotating a class with @FacesComponent?
> >>>>
> >>>> Afaik, only jars with a faces-config.xml under META-INF are subject to
> >>>> scan in classpath.
> >>>>
> >>>> On Sun, Jan 18, 2009 at 4:01 PM, Jan-Kees van Andel <
> >>>> jankeesvanan...@gmail.com> wrote:
> >>>>
> >>>>>> That sounds great.
> >>>>>>
> >>>>>> What is your general approach? Just read in the class as byte[],
> then
> >>>>>> use the class-file-format rules to get to the annotations sections
> on
> >>>>>> the class and the methods? From my quick scan of the classfile spec
> it
> >>>>>> seemed reasonably easy to do that...
> >>>>>>
> >>>>> This line is the important one:
> >>>>> DataInputStream dis = new DataInputStream(new BufferedInputStream(new
> >>>>> FileInputStream(classFile)));
> >>>>>
> >>>>> The DataInputStream is responsible for delivering the bytecode to me
> >>>>> as easy-to-read ints, shorts and bytes.
> >>>>> The first chapter of this document specifies the relation between the
> >>>>> terms used in the spec and the DataInputStream API.
> >>>>>
> >>>>>
> http://java.sun.com/docs/books/jvms/second_edition/ClassFileFormat-Java5.pdf
> >>>>>
> >>>>> From there it's just reading each field, which is quite cumbersome
> and
> >>>>> hard to get right the first time, because you need to read the spec
> >>>>> very carefully. For example, when reading a double or long, you need
> >>>>> to skip the next byte. Forget this and you get annoying errors, like
> >>>>> EOF or variables that contain nonsense.
> >>>>> But when you get the hang of it, it's not that hard.
> >>>>>
> >>>>>> I'd be interested to know the actual requirements that MyFaces has
> for
> >>>>>> such a scanner. For example, does it ever need to look for
> annotations
> >>>>>> on methods when the class itself is not annotated?
> >>>>>>
> >>>>> I also have some questions for the JSF 2.0 EG, like what classpaths
> >>>>> need to be scanned by default. Or the policy of dealing with runtime
> >>>>> invisible annotations (I can read them, but Reflection cannot). I'm
> >>>>> also interested in general rules regarding class/method signatures.
> >>>>> For example, do you need to implement a specific interface when
> >>>>> annotating a class with @FacesComponent?
> >>>>>
> >>>>>> Your comment about "expose parsed classes" seems to imply that you
> are
> >>>>>> providing some kind of DOM-style API. I would have thought that a
> >>>>>> SAX-style API would be better, ie various bits of code interested in
> >>>>>> annotations registers callbacks for annotations it cares about with
> the
> >>>>>> "scanner". Then the scanner scans all jars in the classpath and when
> >>>>>> something is found that matches a "registered" annotation, then it
> >>>>>> invokes the appropriate callback. That approach would minimise
> memory
> >>>>>> usage, and I can't see where we would need anything dom-like...
> >>>>> Well, for performance reasons you would like a SAX style API, but
> >>>>> afaics, the class file format is not very developer friendly. Maybe
> it
> >>>>> just takes some getting used to, but on first sight, it looks less
> >>>>> intuitive than SAX parsing an XML document. For example, class
> >>>>> attributes are placed below the fields and methods, so you don't know
> >>>>> the class annotations when reading through the fields and methods.
> >>>>> That's not very intuitive for a developer.
> >>>>>
> >>>>> My plan was not to fully initialize the classes, but just fill them
> >>>>> with the bytes read. This way, I get a little bit more structure so I
> >>>>> don't have to think in bits and bytes too much. The heavy work will
> be
> >>>>> done lazily. For example, I don't initialize the classes' fields
> >>>>> unless the user asks for it, probably resulting in less memory usage
> >>>>> and better performance than a fully fledged DOM model.
> >>>>>
> >>>>> But there's only one way to find out and that's implementing and
> testing
> >>>>> it.
> >>>>>
> >>>>> I'm gonna look at a SAX style API. Maybe it's not as bad as I first
> >>>>> thought...
> >>>>>
> >>>>> Regards,
> >>>>>
> >>>>> /Jan-Kees
> >>>>>
> >>>>
> >>
> >>
> >
>
>
>
> --
> Matthias Wessendorf
>
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> twitter: http://twitter.com/mwessendorf
>



-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

Reply via email to