ARIES-1985 Don't process fragments directly
diff --git a/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java b/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
index 2d19f94..5de77f3 100644
--- a/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
+++ b/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizer.java
@@ -19,6 +19,7 @@
package org.apache.aries.spifly;
import static java.util.stream.Collectors.toList;
+import static org.osgi.framework.wiring.BundleRevision.TYPE_FRAGMENT;
import java.io.BufferedReader;
import java.io.IOException;
@@ -77,7 +78,8 @@
@Override
public List<ServiceRegistration> addingBundle(final Bundle bundle, BundleEvent event) {
- if (bundle.equals(spiBundle))
+ BundleRevision bundleRevision = bundle.adapt(BundleRevision.class);
+ if (bundle.equals(spiBundle) || ((bundleRevision != null) && ((bundleRevision.getTypes() & TYPE_FRAGMENT) == TYPE_FRAGMENT)))
return null; // don't process the SPI bundle itself
log(Level.FINE, "Bundle Considered for SPI providers: "
diff --git a/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java b/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
index 9740260..75d7519 100644
--- a/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
+++ b/spi-fly/spi-fly-core/src/test/java/org/apache/aries/spifly/ProviderBundleTrackerCustomizerGenericCapabilityTest.java
@@ -145,6 +145,7 @@
BundleRevision rev = EasyMock.createMock(BundleRevision.class);
EasyMock.expect(rev.getWiring()).andReturn(bw).anyTimes();
+ EasyMock.expect(rev.getTypes()).andReturn(0).anyTimes();
EasyMock.replay(rev);
Bundle implBundle = mockSPIBundle(implBC, headers, rev);