/*
* Copyright (C) 2007 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 10. April 2007 by Guilherme Silveira
*/
package com.thoughtworks.xstream.converters.reflection;
import java.util.Map;
/**
* An interface capable of sorting fields. Implement this interface if you want to customize the
* field order in which XStream serializes objects.
*
* @author Guilherme Silveira
* @since 1.2.2
*/
public interface FieldKeySorter {
/**
* Sort the fields of a type. The method will be called with the class type that contains
* all the fields and a Map that retains the order in which the elements have been added.
* The sequence in which elements are returned by an iterator defines the processing order
* of the fields. An implementation may create a different Map with similar semantic, add
* all elements of the original map and return the new one.
*
* @param type the class that contains all the fields
* @param keyedByFieldKey a Map containing a {@link FieldKey} as key element and a
* {@link java.lang.reflect.Field} as value.
* @return a Map with all the entries of the original Map
* @since 1.2.2
*/
Map sort(Class type, Map keyedByFieldKey);
}