[
https://issues.apache.org/jira/browse/OGNL-249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14506593#comment-14506593
]
Lukasz Lenart commented on OGNL-249:
------------------------------------
The problem is that the {{getMethods}} uses {{getDeclaredMethods();}} which by
default returns method which are declared in given class, not from interfaces
and inherited classes - that's how they keep backward compatibility.
Anyway, I think it would be good to change the behaviour of {{getMethods}} and
include all the methods and release this as OGNL 3.1
> Ognl.GetMethods does not return default methods in interfaces (new java 8
> feature)
> ----------------------------------------------------------------------------------
>
> Key: OGNL-249
> URL: https://issues.apache.org/jira/browse/OGNL-249
> Project: Commons OGNL
> Issue Type: Bug
> Components: Core Runtime
> Affects Versions: 3.0
> Environment: Java 8, OSX, likely all environments tho.
> Reporter: Tim Wright
> Fix For: 4.0
>
>
> Hi,
> I'm a contributor to an open source automated test framework called
> "Concordion". We use OGNL internally to evaulate test specifications. One of
> our users has reported a bug where Concordion cannot call default interface
> methods. We've traced the problem to OGNL - the OgnlRuntime.getMethods method
> is not returning default implementations of interface methods. We've verified
> the behaviour in OGNL versions 2.6.9 and 3.0.9.
> Consider the following interface and junit test file. The test fails. But it
> probably should not.
> {code:java}
> // INTERFACE
> package org.concordion;
> public interface InterfaceWithDefaults {
> default public void defaultMethod() { }
> }
> {code}
> {code:java}
> // TEST CLASS
> package org.concordion;
> import ognl.OgnlRuntime;
> import org.junit.Test;
> import static org.junit.Assert.assertNotNull;
> public class TestDefaultMethods implements InterfaceWithDefaults {
> @Test
> public void testDefaultMethod() {
> defaultMethod();
> assertNotNull(OgnlRuntime.getMethods(TestDefaultMethods.class,
> "defaultMethod", false));
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)