diff options
author | Patrick Hiesel <hiesel@google.com> | 2017-04-04 11:47:29 +0200 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2017-04-06 00:47:56 +0000 |
commit | cdeb08b3ea8dbb027f1fff617f5921321be5a339 (patch) | |
tree | 0caf57e09c20cab9ccfb847cd19e18def42f9085 | |
parent | 47d08db6369daad02fee696260ad92a7e217c007 (diff) |
Use start of comment range for email parser
When sending emails, we don't use the line number, but the start of the
range comment to link back to the comment. The email parser was
exclusively using lineNbr which caused a comment to be identified as a
file comment instead of a reply to an inline comment.
This changes fixes the problem.
Bug: Issue 5794
Change-Id: Ib7690f619793d0db703eecd5cfe2b4f2ad6c9ede
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/ParserUtil.java | 5 | ||||
-rw-r--r-- | gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java | 17 |
2 files changed, 19 insertions, 3 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/ParserUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/ParserUtil.java index bfead94b96..f8f64e2e4c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/ParserUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/ParserUtil.java @@ -67,8 +67,9 @@ public class ParserUtil { /** Check if string is an inline comment url on a patch set or the base */ public static boolean isCommentUrl(String str, String changeUrl, Comment comment) { - return str.equals(filePath(changeUrl, comment) + "@" + comment.lineNbr) - || str.equals(filePath(changeUrl, comment) + "@a" + comment.lineNbr); + int lineNbr = comment.range == null ? comment.lineNbr : comment.range.startLine; + return str.equals(filePath(changeUrl, comment) + "@" + lineNbr) + || str.equals(filePath(changeUrl, comment) + "@a" + lineNbr); } /** Generate the fully qualified filepath */ diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java index 3efae43149..271323cba9 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java @@ -65,6 +65,21 @@ public class AbstractParserTest { return c; } + protected static Comment newRangeComment(String uuid, String file, String message, int line) { + Comment c = + new Comment( + new Comment.Key(uuid, file, 1), + new Account.Id(0), + new Timestamp(0L), + (short) 0, + message, + "", + false); + c.range = new Comment.Range(line, 1, line + 1, 1); + c.lineNbr = line + 1; + return c; + } + /** Returns a MailMessage.Builder with all required fields populated. */ protected static MailMessage.Builder newMailMessageBuilder() { MailMessage.Builder b = MailMessage.builder(); @@ -81,7 +96,7 @@ public class AbstractParserTest { comments.add(newComment("c1", "gerrit-server/test.txt", "comment", 0)); comments.add(newComment("c2", "gerrit-server/test.txt", "comment", 2)); comments.add(newComment("c3", "gerrit-server/test.txt", "comment", 3)); - comments.add(newComment("c4", "gerrit-server/readme.txt", "comment", 3)); + comments.add(newRangeComment("c4", "gerrit-server/readme.txt", "comment", 3)); return comments; } } |