[ https://issues.apache.org/jira/browse/ARIES-1849?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jean-Baptiste Onofré resolved ARIES-1849. ----------------------------------------- Resolution: Fixed > 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 > Assignee: Jean-Baptiste Onofré > Priority: Major > Fix For: proxy-impl-1.1.4 > > > 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 demonstrates 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)