From f4373957b348eb744ee930d3ab74701269279371 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 6 Jul 2011 15:39:22 +0200 Subject: [PATCH] DATADOC-177 - Sort now preserves order of individual sort properties. Using a LinkedHashMap now to preserve the order of properties to be sorted upon. --- .../data/document/mongodb/query/Sort.java | 5 ++-- .../document/mongodb/query/SortTests.java | 23 ++++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/query/Sort.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/query/Sort.java index d47192533..f87a56c30 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/query/Sort.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/query/Sort.java @@ -15,7 +15,7 @@ */ package org.springframework.data.document.mongodb.query; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import com.mongodb.BasicDBObject; @@ -23,7 +23,7 @@ import com.mongodb.DBObject; public class Sort { - private Map fieldSpec = new HashMap(); + private Map fieldSpec = new LinkedHashMap(); public Sort() { } @@ -44,5 +44,4 @@ public class Sort { } return dbo; } - } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/query/SortTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/query/SortTests.java index 50970d04b..f1d35afed 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/query/SortTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/query/SortTests.java @@ -15,21 +15,32 @@ */ package org.springframework.data.document.mongodb.query; -import org.junit.Assert; +import static org.springframework.data.document.mongodb.query.Order.*; +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; + import org.junit.Test; public class SortTests { @Test public void testWithSortAscending() { - Sort s = new Sort().on("name", Order.ASCENDING); - Assert.assertEquals("{ \"name\" : 1}", s.getSortObject().toString()); + Sort s = new Sort().on("name", ASCENDING); + assertEquals("{ \"name\" : 1}", s.getSortObject().toString()); } @Test public void testWithSortDescending() { - Sort s = new Sort().on("name", Order.DESCENDING); - Assert.assertEquals("{ \"name\" : -1}", s.getSortObject().toString()); + Sort s = new Sort().on("name", DESCENDING); + assertEquals("{ \"name\" : -1}", s.getSortObject().toString()); + } + + /** + * @see DATADOC-177 + */ + @Test + public void preservesOrderKeysOnMultipleSorts() { + Sort sort = new Sort("foo", DESCENDING).on("bar", DESCENDING); + assertThat(sort.getSortObject().toString(), is("{ \"foo\" : -1 , \"bar\" : -1}")); } - }