From 3aa61a4cce3bf1769aa6d1b1c7057f73739f642e Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Lievremont Date: Tue, 28 Oct 2014 16:50:06 +0100 Subject: [PATCH] SONAR-5784 Keep query-specified order of facets in result --- .../java/org/sonar/server/search/QueryContext.java | 3 ++- .../sonar/server/search/ws/SearchRequestHandler.java | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/search/QueryContext.java b/server/sonar-server/src/main/java/org/sonar/server/search/QueryContext.java index 1364e6950d8..66d2244f9ee 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/search/QueryContext.java +++ b/server/sonar-server/src/main/java/org/sonar/server/search/QueryContext.java @@ -29,6 +29,7 @@ import java.util.Collection; import java.util.Set; import static com.google.common.collect.Sets.newHashSet; +import static com.google.common.collect.Sets.newLinkedHashSet; /** * Various Elasticsearch request options: paging, fields and facets @@ -44,7 +45,7 @@ public class QueryContext { private int offset = DEFAULT_OFFSET; private int limit = DEFAULT_LIMIT; - private Set facets = newHashSet(); + private Set facets = newLinkedHashSet(); private Set fieldsToReturn = newHashSet(); private boolean scroll = false; private boolean showFullResult = false; diff --git a/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java b/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java index 223ebedf203..2631a249f1c 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java +++ b/server/sonar-server/src/main/java/org/sonar/server/search/ws/SearchRequestHandler.java @@ -33,7 +33,6 @@ import javax.annotation.CheckForNull; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.Map; public abstract class SearchRequestHandler implements RequestHandler { @@ -114,7 +113,7 @@ public abstract class SearchRequestHandler implements RequestHand this.writeStatistics(json, result, context); doContextResponse(request, context, result, json); if (context.isFacet()) { - writeFacets(result, json); + writeFacets(context, result, json); } json.endObject().close(); } @@ -140,13 +139,13 @@ public abstract class SearchRequestHandler implements RequestHand json.prop(PARAM_PAGE_SIZE, context.getLimit()); } - protected void writeFacets(Result results, JsonWriter json) { + protected void writeFacets(QueryContext context, Result results, JsonWriter json) { json.name("facets").beginArray(); - for (Map.Entry> facet : results.getFacets().entrySet()) { + for (String facetName: context.facets()) { json.beginObject(); - json.prop("property", facet.getKey()); + json.prop("property", facetName); json.name("values").beginArray(); - for (FacetValue facetValue : facet.getValue()) { + for (FacetValue facetValue : results.getFacets().get(facetName)) { json.beginObject(); json.prop("val", facetValue.getKey()); json.prop("count", facetValue.getValue()); -- 2.39.5