summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaša Živkov <sasa.zivkov@sap.com>2016-01-18 15:43:17 +0100
committerSaša Živkov <zivkov@gmail.com>2016-01-19 09:24:28 +0000
commit970f1c9374385327e940ea245715a169f4686ed8 (patch)
tree38c53f01f5097b4fc6265c11d44408c2deaf18ca
parent7c6ff451372ee4f06c091e4b5dc939bb46b3aebb (diff)
Return case-preserving email when suggesting reviewers
While Ie82c014e0 introduced case-insensitive by email search for reviewers, it also introduced a bug by returning the lower-cased email to the client. In case when an email for an account contained upper-case letter(s), this account couldn't be added as a reviewer by selecting it from the suggested list of accounts because its email (as received from the suggest reviewers REST call) was lowercased and Gerrit couldn't find such an account when adding the reviewer. The Ie82c014e0 already stored both original and lowercased email fields in the index, it just did it in a wrong order. Lucene's Document.get(fieldName) returns the first value of the field when there are multiple values. To fix the issue swap to order of the lower-cased and original-case values for the EMAIL field in the index. Change-Id: I4d9025810252641028288d961a1f9e62dd7b8e3e
-rw-r--r--gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java6
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/ReviewerSuggestionCache.java2
2 files changed, 6 insertions, 2 deletions
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
index 7fee9f4fd1..34d6f26e9b 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/SuggestReviewersIT.java
@@ -62,7 +62,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
"users1");
user2 = accounts.create("user2", "user2@example.com", "First2 Last2",
"users2");
- user3 = accounts.create("user3", "user3@example.com", "First3 Last3",
+ user3 = accounts.create("user3", "USER3@example.com", "First3 Last3",
"users1", "users2");
}
@@ -207,6 +207,10 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
reviewers = suggestReviewers(changeId, "user1 example", 2);
assertThat(reviewers).hasSize(1);
+
+ reviewers = suggestReviewers(changeId, "user3@example.com", 2);
+ assertThat(reviewers).hasSize(1);
+ assertThat(reviewers.get(0).account.email).isEqualTo("USER3@example.com");
}
@Test
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ReviewerSuggestionCache.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ReviewerSuggestionCache.java
index c4c918644e..1a2551cb87 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ReviewerSuggestionCache.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ReviewerSuggestionCache.java
@@ -172,9 +172,9 @@ public class ReviewerSuggestionCache {
doc.add(new TextField(NAME, a.getFullName(), Store.YES));
}
if (a.getPreferredEmail() != null) {
+ doc.add(new TextField(EMAIL, a.getPreferredEmail(), Store.YES));
doc.add(new StringField(EMAIL, a.getPreferredEmail().toLowerCase(),
Store.YES));
- doc.add(new TextField(EMAIL, a.getPreferredEmail(), Store.YES));
}
AccountExternalIdAccess extIdAccess = db.get().accountExternalIds();
String username = AccountState.getUserName(