Re: Resolution and CNFE problems with Configurator 1.0.10

2020-05-19 Thread Raymond Auge
@Neil Bartlett 
the issue is with start ordering. Because configurator doesn't explicitly
use the Service Loader Mediator to describe a dependency on a _provider_ of
the Json API, if the provider isn't _resolved_ before the JSON API when the
lookup happens it will fail.

The solution is to start the provider earlier.

- Ray



On Tue, May 19, 2020 at 5:04 AM Neil Bartlett  wrote:

> I have raised a JIRA for this issue:
> https://issues.apache.org/jira/browse/FELIX-6277
>
> Cheers,
> Neil
>
> On Tue, 19 May 2020 at 08:58, Neil Bartlett  wrote:
>
> > Hi Apache devs,
> >
> > I'm trying to use org.apache.felix.configurator version 1.0.10 in an OSGi
> > enRoute project. EnRoute uses 1.0.6 by default, but I'm trying to bump
> the
> > version to see if it addresses what might be a lifecycle bug (that's a
> > topic for a separate email).
> >
> > Initially there were some problems resolving the bundle, so 1.0.10 has an
> > import that was not required in 1.0.6:
> >
> > [ERROR] Resolution failed. Capabilities satisfying the following
> > requirements could not be found:
> > [<>]
> >   ⇒ osgi.identity: (osgi.identity=org.example.app)
> >   ⇒ [org.example.app version=0.0.1.202005190718]
> >   ⇒ osgi.extender:
> > (&(osgi.extender=osgi.configurator)(version>=1.0.0)(!(version>=2.0.0)))
> >   ⇒ [org.apache.felix.configurator version=1.0.10]
> >   ⇒ osgi.wiring.package:
> > (&(osgi.wiring.package=javax.json)(&(version>=1.0.0)(!(version>=2.0.0
> >
> > I tried adding org.apache.geronimo.specs:geronimo-json_1.0_spec (which is
> > listed as a provided scope dependency of configurator) to the resolver
> > input as follows:
> >
> > 
> > org.apache.geronimo.specs
> > geronimo-json_1.0_spec
> > 1.0-alpha-1
> > runtime
> > 
> >
> > This successfully resolves, but the Configurator now throws a CNFE from
> > its activator:
> >
> > ! Failed to start bundle org.apache.felix.configurator-1.0.10, exception
> > activator error org.apache.johnzon.core.JsonProviderImpl not found from:
> > javax.json.spi.JsonProvider:doLoadProvider#132
> > org.osgi.framework.BundleException: Exception in
> > org.apache.felix.configurator.impl.Activator.start() of bundle
> > org.apache.felix.configurator.
> > at
> >
> org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:803)
> > at
> >
> org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:732)
> > at
> >
> org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1005)
> > at
> >
> org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:357)
> > ...
> > Caused by: javax.json.JsonException:
> > org.apache.johnzon.core.JsonProviderImpl not found
> > at
> > javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:132)
> > at javax.json.spi.JsonProvider.provider(JsonProvider.java:64)
> > at javax.json.Json.createReader(Json.java:68)
> > at
> >
> org.apache.felix.configurator.impl.json.JSONUtil.parseJSON(JSONUtil.java:329)
> > at
> >
> org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:161)
> > at
> >
> org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:122)
> > at
> >
> org.apache.felix.configurator.impl.json.JSONUtil.readConfigurationsFromBundle(JSONUtil.java:86)
> > at
> >
> org.apache.felix.configurator.impl.Configurator.processAddBundle(Configurator.java:315)
> > ...
> > Caused by: java.lang.ClassNotFoundException:
> > org.apache.johnzon.core.JsonProviderImpl
> > at
> >
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> > at
> >
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> > at
> java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> > at
> >
> org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:135)
> > at
> java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> > at
> > javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:129)
> > ...
> >
> > I am running on Java 11 (AdoptOpenJDK build 11.0.7+10). What combination
> > of bundles does Configurator actually require? Why does this bundle
> allow a
> > correct resolution of imports but then throw a CNFE at runtime? Note that
> > configurator 1.0.6 embeds geronimo-json_1.0_spec-1.0-alpha-1.jar,
> > johnzon-core-1.0.0.jar and org.apache.felix.converter-1.0.0.jar using
> > Bundle-ClassPath, but this is no longer the case in 1.0.10. That seems
> like
> > an error.
> >
> > Regards,
> > Neil
> >
>


-- 
*Raymond Augé* 
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* 
 

Re: Resolution and CNFE problems with Configurator 1.0.10

2020-05-19 Thread Neil Bartlett
I have raised a JIRA for this issue:
https://issues.apache.org/jira/browse/FELIX-6277

Cheers,
Neil

On Tue, 19 May 2020 at 08:58, Neil Bartlett  wrote:

> Hi Apache devs,
>
> I'm trying to use org.apache.felix.configurator version 1.0.10 in an OSGi
> enRoute project. EnRoute uses 1.0.6 by default, but I'm trying to bump the
> version to see if it addresses what might be a lifecycle bug (that's a
> topic for a separate email).
>
> Initially there were some problems resolving the bundle, so 1.0.10 has an
> import that was not required in 1.0.6:
>
> [ERROR] Resolution failed. Capabilities satisfying the following
> requirements could not be found:
> [<>]
>   ⇒ osgi.identity: (osgi.identity=org.example.app)
>   ⇒ [org.example.app version=0.0.1.202005190718]
>   ⇒ osgi.extender:
> (&(osgi.extender=osgi.configurator)(version>=1.0.0)(!(version>=2.0.0)))
>   ⇒ [org.apache.felix.configurator version=1.0.10]
>   ⇒ osgi.wiring.package:
> (&(osgi.wiring.package=javax.json)(&(version>=1.0.0)(!(version>=2.0.0
>
> I tried adding org.apache.geronimo.specs:geronimo-json_1.0_spec (which is
> listed as a provided scope dependency of configurator) to the resolver
> input as follows:
>
> 
> org.apache.geronimo.specs
> geronimo-json_1.0_spec
> 1.0-alpha-1
> runtime
> 
>
> This successfully resolves, but the Configurator now throws a CNFE from
> its activator:
>
> ! Failed to start bundle org.apache.felix.configurator-1.0.10, exception
> activator error org.apache.johnzon.core.JsonProviderImpl not found from:
> javax.json.spi.JsonProvider:doLoadProvider#132
> org.osgi.framework.BundleException: Exception in
> org.apache.felix.configurator.impl.Activator.start() of bundle
> org.apache.felix.configurator.
> at
> org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:803)
> at
> org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:732)
> at
> org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1005)
> at
> org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:357)
> ...
> Caused by: javax.json.JsonException:
> org.apache.johnzon.core.JsonProviderImpl not found
> at
> javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:132)
> at javax.json.spi.JsonProvider.provider(JsonProvider.java:64)
> at javax.json.Json.createReader(Json.java:68)
> at
> org.apache.felix.configurator.impl.json.JSONUtil.parseJSON(JSONUtil.java:329)
> at
> org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:161)
> at
> org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:122)
> at
> org.apache.felix.configurator.impl.json.JSONUtil.readConfigurationsFromBundle(JSONUtil.java:86)
> at
> org.apache.felix.configurator.impl.Configurator.processAddBundle(Configurator.java:315)
> ...
> Caused by: java.lang.ClassNotFoundException:
> org.apache.johnzon.core.JsonProviderImpl
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> at
> org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:135)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
> at
> javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:129)
> ...
>
> I am running on Java 11 (AdoptOpenJDK build 11.0.7+10). What combination
> of bundles does Configurator actually require? Why does this bundle allow a
> correct resolution of imports but then throw a CNFE at runtime? Note that
> configurator 1.0.6 embeds geronimo-json_1.0_spec-1.0-alpha-1.jar,
> johnzon-core-1.0.0.jar and org.apache.felix.converter-1.0.0.jar using
> Bundle-ClassPath, but this is no longer the case in 1.0.10. That seems like
> an error.
>
> Regards,
> Neil
>


Resolution and CNFE problems with Configurator 1.0.10

2020-05-19 Thread Neil Bartlett
Hi Apache devs,

I'm trying to use org.apache.felix.configurator version 1.0.10 in an OSGi
enRoute project. EnRoute uses 1.0.6 by default, but I'm trying to bump the
version to see if it addresses what might be a lifecycle bug (that's a
topic for a separate email).

Initially there were some problems resolving the bundle, so 1.0.10 has an
import that was not required in 1.0.6:

[ERROR] Resolution failed. Capabilities satisfying the following
requirements could not be found:
[<>]
  ⇒ osgi.identity: (osgi.identity=org.example.app)
  ⇒ [org.example.app version=0.0.1.202005190718]
  ⇒ osgi.extender:
(&(osgi.extender=osgi.configurator)(version>=1.0.0)(!(version>=2.0.0)))
  ⇒ [org.apache.felix.configurator version=1.0.10]
  ⇒ osgi.wiring.package:
(&(osgi.wiring.package=javax.json)(&(version>=1.0.0)(!(version>=2.0.0

I tried adding org.apache.geronimo.specs:geronimo-json_1.0_spec (which is
listed as a provided scope dependency of configurator) to the resolver
input as follows:


org.apache.geronimo.specs
geronimo-json_1.0_spec
1.0-alpha-1
runtime


This successfully resolves, but the Configurator now throws a CNFE from its
activator:

! Failed to start bundle org.apache.felix.configurator-1.0.10, exception
activator error org.apache.johnzon.core.JsonProviderImpl not found from:
javax.json.spi.JsonProvider:doLoadProvider#132
org.osgi.framework.BundleException: Exception in
org.apache.felix.configurator.impl.Activator.start() of bundle
org.apache.felix.configurator.
at
org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:803)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:732)
at
org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1005)
at
org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:357)
...
Caused by: javax.json.JsonException:
org.apache.johnzon.core.JsonProviderImpl not found
at javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:132)
at javax.json.spi.JsonProvider.provider(JsonProvider.java:64)
at javax.json.Json.createReader(Json.java:68)
at
org.apache.felix.configurator.impl.json.JSONUtil.parseJSON(JSONUtil.java:329)
at
org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:161)
at
org.apache.felix.configurator.impl.json.JSONUtil.readJSON(JSONUtil.java:122)
at
org.apache.felix.configurator.impl.json.JSONUtil.readConfigurationsFromBundle(JSONUtil.java:86)
at
org.apache.felix.configurator.impl.Configurator.processAddBundle(Configurator.java:315)
...
Caused by: java.lang.ClassNotFoundException:
org.apache.johnzon.core.JsonProviderImpl
at
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at
org.eclipse.osgi.internal.framework.ContextFinder.loadClass(ContextFinder.java:135)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at javax.json.spi.JsonProvider.doLoadProvider(JsonProvider.java:129)
...

I am running on Java 11 (AdoptOpenJDK build 11.0.7+10). What combination of
bundles does Configurator actually require? Why does this bundle allow a
correct resolution of imports but then throw a CNFE at runtime? Note that
configurator 1.0.6 embeds geronimo-json_1.0_spec-1.0-alpha-1.jar,
johnzon-core-1.0.0.jar and org.apache.felix.converter-1.0.0.jar using
Bundle-ClassPath, but this is no longer the case in 1.0.10. That seems like
an error.

Regards,
Neil