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);