Hello Arnaud, Just to clarify, you are trying with 1.3.2 correct? Secondly, could you specify the GAVs of groovy bundles and fragments you are working with?
Even better would be if you could provide a sample repo that reproduces the issue. Thanks, Ray On Fri, Apr 9, 2021 at 5:50 AM Arnaud Mergey <a_mer...@yahoo.fr> wrote: > I notice randomly this stacktrace since I upgraded spifly from 1.2.4 > > *java.lang.NullPointerException* > * at java.util.HashMap.putMapEntries(HashMap.java:501)* > * at java.util.HashMap.putAll(HashMap.java:785)* > * at > org.apache.aries.spifly.BaseActivator.lambda$registerProviderBundle$3(BaseActivator.java:268)* > * at java.util.Map.compute(Map.java:1093)* > * at java.util.Collections$SynchronizedMap.compute(Collections.java:2684)* > * at > org.apache.aries.spifly.BaseActivator.registerProviderBundle(BaseActivator.java:261)* > * at > org.apache.aries.spifly.ProviderBundleTrackerCustomizer.addingBundle(ProviderBundleTrackerCustomizer.java:173)* > * at > org.apache.aries.spifly.ProviderBundleTrackerCustomizer.addingBundle(ProviderBundleTrackerCustomizer.java:64)* > * at > org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)* > * at > org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:1)* > * at > org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)* > * at > org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)* > * at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:159)* > * at org.apache.aries.spifly.BaseActivator.start(BaseActivator.java:99)* > * at > org.apache.aries.spifly.dynamic.DynamicWeavingActivator.start(DynamicWeavingActivator.java:37)* > > > it may have been introduced with > > [ARIES-1985] Don't process fragments directly - ASF JIRA > <https://issues.apache.org/jira/browse/ARIES-1985> > > [ARIES-1985] Don't process fragments directly - ASF JIRA > > <https://issues.apache.org/jira/browse/ARIES-1985> > > After a quick debug > > The cause is in > in > org.apache.aries.spifly.ProviderBundleTrackerCustomizer.getHeaderFromBundleOrFragment(Bundle, > String, String) > > groovy bundle has 2 fragments in my runtime groovy-xml and groovy-json. > > in > > * for (BundleWire wire : > wiring.getProvidedWires("osgi.wiring.host")) {* > * Bundle fragment = > wire.getRequirement().getRevision().getBundle();* > * Parameters fragmentParameters = new > Parameters(fragment.getHeaders().get(headerName));* > * if (MERGE_HEADERS.contains(headerName)) {* > * headerParameters.mergeWith(fragmentParameters, > false);* > * }* > * else {* > * headerParameters = fragmentParameters;* > * }* > > * if (matches(headerParameters.toString(), > matchString)) {* > * return headerParameters.toString();* > * }* > * }* > > if groovy-xml is processed first there is no Provide-Capablity error > matches return true because matchString is null, so groovy-json is not > processed so its header cannot be processed > the fix may be to move outside the for loop : > * if (matches(headerParameters.toString(), matchString)) {* > * return headerParameters.toString();* > * }* > > -- *Raymond Augé* (@rotty3000) Senior Software Architect *Liferay, Inc.* (@Liferay) OSGi Fellow