You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by cs...@apache.org on 2015/10/27 14:52:32 UTC

karaf git commit: [KARAF-4081] Provide informations about missing services for diag

Repository: karaf
Updated Branches:
  refs/heads/master bde4f3ea1 -> 270fd4ce9


[KARAF-4081] Provide informations about missing services for diag


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/270fd4ce
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/270fd4ce
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/270fd4ce

Branch: refs/heads/master
Commit: 270fd4ce981dda8844e19dd44a2d63971064caf9
Parents: bde4f3e
Author: Christian Schneider <ch...@die-schneider.net>
Authored: Tue Oct 27 14:52:20 2015 +0100
Committer: Christian Schneider <ch...@die-schneider.net>
Committed: Tue Oct 27 14:52:20 2015 +0100

----------------------------------------------------------------------
 .../bundle/state/spring/internal/Activator.java | 21 ++++-----
 .../spring/internal/SpringStateService.java     | 46 +++++++++++++-------
 2 files changed, 40 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/270fd4ce/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/Activator.java
----------------------------------------------------------------------
diff --git a/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/Activator.java b/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/Activator.java
index 09a4949..bcc1b63 100644
--- a/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/Activator.java
+++ b/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/Activator.java
@@ -19,24 +19,21 @@ package org.apache.karaf.bundle.state.spring.internal;
 import org.apache.karaf.bundle.core.BundleStateService;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceRegistration;
 import org.springframework.osgi.context.event.OsgiBundleApplicationContextListener;
 
 public class Activator implements BundleActivator {
 
-    private ServiceRegistration registration;
-
     public void start(BundleContext bundleContext) {
-		SpringStateService services = new SpringStateService();
-	    String[] classes = new String[] {
-				OsgiBundleApplicationContextListener.class.getName(),
-				BundleStateService.class.getName()
-			};
-        registration = bundleContext.registerService(classes, services, null);
-	}
+        SpringStateService services = new SpringStateService();
+        String[] classes = new String[] {
+                                         OsgiBundleApplicationContextListener.class.getName(),
+                                         BundleStateService.class.getName()
+        };
+        bundleContext.registerService(classes, services, null);
+    }
 
     public void stop(BundleContext context) {
-        registration.unregister();
+        // unregister happens automatically
     }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/karaf/blob/270fd4ce/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/SpringStateService.java
----------------------------------------------------------------------
diff --git a/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/SpringStateService.java b/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/SpringStateService.java
index e09e6e1..fb7d4f0 100644
--- a/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/SpringStateService.java
+++ b/bundle/springstate/src/main/java/org/apache/karaf/bundle/state/spring/internal/SpringStateService.java
@@ -35,9 +35,11 @@ import org.springframework.osgi.context.event.OsgiBundleApplicationContextListen
 import org.springframework.osgi.context.event.OsgiBundleContextFailedEvent;
 import org.springframework.osgi.context.event.OsgiBundleContextRefreshedEvent;
 import org.springframework.osgi.extender.event.BootstrappingDependencyEvent;
+import org.springframework.osgi.service.importer.OsgiServiceDependency;
+import org.springframework.osgi.service.importer.event.OsgiServiceDependencyEvent;
 
-public class SpringStateService implements OsgiBundleApplicationContextListener,
-        BundleListener, BundleStateService {
+public class SpringStateService
+    implements OsgiBundleApplicationContextListener, BundleListener, BundleStateService {
 
     private static final Logger LOG = LoggerFactory.getLogger(SpringStateService.class);
 
@@ -56,17 +58,20 @@ public class SpringStateService implements OsgiBundleApplicationContextListener,
         BundleState state = mapEventToState(event);
         return (bundle.getState() != Bundle.ACTIVE) ? BundleState.Unknown : state;
     }
-    
+
     public String getDiag(Bundle bundle) {
-    	OsgiBundleApplicationContextEvent event = states.get(bundle.getBundleId());
+        OsgiBundleApplicationContextEvent event = states.get(bundle.getBundleId());
         if (event == null) {
             return null;
         }
-        
+
         StringBuilder message = new StringBuilder();
         Date date = new Date(event.getTimestamp());
         SimpleDateFormat df = new SimpleDateFormat();
         message.append(df.format(date) + "\n");
+        if (event instanceof BootstrappingDependencyEvent) {
+            message.append(getServiceInfo((BootstrappingDependencyEvent)event));
+        }
         Throwable ex = getException(event);
         if (ex != null) {
             message.append("Exception: \n");
@@ -74,24 +79,35 @@ public class SpringStateService implements OsgiBundleApplicationContextListener,
         }
         return message.toString();
     }
-    
+
+    private String getServiceInfo(BootstrappingDependencyEvent event) {
+        OsgiServiceDependencyEvent depEvent = event.getDependencyEvent(); 
+        if (depEvent == null || depEvent.getServiceDependency() == null) {
+            return "";
+        }
+        OsgiServiceDependency dep = depEvent.getServiceDependency();
+        return String.format("Bean %s is wating for OSGi service with filter %s", 
+                             dep.getBeanName(), 
+                             dep.getServiceFilter());
+    }
+
     private void addMessages(StringBuilder message, Throwable ex) {
-    	if (ex != null) {
-    		message.append(ex.getMessage());
-    		message.append("\n");
+        if (ex != null) {
+            message.append(ex.getMessage());
+            message.append("\n");
             StringWriter errorWriter = new StringWriter();
             ex.printStackTrace(new PrintWriter(errorWriter));
             message.append(errorWriter.toString());
             message.append("\n");
-    	}
+        }
     }
-    
+
     private Throwable getException(OsgiBundleApplicationContextEvent event) {
-    	if (!(event instanceof OsgiBundleContextFailedEvent)) {
-        	return null;
+        if (!(event instanceof OsgiBundleContextFailedEvent)) {
+            return null;
         }
-    	OsgiBundleContextFailedEvent failureEvent = (OsgiBundleContextFailedEvent) event;
-    	return failureEvent.getFailureCause();
+        OsgiBundleContextFailedEvent failureEvent = (OsgiBundleContextFailedEvent)event;
+        return failureEvent.getFailureCause();
     }
 
     public void onOsgiApplicationEvent(OsgiBundleApplicationContextEvent event) {