private Map convertObject()

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;
    }