506104: NullPointerException in LifecycleManager maybeCreateApplicationContextFor on non-Blueprint bundle

Signed-off-by: Olaf Otto <olaf@x100.de>
diff --git a/extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManager.java b/extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManager.java
index 087aa0f..406c298 100644
--- a/extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManager.java
+++ b/extender/src/main/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManager.java
@@ -150,6 +150,12 @@
 
 		BundleContext localBundleContext = OsgiBundleUtils.getBundleContext(bundle);
 
+		if (localBundleContext == null) {
+			if (debug)
+				log.debug("Bundle " + bundleString + " has no bundle context; skipping...");
+			return;
+		}
+
 		// initialize context
 		final DelegatedExecutionOsgiBundleApplicationContext localApplicationContext;
 
diff --git a/extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManagerTest.java b/extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManagerTest.java
index d6eb3d9..9ee88a6 100644
--- a/extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManagerTest.java
+++ b/extender/src/test/java/org/eclipse/gemini/blueprint/extender/internal/activator/LifecycleManagerTest.java
@@ -21,18 +21,18 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Version;
 
 import static java.lang.Thread.yield;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Matchers.isA;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.*;
 
 /**
  * @author Olaf Otto
@@ -136,6 +136,23 @@
         verifyOsgiContextProcessorInteractions();
     }
 
+    @Test
+    public void testLifecycleManagerIgnoresBundlesWithoutContexttForContextCreation() throws Exception {
+        this.testee.maybeCreateApplicationContextFor(createBundleWithoutBundleContext());
+        verifyContextCreationIsNotAttempted();
+    }
+
+    private void verifyContextCreationIsNotAttempted() throws Exception {
+        verify(this.contextCreator, never()).createApplicationContext(Matchers.<BundleContext>any());
+    }
+
+    private Bundle createBundleWithoutBundleContext() {
+        Bundle bundle = mock(Bundle.class);
+        Version version = new Version(1, 0, 0);
+        doReturn(version).when(bundle).getVersion();
+        return bundle;
+    }
+
 
     private void addContextToLifecycleManager() throws Exception {
         this.testee.maybeCreateApplicationContextFor(this.bundleContext.getBundle());