All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feilong.lib.xstream.converters.reflection.XStream12FieldKeySorter Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

There is a newer version: 4.0.8
Show newest version
/*
 * Copyright (C) 2007, 2008, 2013 XStream Committers.
 * All rights reserved.
 *
 * The software in this package is published under the terms of the BSD
 * style license a copy of which has been included with this distribution in
 * the LICENSE.txt file.
 * 
 * Created on 19.09.2007 by Joerg Schaible
 */
package com.feilong.lib.xstream.converters.reflection;

import java.util.Map;
import java.util.TreeMap;

/**
 * Sort the fields in the order of XStream 1.2.x. Fields are returned in their declaration order,
 * fields of base classes last.
 * 
 * @author Jörg Schaible
 * @since 1.3
 */
public class XStream12FieldKeySorter implements FieldKeySorter{

    @Override
    public Map sort(final Class type,final Map keyedByFieldKey){
        final Map map = new TreeMap((o1,o2) -> {
            final FieldKey fieldKey1 = (FieldKey) o1;
            final FieldKey fieldKey2 = (FieldKey) o2;
            int i = fieldKey2.getDepth() - fieldKey1.getDepth();
            if (i == 0){
                i = fieldKey1.getOrder() - fieldKey2.getOrder();
            }
            return i;
        });
        map.putAll(keyedByFieldKey);
        keyedByFieldKey.clear();
        keyedByFieldKey.putAll(map);
        return keyedByFieldKey;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy