317943: prefer blueprint events generated from Spring DM events over "native" blueprint events which sometimes lack bean names
diff --git a/org.eclipse.virgo.kernel.core/src/main/java/org/eclipse/virgo/kernel/core/internal/blueprint/ApplicationContextDependencyMonitor.java b/org.eclipse.virgo.kernel.core/src/main/java/org/eclipse/virgo/kernel/core/internal/blueprint/ApplicationContextDependencyMonitor.java
index e3cb0c6..96bd918 100644
--- a/org.eclipse.virgo.kernel.core/src/main/java/org/eclipse/virgo/kernel/core/internal/blueprint/ApplicationContextDependencyMonitor.java
+++ b/org.eclipse.virgo.kernel.core/src/main/java/org/eclipse/virgo/kernel/core/internal/blueprint/ApplicationContextDependencyMonitor.java
@@ -91,18 +91,24 @@
 
             if (EVENT_WAITING.equals(event.getTopic())) {
                 List<ServiceDependency> serviceDependencies = createServiceDependencies(event);
-                for (ServiceDependency serviceDependency : serviceDependencies) {
-                    addServiceDependencyTicker(serviceDependency, bundle);
+                if (serviceDependencies != null) {
+                    for (ServiceDependency serviceDependency : serviceDependencies) {
+                        addServiceDependencyTicker(serviceDependency, bundle);
+                    }
                 }
             } else if (EVENT_GRACE_PERIOD.equals(event.getTopic())) {
                 List<ServiceDependency> remainingUnsatisfiedDependencies = createServiceDependencies(event);
-                changeInUnsatisfiedDependencies(remainingUnsatisfiedDependencies, bundle);
+                if (remainingUnsatisfiedDependencies != null) {
+                    changeInUnsatisfiedDependencies(remainingUnsatisfiedDependencies, bundle);
+                }
 
             } else if (EVENT_FAILURE.equals(event.getTopic())) {
                 String[] dependenciesArray = (String[]) event.getProperty("dependencies");
                 if (dependenciesArray != null) {
                     List<ServiceDependency> serviceDependencies = createServiceDependencies(event);
-                    serviceDependenciesTimedOut(serviceDependencies, bundle);
+                    if (serviceDependencies != null) {
+                        serviceDependenciesTimedOut(serviceDependencies, bundle);
+                    }
                 } else {
                     containerCreationFailed(bundle);
                 }
@@ -243,14 +249,20 @@
         String[] beanNames = (String[]) event.getProperty("bean.name");
 
         List<ServiceDependency> serviceDependencies = new ArrayList<ServiceDependency>();
-
         if (filters != null && beanNames != null) {
             for (int i = 0; i < filters.length; i++) {
                 serviceDependencies.add(new ServiceDependency(filters[i], beanNames[i]));
             }
+            return serviceDependencies;
         }
 
-        return serviceDependencies;
+        /*
+         * Return null when filters is non-null and beanNames is null. Blueprint events sometimes lack this information,
+         * but a corresponding event including bean names is posted by
+         * BlueprintEventPostingOsgiBundleApplicationContextListener on receipt of the underlying Spring DM event. A
+         * return value of null indicates that the caller should ignore this event.
+         */
+        return filters == null ? serviceDependencies : null;
     }
 
     private static final class ServiceDependency {