Merge pull request #108 from rotty3000/ARIES-1984
Aries 1984
diff --git a/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java b/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java
index 75e592b..071f6b9 100644
--- a/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java
+++ b/spi-fly/spi-fly-core/src/main/java/org/apache/aries/spifly/BaseActivator.java
@@ -82,20 +82,20 @@
bundleContext = context;
try {
- autoConsumerInstructions = Optional.ofNullable(
- bundleContext.getProperty("org.apache.aries.spifly.auto.consumers")
- ).map(Parameters::new);
+ autoConsumerInstructions = Optional.ofNullable(
+ bundleContext.getProperty("org.apache.aries.spifly.auto.consumers")
+ ).map(Parameters::new);
- autoProviderInstructions = Optional.ofNullable(
- bundleContext.getProperty("org.apache.aries.spifly.auto.providers")
- ).map(Parameters::new);
+ autoProviderInstructions = Optional.ofNullable(
+ bundleContext.getProperty("org.apache.aries.spifly.auto.providers")
+ ).map(Parameters::new);
}
catch (Throwable t) {
logger.log(Level.SEVERE, t.getMessage(), t);
}
providerBundleTracker = new BundleTracker(context,
- Bundle.ACTIVE, new ProviderBundleTrackerCustomizer(this, context.getBundle()));
+ Bundle.ACTIVE | Bundle.STARTING, new ProviderBundleTrackerCustomizer(this, context.getBundle()));
providerBundleTracker.open();
consumerBundleTracker = new BundleTracker(context,
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 28b9b9a..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: "
@@ -246,7 +248,8 @@
return activator.getAutoProviderInstructions().map(
Parameters::stream
).orElseGet(MapStream::empty).filterKey(
- i -> Glob.toPattern(i).asPredicate().test(bundle.getSymbolicName())
+ i ->
+ Glob.toPattern(i).asPredicate().test(bundle.getSymbolicName())
).values().findFirst().map(
un -> {
List<URL> serviceFileURLs = getServiceFileUrls(bundle);
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);