[
https://issues.apache.org/jira/browse/VELOCITY-761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12866583#action_12866583
]
Nathan Bubna commented on VELOCITY-761:
---------------------------------------
createMethodCache gets the interfaces of the class and calls
populateMethodCacheWithInterface(...), which most certainly gets the super
interfaces and recurses up the tree that way too. We even test this out in the
Velocity689TestCase as part of our build process. See VELOCITY-689.
> Can not reference a property declared in a super-interface and implemented in
> a non-public class
> ------------------------------------------------------------------------------------------------
>
> Key: VELOCITY-761
> URL: https://issues.apache.org/jira/browse/VELOCITY-761
> Project: Velocity
> Issue Type: Bug
> Components: Engine
> Affects Versions: 1.6.3
> Reporter: Charles Miller
>
> Consider the following:
> public interface MyUser extends java.security.Principal {
> String getEmailAddress();
> }
> class MyUserImpl implements MyUser {
> public String getName() { ... }
> public String getEmailAddress() { ... }
> }
> If I put a MyUserImpl in my Velocity context, $user.emailAddress will
> resolve, but $user.name will not.
> This is a problem with ClassMap#createMethodCache(). It ignores methods
> declared on the MyUserImpl class because the class is non-public, and it only
> looks up one level in the Interface hierarchy for methods defined on
> interfaces: so it will go up as far as the MyUser interface but not as far as
> the Principal interface.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]