package edu.umd.cs.findbugs.config; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Properties; import java.util.Set; /** * @author pugh */ public final class SortedProperties extends Properties { /** * Overriden to be able to write properties sorted by keys to the disk * * @see java.util.Hashtable#keys() */ @SuppressWarnings("unchecked") @Override public synchronized Enumeration<Object> keys() { // sort elements based on detector (prop key) names Set set = keySet(); return (Enumeration<Object>) sortKeys(set); } /** * To be compatible with version control systems, we need to sort properties * before storing them to disk. Otherwise each change may lead to problems * by diff against previous version - because Property entries are randomly * distributed (it's a map). * * @param keySet * non null set instance to sort * @return non null list wich contains all given keys, sorted * lexicographically. The list may be empty if given set was empty */ static public Enumeration<?> sortKeys(Set<String> keySet) { List<String> sortedList = new ArrayList<String>(); sortedList.addAll(keySet); Collections.sort(sortedList); return Collections.enumeration(sortedList); } }