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