summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Hiesel <hiesel@google.com>2017-04-04 11:47:29 +0200
committerDavid Pursehouse <dpursehouse@collab.net>2017-04-06 00:47:56 +0000
commitcdeb08b3ea8dbb027f1fff617f5921321be5a339 (patch)
tree0caf57e09c20cab9ccfb847cd19e18def42f9085
parent47d08db6369daad02fee696260ad92a7e217c007 (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.java5
-rw-r--r--gerrit-server/src/test/java/com/google/gerrit/server/mail/receive/AbstractParserTest.java17
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;
}
}