in src/main/java/org/apache/sling/jmx/provider/impl/AttributeResource.java [211:248]
private Map<String, Object> convertObject(final TabularData td) {
final TabularType type = td.getTabularType();
final Map<String, Object> result = new HashMap<String, Object>();
result.put(Constants.PROP_RESOURCE_SUPER_TYPE, Constants.TYPE_ATTRIBUTES);
result.put(Constants.PROP_RESOURCE_TYPE, type.getTypeName());
final Map<String, Map<String, Object>> rows = new LinkedHashMap<String, Map<String, Object>>();
int rowIndex = 1;
@SuppressWarnings("unchecked")
final List<CompositeData> values = new ArrayList<CompositeData>((Collection<CompositeData>)td.values());
Collections.sort(values, new Comparator<CompositeData>() {
public int compare(final CompositeData o1, final CompositeData o2) {
for(final String name : type.getIndexNames()) {
final Object value1 = o1.get(name);
final Object value2 = o2.get(name);
final int result;
if ( value1 instanceof Comparable ) {
result = ((Comparable)value1).compareTo(value2);
} else {
result = value1.toString().compareTo(value2.toString());
}
if ( result != 0 ) {
return result;
}
}
return 0;
}
});
for(final CompositeData data : values) {
rows.put(String.valueOf(rowIndex), convertObject(data));
rowIndex++;
}
result.put(Constants.RSRC_VALUE, rows);
return result;
}