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 2012/05/16 11:44:30 UTC

svn commit: r1339091 - in /karaf/trunk/bundle/command: pom.xml src/main/java/org/apache/karaf/bundle/command/ListBundles.java

Author: cschneider
Date: Wed May 16 09:44:29 2012
New Revision: 1339091

URL: http://svn.apache.org/viewvc?rev=1339091&view=rev
Log:
KARAF-1485 Adding list --table to use shell tables

Modified:
    karaf/trunk/bundle/command/pom.xml
    karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java

Modified: karaf/trunk/bundle/command/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/bundle/command/pom.xml?rev=1339091&r1=1339090&r2=1339091&view=diff
==============================================================================
--- karaf/trunk/bundle/command/pom.xml (original)
+++ karaf/trunk/bundle/command/pom.xml Wed May 16 09:44:29 2012
@@ -40,6 +40,10 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.karaf.shell</groupId>
+            <artifactId>org.apache.karaf.shell.table</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
         </dependency>
         <dependency>

Modified: karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java
URL: http://svn.apache.org/viewvc/karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java?rev=1339091&r1=1339090&r2=1339091&view=diff
==============================================================================
--- karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java (original)
+++ karaf/trunk/bundle/command/src/main/java/org/apache/karaf/bundle/command/ListBundles.java Wed May 16 09:44:29 2012
@@ -22,6 +22,7 @@ import org.apache.karaf.bundle.core.Bund
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.table.ShellTable;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.startlevel.FrameworkStartLevel;
 
@@ -39,6 +40,9 @@ public class ListBundles extends OsgiCom
 
     @Option(name = "-t", valueToShowInHelp = "", description = "Specifies the bundle threshold; bundles with a start-level less than this value will not get printed out.", required = false, multiValued = false)
     int bundleLevelThreshold = -1;
+    
+    @Option(name= "--table", description = "Show bundles using a shell table")
+    boolean newLayout;
 
     private BundleService bundleService;
 
@@ -61,9 +65,9 @@ public class ListBundles extends OsgiCom
             System.out.println("START LEVEL " + fsl.getStartLevel() + " , List Threshold: " + bundleLevelThreshold);
         }
 
+        if (!newLayout) {
         // Print column headers.
-        String levelHeader = (fsl == null) ? "" : "  Level ";
-        System.out.println("   ID   State       " + levelHeader + getNameHeader());
+        System.out.println("   ID   State         Level " + getNameHeader());
 
         for (int i = 0; i < bundles.length; i++) {
             Bundle bundle = bundles[i];
@@ -73,25 +77,45 @@ public class ListBundles extends OsgiCom
                 // Show bundle version if not showing location.
                 String version = info.getVersion();
                 name = (!showLoc && !showUpdate && (version != null)) ? name + " (" + version + ")" : name;
+                name += printFragments(info) + printHosts(info);
                 String line = String.format("[%4d] [%10s] [%5d] %s", info.getBundleId(),
                                             getStateString(info.getState()), info.getStartLevel(), name);
-                System.out.print(line);
-                printFragments(info);
-                printHosts(info);
-                System.out.println();
+                System.out.println(line);
             }
         }
+        
+        } else {
+        
+        ShellTable table = new ShellTable();
+        table.column("ID").alignRight();
+        table.column("State");
+        table.column("Lvl").alignRight();
+        table.column("Version");
+        table.column(getNameHeader());
+        
+        for (int i = 0; i < bundles.length; i++) {
+            Bundle bundle = bundles[i];
+            BundleInfo info = this.bundleService.getInfo(bundle);
+            if (info.getStartLevel() >= bundleLevelThreshold) {
+                String name = getNameToShow(info) + printFragments(info) + printHosts(info);
+                String version = info.getVersion();
+                table.addRow().addContent(info.getBundleId(), getStateString(info.getState()), 
+                        info.getStartLevel(), version, name);
+            }
+        }
+        table.print(System.out);
+        }
         return null;
     }
 
     private String getNameHeader() {
-        String msg = " Name";
+        String msg = "Name";
         if (showLoc) {
-            msg = " Location";
+            msg = "Location";
         } else if (showSymbolic) {
-            msg = " Symbolic name";
+            msg = "Symbolic name";
         } else if (showUpdate) {
-            msg = " Update location";
+            msg = "Update location";
         }
         return msg;
     }
@@ -109,26 +133,32 @@ public class ListBundles extends OsgiCom
         }
     }
 
-    private void printHosts(BundleInfo info) {
-        if (info.getFragmentHosts().size() > 0) {
-            System.out.print(" Hosts: ");
-            boolean first = true;
-            for (Bundle host : info.getFragmentHosts()) {
-                System.out.print((first ? "" : ", ") + host.getBundleId());
-                first = false;
-            }
-        }
-    }
-
-    private void printFragments(BundleInfo info) {
-        if (info.getFragments().size() > 0) {
-            System.out.print(" Fragments: ");
-            boolean first = true;
-            for (Bundle host : info.getFragments()) {
-                System.out.print((first ? "" : ", ") + host.getBundleId());
-                first = false;
-            }
+    private String printHosts(BundleInfo info) {
+        if (info.getFragmentHosts().size() <= 0) {
+            return "";
+        }
+        StringBuilder builder = new StringBuilder();
+        builder.append(", Hosts: ");
+        boolean first = true;
+        for (Bundle host : info.getFragmentHosts()) {
+            builder.append((first ? "" : ", ") + host.getBundleId());
+            first = false;
+        }
+        return builder.toString();
+    }
+
+    private String printFragments(BundleInfo info) {
+        if (info.getFragments().size() <= 0) {
+            return "";
+        }
+        StringBuilder builder = new StringBuilder();
+        builder.append(", Fragments: ");
+        boolean first = true;
+        for (Bundle host : info.getFragments()) {
+            builder.append((first ? "" : ", ") + host.getBundleId());
+            first = false;
         }
+        return builder.toString();
     }
 
     private String getStateString(BundleState state) {