I have created https://issues.apache.org/jira/browse/FELIX-6006 for it.
Best regards, David On Thu, 20 Dec 2018 at 13:10, David Bosschaert <[email protected]> wrote: > Hi Cristiano, > > Yes, you have identified a bug - please open an issue for it. I'll work on > a fix. > > Best regards, > > David > > On Thu, 20 Dec 2018 at 12:55, Cristiano <[email protected]> wrote: > >> Hi David, many thanks for the insight. It is a very interesting >> approach, ideed. >> >> I just tried with errorHandler() now. I've took the tests from Felix >> Converter and use my own converter instance and it worked for DTO, >> javabeans and other common cases. >> >> But unfortunately, the current implementation of Felix Converter is not >> calling this method when dealing with the Interface's created Proxy. >> >> The code bellow was taken from the invoke(Object proxy, Method method, >> Object[] args) method: >> >> > // If no value is available take the default if >> specified >> > if (val == null) { >> > if (cls.isAnnotation()) { >> > val = method.getDefaultValue(); >> > } >> > >> > if (val == null) { >> > if (args != null && args.length == 1) { >> > val = args[0]; >> > } else { >> > throw new ConversionException( >> > "No value for property: " + >> propName); >> > } >> > } >> > } >> >> As you can see, the ConversionException is being thrown and it is not >> captured by the CustomConverterImpl class as it does in other situations. >> >> >> Should I open an issue for that ? >> >> best regards >> >> >> On 20/12/2018 08:35, David Bosschaert wrote: >> > Hi Cristiano, >> > >> > You should be able to do this with a custom errorHandler() [1]. >> > For that you'd create a custom converter and supply it with an >> errorHandler >> > function. See also [2] and [3]. >> > >> > Hope this helps, >> > >> > David >> > >> > [1] >> > >> https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/util/converter/ConverterBuilder.html#errorHandler-org.osgi.util.converter.ConverterFunction- >> > [2] >> > >> https://osgi.org/specification/osgi.cmpn/7.0.0/util.converter.html#util.converter-customizing.converters >> > [3] >> > >> https://osgi.org/specification/osgi.cmpn/7.0.0/util.converter.html#d0e147674 >> > >> > On Wed, 19 Dec 2018 at 20:51, Cristiano <[email protected]> wrote: >> > >> >> Hello all, >> >> >> >> I'm using Converter to convert a JsonObject (a Map) to an Interface. >> >> >> >> I've created this test for a scenario where any bundle is informed: >> >> >> >>> IProvisioningConfiguration config = CONVERTER.convert(json) >> >>> .to(IProvisioningConfiguration.class); >> >>> >> >>> assertThat(config).isNotNull(); >> >>> assertThat(config.delay()).isEqualTo(5); >> >>> assertThat(config.bundles()).isEmpty(); >> >> My problem is that I'm receiving a ConversionException when trying to >> >> access a method from the interface which value was not supplied by the >> >> source object map. >> >> >> >>> org.osgi.util.converter.ConversionException: No value for property: >> >>> bundles >> >>> at >> >>> >> org.osgi.util.converter.ConvertingImpl$4.invoke(ConvertingImpl.java:802) >> >>> at com.sun.proxy.$Proxy8.bundles(Unknown Source) >> >>> at >> >>> >> >> >> br.com.c8tech.vxosgi.config.JsonConvertionUnitTest.testProvisioningConfigurationJsonConvertionToInterface(JsonConvertionUnitTest.java:102) >> >> >> >> Is there any way to work with optional values in the target interface >> >> without get this exception ? >> >> >> >> >> >> many thanks, >> >> >> >> Cristiano >> >> >> >> >> >
