Hi David,
Would you please move the felix-parent pom to version 6 ?
With the current version 4 is not possible to build it with java 9 or 11.
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-antrun-plugin:1.8:run
(set-bundle-required-execution-environment) on project
org.apache.felix.converter: An Ant BuildException has occured: Unable
to create javax script engine for javascript
[ERROR] around Ant part ...<script language="javascript">var System =
java.lang.System;... @ 4:33 in
/home/cvgaviao/Development/Development_Java/OSS/felix/converter/converter/target/antrun/build-main.xml
[ERROR] -> [Help 1]
I had this same problem with maven-ant when I worked on BundleRepository
in order to move it to Repository 1.1
(https://issues.apache.org/jira/browse/FELIX-5988).
best regards,
Cristiano
On 20/12/2018 13:41, David Bosschaert wrote:
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