velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael McKibben <m...@hihat.net>
Subject Re: Introspection weirdness?
Date Tue, 13 Nov 2001 03:06:02 GMT
I think I may have found the cause of my woes. It is the implementation of
org.apache.velocity.util.introspection.ClassMap.getAccessibleMethods(Class).

I have attached a patched version which uses java.beans.Introspector, but
perhaps you didn't use this class for a reason? At any rate, it should
give you an idea where to start hunting this bug down.

Regards,

--mike

On Mon, 12 Nov 2001, Geir Magnusson Jr. wrote:

> On 11/12/01 1:28 PM, "Michael McKibben" <mike@hihat.net> wrote:
> 
> > The com.sun.javadoc.* classes are all public interfaces. The actual
> > implementation classes are found in com.sun.tools.javadoc.* and are
> > declared package private. If it would help, I could send you my code and
> > example templates. It's at an early stage, but the code is functional.
> > 
> 
> "Barely creaking along" would be sufficient :)
> 
> I thought we handled this...  Please send - you can send here or to me
> privately - gives me something to do at the hotel tonight...
> 
> 
> > Regards,
> > 
> > --mike
> > 
> > On Mon, 12 Nov 2001, Geir Magnusson Jr. wrote:
> > 
> >> Sorry - really tired :)
> >> 
> >> Didn't read what you wrote - more below...
> >> 
> >> On 11/12/01 1:05 PM, "Michael McKibben" <mike@hihat.net> wrote:
> >> 
> >>> 
> >>> 
> >>>> I assume that isFinal() and isStatic() are public methods?
> >>>> 
> >>>> Geir
> >>>> 
> >>>>>>> 
> >>>>>>> com.sun.javadoc.ClassDoc classDoc = ...
> >>>>>>> velocityContext.put("classDoc", classDoc);
> >>>>>>> 
> >>>>>>> And then in the VTL I try to call methods on the ClassDoc
interface:
> >>>>>>> 
> >>>>>>> <javadoc:class
> >>>>>>> name="$classDoc.qualifiedName()"
> >>>>>>> final="$classDoc.isFinal()"
> >>>>>>> static="$classDoc.isStatic()">
> >>>>>>> ...
> >>>>>>> </javadoc:class>
> >>>>>>> 
> >>>>>>> Here is the weird part. Velocity correctly handles some
of the method
> >>>>>>> class; however it doesn't find the 'isFinal' and 'isStatic'
methods! The
> >>>>>>> only way I can get my template to work correctly is if I
create a
> >>>>>>> wrapper
> >>>>>>> class and delegate the calls to the ClassDoc methods.
> >>>>>>> 
> >>>>>>> This suggests to me that Velocity's introspection is broken.
Looking at
> >>>>>>> the implementation of the com.sun.javadoc.* interfaces,
they are
> >>>>>>> declared
> >>>>>>> package private. This is a common introspection mistake.
The way to
> >>>>>>> handle
> >>>>>>> this case is to call getInterfaces() and replace any public
methods with
> >>>>>>> those found in the implemented interfaces. java.beans.Introspector
> >>>>>>> correctly handles this. Perhaps
> >>>>>>> org.apache.velocity.util.introspection.Introspector should
use this?
> >> 
> >> I guess I am really tired, because I didn't see them as package private. In
> >> 1.4, ClassDoc is public, ProgramElementDoc is public... Where am I missing
> >> it?
> >> 
> >> Are you saying we are getting fooled?
> >> 
> >> -- 
> >> Geir Magnusson Jr.                                     geirm@optonline.net
> >> System and Software Consulting
> >> "They that can give up essential liberty to obtain a little temporary safety
> >> deserve neither liberty nor safety." - Benjamin Franklin
> >> 
> >> 
> >> 
> >> _________________________________________________________
> >> Do You Yahoo!?
> >> Get your free @yahoo.com address at http://mail.yahoo.com
> >> 
> >> 
> >> --
> >> To unsubscribe, e-mail:
> >> <mailto:velocity-user-unsubscribe@jakarta.apache.org>
> >> For additional commands, e-mail:
> >> <mailto:velocity-user-help@jakarta.apache.org>
> >> 
> > 
> > 
> > --
> > To unsubscribe, e-mail:
> > <mailto:velocity-user-unsubscribe@jakarta.apache.org>
> > For additional commands, e-mail:
> > <mailto:velocity-user-help@jakarta.apache.org>
> > 
> 
> -- 
> Geir Magnusson Jr.                                     geirm@optonline.net
> System and Software Consulting
> "He who throws mud only loses ground." - Fat Albert
> 
> 
> _________________________________________________________
> Do You Yahoo!?
> Get your free @yahoo.com address at http://mail.yahoo.com
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:velocity-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:velocity-user-help@jakarta.apache.org>
> 

Mime
View raw message