FELIX-2508 Replaced TreeMap used for sorting by a Comparator implementation used together with Arrays.sort.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@981484 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
index 38b728f..1481b25 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/compendium/ComponentsServlet.java
@@ -20,9 +20,10 @@
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 @@
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 @@
}
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 @@
}
}
+
+ 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() );