Nicolas Dutertry created ARIES-1849: ---------------------------------------
Summary: Aries proxy does not work with interface default methods Key: ARIES-1849 URL: https://issues.apache.org/jira/browse/ARIES-1849 Project: Aries Issue Type: Bug Components: Proxy Affects Versions: proxy-impl-1.1.2 Reporter: Nicolas Dutertry Since Java 8 it is possible to define default implementations inside interface definition. It seems that Aries proxy is not compatible with interface default methods. As a result it is not possible to use a blueprint reference to a service implementing an interface with default method. The following unit test demonstrate the issue : {code:java} import java.util.Collections; import org.apache.aries.proxy.UnableToProxyException; import org.apache.aries.proxy.impl.interfaces.InterfaceProxyGenerator; import org.junit.Assert; import org.junit.Test; public class InterfaceProxyGeneratorTest { public static interface Service { String getName(); default String getValue() { return "default"; } } public static class ServiceImpl implements Service { @Override public String getName() { return "serviceimpl"; } @Override public String getValue() { return "value"; } } @Test public void testProxy() throws UnableToProxyException { ServiceImpl serviceImpl = new ServiceImpl(); Assert.assertEquals("serviceimpl", serviceImpl.getName()); Assert.assertEquals("value", serviceImpl.getValue()); Service proxy = (Service)InterfaceProxyGenerator.getProxyInstance( null, null, Collections.singleton(Service.class), () -> { return serviceImpl; }, null); Assert.assertNotNull(proxy); Assert.assertEquals("serviceimpl", proxy.getName()); Assert.assertEquals("value", proxy.getValue()); } }{code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)