Hi Cristiano,

I fixed FELIX-6006. It would be great if you could validate it.

Best regards,

David

On Thu, 20 Dec 2018 at 13:56, David Bosschaert <[email protected]>
wrote:

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

Reply via email to