]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5329 - ActivityIndex can use additional Filters
authorStephane Gamard <stephane.gamard@searchbox.com>
Thu, 19 Jun 2014 14:16:57 +0000 (16:16 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Thu, 19 Jun 2014 14:17:52 +0000 (16:17 +0200)
sonar-server/src/main/java/org/sonar/server/activity/ActivityService.java
sonar-server/src/main/java/org/sonar/server/activity/index/ActivityIndex.java
sonar-server/src/test/java/org/sonar/server/activity/ActivityBackendMediumTest.java
sonar-server/src/test/java/org/sonar/server/activity/ActivityServiceMediumTest.java

index 7f7149d3accd9d86331ddefe9f02210866af70b7..08b6b350673cb76c7f359886a3e33dcbea70c563 100644 (file)
@@ -84,6 +84,8 @@ public class ActivityService {
   }
 
   public Result<Activity> search(ActivityQuery query, QueryOptions options) {
-    return indexClient.get(ActivityIndex.class).search(query, options);
+    ActivityIndex index = indexClient.get(ActivityIndex.class);
+    return
+      new Result<Activity>(index, index.search(query, options));
   }
 }
index 026c663ae88f192f6b41b77759852885beb524a6..39262fcf7ffde3afbada424652001c42765b9c17 100644 (file)
@@ -26,6 +26,7 @@ import org.elasticsearch.common.settings.ImmutableSettings;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.index.query.AndFilterBuilder;
+import org.elasticsearch.index.query.FilterBuilder;
 import org.elasticsearch.index.query.FilterBuilders;
 import org.elasticsearch.index.query.OrFilterBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
@@ -92,7 +93,12 @@ public class ActivityIndex extends BaseIndex<Activity, ActivityDto, String> {
       .get());
   }
 
-  public Result<Activity> search(ActivityQuery query, QueryOptions options) {
+  public SearchResponse search(ActivityQuery query, QueryOptions options) {
+    return this.search(query, options, null);
+  }
+
+  public SearchResponse search(ActivityQuery query, QueryOptions options,
+                               FilterBuilder domainFilter) {
 
     // Prepare query
     SearchRequestBuilder esSearch = getClient()
@@ -114,6 +120,11 @@ public class ActivityIndex extends BaseIndex<Activity, ActivityDto, String> {
       .from(query.getSince())
       .to(query.getTo()));
 
+    //Add any additional domain filter
+    if (domainFilter != null) {
+      filter.add(domainFilter);
+    }
+
     esSearch.setQuery(QueryBuilders.filteredQuery(
       QueryBuilders.matchAllQuery(), filter));
 
@@ -122,8 +133,6 @@ public class ActivityIndex extends BaseIndex<Activity, ActivityDto, String> {
       esSearch.setScroll(TimeValue.timeValueMinutes(3));
     }
 
-    SearchResponse esResult = esSearch.get();
-
-    return new Result<Activity>(this, esResult);
+    return esSearch.get();
   }
 }
index df489a132edbe64bdcd20ff59153842528eb47ab..9c3dc5e7deb5656a85d275f5ccac646b0d3876e8 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.activity;
 
 
 import com.google.common.collect.ImmutableMap;
+import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.common.collect.Iterables;
 import org.junit.After;
 import org.junit.Before;
@@ -34,6 +35,7 @@ import org.sonar.server.activity.index.ActivityIndex;
 import org.sonar.server.activity.index.ActivityQuery;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.search.QueryOptions;
+import org.sonar.server.search.Result;
 import org.sonar.server.tester.ServerTester;
 
 import java.util.Iterator;
@@ -119,7 +121,10 @@ public class ActivityBackendMediumTest {
 
     // 2. assert scrollable
     int count = 0;
-    Iterator<Activity> logs = index.search(new ActivityQuery(), new QueryOptions().setScroll(true)).scroll();
+
+    SearchResponse result = index.search(new ActivityQuery(), new QueryOptions().setScroll(true));
+    Iterator<Activity> logs = new Result<Activity>(index, result).scroll();
+
     while (logs.hasNext()) {
       logs.next();
       count++;
index 902c42542c7067e6eae1af2fb4f143828f8d1076..a317418eadfea27d1ae8547179403de231af00bc 100644 (file)
@@ -21,6 +21,7 @@ package org.sonar.server.activity;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
+import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.common.collect.Iterables;
 import org.joda.time.DateTime;
 import org.junit.After;
@@ -85,9 +86,10 @@ public class ActivityServiceMediumTest {
     dbSession.commit();
     assertThat(index.findAll().getTotal()).isEqualTo(1);
 
-    Result<Activity> result = index.search(service.newActivityQuery(), new QueryOptions());
-    assertThat(result.getTotal()).isEqualTo(1L);
-    assertThat(result.getHits().get(0).message()).isEqualTo(testValue);
+    SearchResponse result = index.search(service.newActivityQuery(), new QueryOptions());
+    assertThat(result.getHits().getTotalHits()).isEqualTo(1L);
+    Result<Activity> activityResult = new Result<Activity>(index, result);
+    assertThat(activityResult.getHits().get(0).message()).isEqualTo(testValue);
   }
 
 
@@ -98,9 +100,10 @@ public class ActivityServiceMediumTest {
     dbSession.commit();
     assertThat(index.findAll().getTotal()).isEqualTo(1);
 
-    Result<Activity> result = index.search(service.newActivityQuery(), new QueryOptions());
-    assertThat(result.getTotal()).isEqualTo(1L);
-    assertThat(result.getHits().get(0).details().get(test_key)).isEqualTo(test_value);
+    SearchResponse result = index.search(service.newActivityQuery(), new QueryOptions());
+    assertThat(result.getHits().getTotalHits()).isEqualTo(1L);
+    Result<Activity> activityResult = new Result<Activity>(index, result);
+    assertThat(activityResult.getHits().get(0).details().get(test_key)).isEqualTo(test_value);
   }
 
 
@@ -182,11 +185,14 @@ public class ActivityServiceMediumTest {
     // 0. assert Base case
     assertThat(dao.findAll(dbSession)).hasSize(max);
 
-    Result<Activity> result = index.search(service.newActivityQuery(), new QueryOptions().setScroll(true));
-    assertThat(result.getTotal()).isEqualTo(max);
-    assertThat(result.getHits()).hasSize(0);
+    SearchResponse result = index.search(service.newActivityQuery(), new QueryOptions().setScroll(true));
+    assertThat(result.getHits().getTotalHits()).isEqualTo(max);
+    Result<Activity> activityResult = new Result<Activity>(index, result);
+
+    assertThat(activityResult.getTotal()).isEqualTo(max);
+    assertThat(activityResult.getHits()).hasSize(0);
     int count = 0;
-    Iterator<Activity> logIterator = result.scroll();
+    Iterator<Activity> logIterator = activityResult.scroll();
     while (logIterator.hasNext()) {
       count++;
       logIterator.next();