[ 
https://issues.apache.org/jira/browse/OGNL-249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated OGNL-249:
-------------------------------
    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.

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

  was:

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));
    }
}



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

Reply via email to