[KARAF-2902] Separate section for Karaf-xxx headers and sort headers

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

Branch: refs/heads/master
Commit: fd4b3f67799c1d37f6756e1a9d2fe4c3c780f4e9
Parents: 6727c1b
Author: Guillaume Nodet <gno...@gmail.com>
Authored: Fri Apr 11 19:19:13 2014 +0200
Committer: Guillaume Nodet <gno...@gmail.com>
Committed: Fri Apr 11 19:20:04 2014 +0200

----------------------------------------------------------------------
 .../apache/karaf/bundle/command/Headers.java    | 27 ++++++++++++++++----
 1 file changed, 22 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/fd4b3f67/bundle/core/src/main/java/org/apache/karaf/bundle/command/Headers.java
----------------------------------------------------------------------
diff --git 
a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Headers.java 
b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Headers.java
index 16083ff..5cf92c3 100644
--- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/Headers.java
+++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/Headers.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.felix.utils.manifest.Attribute;
 import org.apache.felix.utils.manifest.Clause;
@@ -48,6 +49,7 @@ import org.osgi.framework.wiring.BundleWiring;
 @Service
 public class Headers extends BundlesCommand {
 
+    protected final static String KARAF_PREFIX = "Karaf-";
     protected final static String BUNDLE_PREFIX = "Bundle-";
     protected final static String PACKAGE_SUFFFIX = "-Package";
     protected final static String SERVICE_SUFFIX = "-Service";
@@ -90,10 +92,11 @@ public class Headers extends BundlesCommand {
 
     protected String generateFormattedOutput(Bundle bundle) {
         StringBuilder output = new StringBuilder();
-        Map<String, Object> otherAttribs = new HashMap<String, Object>();
-        Map<String, Object> bundleAttribs = new HashMap<String, Object>();
-        Map<String, Object> serviceAttribs = new HashMap<String, Object>();
-        Map<String, Object> packagesAttribs = new HashMap<String, Object>();
+        Map<String, Object> otherAttribs = new TreeMap<String, Object>();
+        Map<String, Object> karafAttribs = new TreeMap<String, Object>();
+        Map<String, Object> bundleAttribs = new TreeMap<String, Object>();
+        Map<String, Object> serviceAttribs = new TreeMap<String, Object>();
+        Map<String, Object> packagesAttribs = new TreeMap<String, Object>();
         Dictionary<String, String> dict = bundle.getHeaders();
         Enumeration<String> keys = dict.keys();
 
@@ -101,7 +104,10 @@ public class Headers extends BundlesCommand {
         while (keys.hasMoreElements()) {
             String k = (String) keys.nextElement();
             Object v = dict.get(k);
-            if (k.startsWith(BUNDLE_PREFIX)) {
+            if (k.startsWith(KARAF_PREFIX)) {
+                // starts with Karaf-xxx
+                karafAttribs.put(k, v);
+            } else if (k.startsWith(BUNDLE_PREFIX)) {
                 // starts with Bundle-xxx
                 bundleAttribs.put(k, v);
             } else if (k.endsWith(SERVICE_SUFFIX) || 
k.endsWith(CAPABILITY_SUFFIX)) {
@@ -124,6 +130,8 @@ public class Headers extends BundlesCommand {
         // -----------------------
         // all other attributes
         //
+        // all Karaf attributes
+        //
         // all Bundle attributes
         //
         // all Service attributes
@@ -138,6 +146,15 @@ public class Headers extends BundlesCommand {
             output.append('\n');
         }
 
+        it = karafAttribs.entrySet().iterator();
+        while (it.hasNext()) {
+            Map.Entry<String, Object> e = it.next();
+            output.append(String.format("%s = %s\n", e.getKey(), 
ShellUtil.getValueString(e.getValue())));
+        }
+        if (karafAttribs.size() > 0) {
+            output.append('\n');
+        }
+
         it = bundleAttribs.entrySet().iterator();
         while (it.hasNext()) {
             Map.Entry<String, Object> e = it.next();

Reply via email to