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

org.eclipse.core.internal.preferences.SortedProperties Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2004, 2015 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Jan-Ove Weichel ([email protected]) - bug 474359
 *******************************************************************************/
package org.eclipse.core.internal.preferences;

import java.util.*;

/**
 * A {@link Properties} class whose entries are sorted by key; can only be used in limited scenarios
 * like storing properties to a file.
 * 

* Implementation note: The implementations of the {@link #keys()} and {@link #entrySet()} methods * violate the contracts of {@link Properties#keySet()} and {@link Properties#entrySet()}, because the returned sets * are not backed by this map. * Overriding both methods is necessary to support Oracle and IBM VMS, see * bug 325000. *

*/ public class SortedProperties extends Properties { // Warning: This class is referenced by our friend org.eclipse.core.internal.resources.ProjectPreferences private static final long serialVersionUID = 1L; @Override public synchronized Enumeration keys() { TreeSet set = new TreeSet<>(); for (Enumeration e = super.keys(); e.hasMoreElements();) { set.add(e.nextElement()); } return Collections.enumeration(set); } @Override public Set> entrySet() { TreeSet> set = new TreeSet<>((Map.Entry e1, Map.Entry e2) -> { String s1 = (String) e1.getKey(); String s2 = (String) e2.getKey(); return s1.compareTo(s2); }); for (Map.Entry entry : super.entrySet()) { set.add(entry); } return set; } }