[ https://issues.apache.org/jira/browse/FELIX-6020?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
David Bosschaert resolved FELIX-6020. ------------------------------------- Resolution: Fixed Assignee: David Bosschaert Fix Version/s: converter-1.0.4 Resolved with FELIX-6031 > Converter could not convert to Interfaces, which only has methods from > inherited Interfaces > ------------------------------------------------------------------------------------------- > > Key: FELIX-6020 > URL: https://issues.apache.org/jira/browse/FELIX-6020 > Project: Felix > Issue Type: Bug > Components: Converter > Affects Versions: converter-1.0.2 > Reporter: Stefan Bischof > Assignee: David Bosschaert > Priority: Major > Fix For: converter-1.0.4 > > > Hi, > the Converter could not convert to an Interfaces, when the Interface only has > methods from inherited other Interfaces. > Here is a TestCase: > {code:java} > import static org.junit.Assert.assertEquals; > import java.util.HashMap; > import java.util.Map; > import org.junit.Test; > import org.osgi.util.converter.Converter; > import org.osgi.util.converter.Converters; > public class ConvTest { > interface InterfaceFoo { > String foo(); > } > interface InterfaceFooBar extends InterfaceFoo { > String bar(); > } > interface InterfaceFooNon extends InterfaceFoo { > // Empty > } > private static final String fooValue = "foofoo"; > private static final String barValue = "barbar"; > final Converter converter = Converters.standardConverter(); > @Test > public void testFooPure() throws Exception { > final Map<String, Object> map = new HashMap<String, Object>(); > map.put("foo", fooValue); > final InterfaceFoo iFoo = > converter.convert(map).to(InterfaceFoo.class); > assertEquals(fooValue, iFoo.foo()); > } > @Test > public void testFooBar() throws Exception { > final Map<String, Object> map = new HashMap<String, Object>(); > map.put("foo", fooValue); > map.put("bar", barValue); > final InterfaceFooBar iFooBar = > converter.convert(map).to(InterfaceFooBar.class); > assertEquals(fooValue, iFooBar.foo()); > assertEquals(barValue, iFooBar.bar()); > } > @Test > public void testFooNon() throws Exception { > final Map<String, Object> map = new HashMap<String, Object>(); > map.put("foo", fooValue); > final InterfaceFooNon iFooNon = > converter.convert(map).to(InterfaceFooNon.class); > assertEquals(fooValue, iFooNon.foo()); > } > }{code} > > > Stacktrace > {code:java} > org.osgi.util.converter.ConversionException: Cannot convert foo to interface > de.jena.servicehub.doc.latex.itest.ConvTest$InterfaceFooNon > at org.osgi.util.converter.ConvertingImpl.to(ConvertingImpl.java:212) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:176) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:139) > at > org.osgi.util.converter.ConvertingImpl.convertMapEntryToSingleValue(ConvertingImpl.java:260) > at org.osgi.util.converter.ConvertingImpl.to(ConvertingImpl.java:197) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:176) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:139) > at > org.osgi.util.converter.ConvertingImpl.convertMapToSingleValue(ConvertingImpl.java:236) > at org.osgi.util.converter.ConvertingImpl.to(ConvertingImpl.java:195) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:176) > at > org.osgi.util.converter.CustomConverterImpl$ConvertingWrapper.to(CustomConverterImpl.java:139) > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)