Hello, I would like to better understand the implication of running the subsystem module without using the (optional) aries application modeller module? Is the subsystem module still compliant with the OSGI spec (e.g. with regards to capability checking, subsystem-service imports) or are there any deviations?
I face issues with the application modeller enabled, because the installation of a subsystem may fail if a service is referenced by a bundle that is contained in this subsystem. When finding the providers of this service it seems that it looks over all the constituents in the root subsystem to search for a provide-capability in the osgi.service namespace. However, in this process it may processes a bundle that is not fully OSGI compatible manifests (e.g. missing Bundle-ManifestVersion header) and then breaks the complete installation process. In another case it fails because it trys to compute the requirements and capabilities on the system bundle which does not have a manifest file in felix (see exception [1], the statement BundleManifest.fromBundle(archive); in ModelledResourceManagerImpl returns null) Kind Regards, Manuel org.osgi.service.subsystem.SubsystemException: org.apache.aries.application.modelling.ModellerException: java.lang.NullPointerException at org.apache.aries.subsystem.core.internal.ApplicationServiceModeller.computeRequirementsAndCapabilities(ApplicationServiceModeller.java:90) at org.apache.aries.subsystem.core.internal.BundleRevisionResource.computeServiceCapabilities(BundleRevisionResource.java:70) at org.apache.aries.subsystem.core.internal.BundleRevisionResource.getCapabilities(BundleRevisionResource.java:46) at org.apache.aries.subsystem.core.internal.BundleResourceInstaller$BundleConstituent.getCapabilities(BundleResourceInstaller.java:74) at org.apache.aries.subsystem.core.internal.SystemRepository.findProviders(SystemRepository.java:59) at org.apache.aries.subsystem.core.internal.SystemRepository.findProviders(SystemRepository.java:44) at org.apache.aries.subsystem.core.internal.SystemRepository.findProviders(SystemRepository.java:38) at org.apache.aries.subsystem.core.internal.SubsystemResource.addDependencies(SubsystemResource.java:278) at org.apache.aries.subsystem.core.internal.SubsystemResource.addDependenciesFromSystemRepository(SubsystemResource.java:309) at org.apache.aries.subsystem.core.internal.SubsystemResource.access$200(SubsystemResource.java:75) at org.apache.aries.subsystem.core.internal.SubsystemResource$2.findProviders(SubsystemResource.java:519) at org.apache.felix.resolver.Candidates.populateResource(Candidates.java:265) at org.apache.felix.resolver.Candidates.populate(Candidates.java:153) at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:148) at org.apache.aries.subsystem.core.internal.SubsystemResource.computeDependencies(SubsystemResource.java:410) at org.apache.aries.subsystem.core.internal.SubsystemResource.computeDependencies(SubsystemResource.java:393) at org.apache.aries.subsystem.core.internal.SubsystemResource.<init>(SubsystemResource.java:101) at org.apache.aries.subsystem.core.internal.SubsystemResource.<init>(SubsystemResource.java:92) at org.apache.aries.subsystem.core.internal.InstallAction.createSubsystemResource(InstallAction.java:134) at org.apache.aries.subsystem.core.internal.InstallAction.run(InstallAction.java:55) at org.apache.aries.subsystem.core.internal.InstallAction.run(InstallAction.java:33) at java.security.AccessController.doPrivileged(Native Method) at org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:621) at org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:259) at org.apache.aries.subsystem.core.internal.BasicSubsystem.install(BasicSubsystem.java:63) at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:43) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) Caused by: org.apache.aries.application.modelling.ModellerException: java.lang.NullPointerException at org.apache.aries.application.modelling.impl.ModelledResourceManagerImpl.getServiceElements(ModelledResourceManagerImpl.java:128) at org.apache.aries.application.modelling.impl.ModelledResourceManagerImpl.getServiceElements(ModelledResourceManagerImpl.java:95) at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54) at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119) at com.sun.proxy.$Proxy9.getServiceElements(Unknown Source) at org.apache.aries.subsystem.core.internal.ApplicationServiceModeller.computeRequirementsAndCapabilities(ApplicationServiceModeller.java:44) ... 53 more Caused by: java.lang.NullPointerException at org.apache.aries.application.modelling.internal.BundleBlueprintParser.<init>(BundleBlueprintParser.java:89) at org.apache.aries.application.modelling.impl.ModelledResourceManagerImpl.findBlueprints(ModelledResourceManagerImpl.java:222) at org.apache.aries.application.modelling.impl.ModelledResourceManagerImpl.getServiceElements(ModelledResourceManagerImpl.java:117) ... 61 more
