Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
3.0
-
None
-
Java 8, OSX, likely all environments tho.
Description
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.
// INTERFACE package org.concordion; public interface InterfaceWithDefaults { default public void defaultMethod() { } }
// 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)); } }