Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x fda0845a3 -> 845b7564c


KARAF-3871 - Provide diag attribute in BundleMBean


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

Branch: refs/heads/karaf-3.0.x
Commit: 845b7564ce767d4439e12422df4c8d6f2af83a6b
Parents: fda0845
Author: Jean-Baptiste Onofré <[email protected]>
Authored: Sun Feb 7 10:56:25 2016 +0100
Committer: Jean-Baptiste Onofré <[email protected]>
Committed: Sun Feb 7 10:56:25 2016 +0100

----------------------------------------------------------------------
 .../apache/karaf/bundle/core/BundlesMBean.java  |  4 +-
 .../bundle/core/internal/BundlesMBeanImpl.java  | 42 +++++++++++++++++++-
 2 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/845b7564/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundlesMBean.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundlesMBean.java 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundlesMBean.java
index 444ebb5..e0e5499 100644
--- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundlesMBean.java
+++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundlesMBean.java
@@ -48,7 +48,9 @@ public interface BundlesMBean {
     void stop(String bundleId) throws MBeanException;
 
     void uninstall(String bundleId) throws MBeanException;
-    
+
+    TabularData getDiag() throws MBeanException;
+
     String getDiag(long bundleId);
 
 }

http://git-wip-us.apache.org/repos/asf/karaf/blob/845b7564/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
index 50eed34..9e14110 100644
--- 
a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
+++ 
b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundlesMBeanImpl.java
@@ -38,6 +38,7 @@ import org.apache.karaf.bundle.core.BundleService;
 import org.apache.karaf.bundle.core.BundlesMBean;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.startlevel.BundleStartLevel;
 import org.osgi.framework.wiring.FrameworkWiring;
 import org.slf4j.Logger;
@@ -47,6 +48,7 @@ import org.slf4j.LoggerFactory;
  * BundlesMBean implementation.
  */
 public class BundlesMBeanImpl extends StandardMBean implements BundlesMBean {
+
     private Logger LOG = LoggerFactory.getLogger(BundlesMBeanImpl.class);
 
     private BundleContext bundleContext;
@@ -69,7 +71,7 @@ public class BundlesMBeanImpl extends StandardMBean 
implements BundlesMBean {
                     new String[]{"ID", "Name", "Version", "Start Level", 
"State"},
                     new String[]{"ID of the Bundle", "Name of the Bundle", 
"Version of the Bundle", "Start Level of the Bundle", "Current State of the 
Bundle"},
                     new OpenType[]{SimpleType.LONG, SimpleType.STRING, 
SimpleType.STRING, SimpleType.INTEGER, SimpleType.STRING});
-            TabularType tableType = new TabularType("BundlesMBeanImpl", 
"Tables of all BundlesMBeanImpl", bundleType, new String[]{"ID"});
+            TabularType tableType = new TabularType("Bundles", "Tables of all 
bundles", bundleType, new String[]{"ID"});
             TabularData table = new TabularDataSupport(tableType);
 
             Bundle[] bundles = bundleContext.getBundles();
@@ -257,6 +259,34 @@ public class BundlesMBeanImpl extends StandardMBean 
implements BundlesMBean {
     }
 
     @Override
+    public TabularData getDiag() throws MBeanException {
+        try {
+            CompositeType diagType = new CompositeType("Diag", "OSGi Bundle 
Diag",
+                    new String[]{"Name", "Status", "Diag"},
+                    new String[]{"Bundle Name", "Current Status", 
"Diagnostic"},
+                    new OpenType[]{SimpleType.STRING, SimpleType.STRING, 
SimpleType.STRING});
+            TabularType tableType = new TabularType("Diagnostics", "Tables of 
all bundles diagnostic", diagType, new String[]{"Name"});
+            TabularData table = new TabularDataSupport(tableType);
+
+            Bundle[] bundles = bundleContext.getBundles();
+            for (Bundle bundle : bundles) {
+                BundleInfo bundleInfo = bundleService.getInfo(bundle);
+                String name = getBundleName(bundle);
+                String status = bundleInfo.getState().toString();
+                String diag = bundleService.getDiag(bundle);
+                CompositeData data = new CompositeDataSupport(diagType,
+                        new String[]{"Name", "Status", "Diag"},
+                        new Object[]{name, status, diag});
+                table.put(data);
+            }
+
+            return table;
+        } catch (Exception e) {
+            throw new MBeanException(null, e.getMessage());
+        }
+    }
+
+    @Override
     public String getDiag(long bundleId) {
         Bundle bundle = bundleContext.getBundle(bundleId);
         if (bundle == null) {
@@ -265,4 +295,14 @@ public class BundlesMBeanImpl extends StandardMBean 
implements BundlesMBean {
         return bundleService.getDiag(bundle);
     }
 
+    private static String getBundleName(Bundle bundle) {
+        if (bundle != null) {
+            String name = (String) 
bundle.getHeaders().get(Constants.BUNDLE_NAME);
+            return (name == null)
+                    ? "Bundle " + Long.toString(bundle.getBundleId())
+                    : name + " (" + Long.toString(bundle.getBundleId()) + ")";
+        }
+        return "[STALE BUNDLE]";
+    }
+
 }

Reply via email to