You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2017/07/25 22:19:27 UTC
commons-collections git commit: [COLLECTIONS-654] Add class
SortedProperties to sort keys.
Repository: commons-collections
Updated Branches:
refs/heads/master ee512ca28 -> ee851e403
[COLLECTIONS-654] Add class SortedProperties to sort keys.
Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/ee851e40
Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/ee851e40
Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/ee851e40
Branch: refs/heads/master
Commit: ee851e403b5ab4b6b33713b08f9568e966ace052
Parents: ee512ca
Author: Gary Gregory <gg...@apache.org>
Authored: Tue Jul 25 15:19:25 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Tue Jul 25 15:19:25 2017 -0700
----------------------------------------------------------------------
src/changes/changes.xml | 3 ++
.../properties/SortedProperties.java | 51 ++++++++++++++++++++
.../properties/SortedPropertiesTest.java | 38 +++++++++++++++
3 files changed, 92 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/ee851e40/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0373434..337cb81 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -42,6 +42,9 @@
<action issue="COLLECTIONS-586" dev="ggregory" type="add" due-to="Shailender Bathula, Gary Gregory">
PatriciaTrie prefixMap clear throws NullPointerException.
</action>
+ <action issue="COLLECTIONS-654" dev="ggregory" type="add">
+ Add class SortedProperties to sort keys.
+ </action>
</release>
<release version="4.1" date="2015-11-28" description="This is a security and minor release.">
<action issue="COLLECTIONS-508" dev="tn" type="add">
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/ee851e40/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java b/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java
new file mode 100644
index 0000000..a9c196c
--- /dev/null
+++ b/src/main/java/org/apache/commons/collections4/properties/SortedProperties.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.collections4.properties;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+
+import org.apache.commons.collections4.iterators.IteratorEnumeration;
+
+/**
+ * A drop-in replacement for {@link Properties} for sorting keys.
+ * <p>
+ * Overrides {@link Properties#keys()} to sort keys. Allows other methods on the superclass to work with sorted keys.
+ * </p>
+ *
+ * @since 4.2
+ */
+public class SortedProperties extends Properties {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public synchronized Enumeration<Object> keys() {
+ final Set<Object> keySet = keySet();
+ final List<String> keys = new ArrayList<String>(keySet.size());
+ for (final Object key : keySet) {
+ keys.add(key.toString());
+ }
+ Collections.sort(keys);
+ return new IteratorEnumeration<Object>(keys.iterator());
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/ee851e40/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java b/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java
new file mode 100644
index 0000000..ce294bf
--- /dev/null
+++ b/src/test/java/org/apache/commons/collections4/properties/SortedPropertiesTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.collections4.properties;
+
+import java.util.Enumeration;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SortedPropertiesTest {
+
+ @Test
+ public void testKeys() {
+ final SortedProperties sortedProperties = new SortedProperties();
+ for (char ch = 'Z'; ch >= 'A'; ch--) {
+ sortedProperties.put(String.valueOf(ch), "Value" + ch);
+ }
+ final Enumeration<Object> keys = sortedProperties.keys();
+ for (char ch = 'A'; ch <= 'Z'; ch++) {
+ Assert.assertEquals(String.valueOf(ch), keys.nextElement());
+ }
+ }
+}