velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael McKibben <m...@hihat.net>
Subject Introspection weirdness?
Date Mon, 12 Nov 2001 17:44:59 GMT

Hello, I have run into a problem that I was hoping someone on this list
has seen before. I am using Velocity in a javadoc doclet to generate xml
documentation and the template engine is having trouble introspecting the
com.sun.javadoc.* interfaces. For example, I do something like the
following in the doclet:

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?

Regards,

--mike



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