package org.osmorc.util; import java.util.*; /** * Implementation of {@link Properties} which has a defined order of elements. Properties will be returned in the same order in which they are inserted. */ @SuppressWarnings({"unchecked"}) public class OrderedProperties extends Properties { private final LinkedHashSet keys = new LinkedHashSet(); public synchronized Enumeration<Object> keys() { return Collections.enumeration(keys); } @Override public Set<String> stringPropertyNames() { return Collections.unmodifiableSet(keys); } @Override public Enumeration<?> propertyNames() { return Collections.enumeration(keys); } public synchronized Object put(Object key, Object value) { keys.add(key); //noinspection UseOfPropertiesAsHashtable return super.put(key, value); } @Override public synchronized Object remove(Object key) { keys.remove(key); return super.remove(key); } @Override public synchronized void clear() { keys.clear(); super.clear(); } }