You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2010/08/02 14:31:06 UTC

svn commit: r981484 - /felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java

Author: fmeschbe
Date: Mon Aug  2 12:31:05 2010
New Revision: 981484

URL: http://svn.apache.org/viewvc?rev=981484&view=rev
Log:
FELIX-2508 Replaced TreeMap used for sorting by a Comparator implementation used together with Arrays.sort.

Modified:
    felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java

Modified: felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
URL: http://svn.apache.org/viewvc/felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java?rev=981484&r1=981483&r2=981484&view=diff
==============================================================================
--- felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java (original)
+++ felix/trunk/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java Mon Aug  2 12:31:05 2010
@@ -20,9 +20,10 @@ package org.apache.felix.webconsole.inte
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Dictionary;
 import java.util.Iterator;
-import java.util.TreeMap;
 import java.util.TreeSet;
 
 import javax.servlet.ServletException;
@@ -190,22 +191,18 @@ public class ComponentsServlet extends S
                 else
                 {
                     // order components by name
-                    TreeMap componentMap = new TreeMap();
-                    for ( int i = 0; i < components.length; i++ )
-                    {
-                        Component c = components[i];
-                        componentMap.put( c.getName(), c );
-                    }
+                    sortComponents( components );
 
                     final StringBuffer buffer = new StringBuffer();
-                    buffer.append(componentMap.size());
-                    buffer.append(" component");
-                    if ( componentMap.size() != 1 ) {
-                        buffer.append('s');
+                    buffer.append( components.length );
+                    buffer.append( " component" );
+                    if ( components.length != 1 )
+                    {
+                        buffer.append( 's' );
                     }
-                    buffer.append(" installed.");
-                    jw.key("status");
-                    jw.value(componentMap.size());
+                    buffer.append( " installed." );
+                    jw.key( "status" );
+                    jw.value( components.length );
 
                     // render components
                     jw.key( "data" );
@@ -216,9 +213,9 @@ public class ComponentsServlet extends S
                     }
                     else
                     {
-                        for ( Iterator ci = componentMap.values().iterator(); ci.hasNext(); )
+                        for ( int i = 0; i < components.length; i++ )
                         {
-                            component( jw, ( Component ) ci.next(), false );
+                            component( jw, components[i], false );
                         }
                     }
                     jw.endArray();
@@ -233,6 +230,26 @@ public class ComponentsServlet extends S
         }
     }
 
+
+    private void sortComponents( Component[] components )
+    {
+        Arrays.sort( components, new Comparator()
+        {
+            public int compare( Object o0, Object o1 )
+            {
+                final Component c0 = ( Component ) o0;
+                final Component c1 = ( Component ) o1;
+                final int nameCmp = c0.getName().compareTo( c1.getName() );
+                if ( nameCmp != 0 )
+                {
+                    return nameCmp;
+                }
+                return ( c0.getId() < c1.getId() ) ? -1 : ( ( c0.getId() > c1.getId() ) ? 1 : 0 );
+            }
+        } );
+    }
+
+
     private void component( JSONWriter jw, Component component, boolean details ) throws JSONException
     {
         String id = String.valueOf( component.getId() );