]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7114 Add line when changeset is invalid 761/head
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 4 Feb 2016 11:14:39 +0000 (12:14 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 5 Feb 2016 07:19:54 +0000 (08:19 +0100)
server/sonar-server/src/main/java/org/sonar/server/computation/scm/Changeset.java
server/sonar-server/src/main/java/org/sonar/server/computation/scm/ReportScmInfo.java
server/sonar-server/src/main/java/org/sonar/server/computation/scm/ScmInfoImpl.java
server/sonar-server/src/test/java/org/sonar/server/computation/scm/ReportScmInfoTest.java

index 0f0fa14ba81ab7645526e28cd7d7946bd41d9a6d..6ab3677e88f35eb49b14c483ff5394c84335b98f 100644 (file)
@@ -108,6 +108,7 @@ public final class Changeset {
     }
 
     Changeset changeset = (Changeset) o;
+
     if (date != changeset.date) {
       return false;
     }
index f1d446953d5e89480779e9e3edff5fc83ae56ff6..5921675707e8b040e00d744da7432bdd6bcb984e 100644 (file)
@@ -51,16 +51,6 @@ class ReportScmInfo implements ScmInfo {
         .transform(new LineIndexToChangeset(changesets)));
   }
 
-  private static Changeset convert(BatchReport.Changesets.Changeset changeset) {
-    checkState(changeset.hasRevision(), "Changeset must have a revision");
-    checkState(changeset.hasDate(), "Changeset must have a date");
-    return Changeset.newChangesetBuilder()
-      .setRevision(changeset.getRevision())
-      .setAuthor(changeset.hasAuthor() ? changeset.getAuthor() : null)
-      .setDate(changeset.getDate())
-      .build();
-  }
-
   @Override
   public Changeset getLatestChangeset() {
     return this.delegate.getLatestChangeset();
@@ -83,24 +73,35 @@ class ReportScmInfo implements ScmInfo {
 
   private static class LineIndexToChangeset implements Function<Integer, Changeset> {
     private final BatchReport.Changesets changesets;
-    private final Map<Integer, Changeset> changeSetCache;
+    private final Map<Integer, Changeset> changesetCache;
 
     public LineIndexToChangeset(BatchReport.Changesets changesets) {
       this.changesets = changesets;
-      changeSetCache = new HashMap<>(changesets.getChangesetCount());
+      changesetCache = new HashMap<>(changesets.getChangesetCount());
     }
 
     @Override
     @Nonnull
     public Changeset apply(@Nonnull Integer lineNumber) {
       int changesetIndex = changesets.getChangesetIndexByLine(lineNumber - 1);
-      if (changeSetCache.containsKey(changesetIndex)) {
-        return changeSetCache.get(changesetIndex);
+      Changeset changeset = changesetCache.get(changesetIndex);
+      if (changeset != null) {
+        return changeset;
       }
-      Changeset res = convert(changesets.getChangeset(changesetIndex));
-      changeSetCache.put(changesetIndex, res);
+      Changeset res = convert(changesets.getChangeset(changesetIndex), lineNumber);
+      changesetCache.put(changesetIndex, res);
       return res;
     }
+
+    private static Changeset convert(BatchReport.Changesets.Changeset changeset, int line) {
+      checkState(changeset.hasRevision(), "Changeset on line %s must have a revision", line);
+      checkState(changeset.hasDate(), "Changeset on line %s must have a date", line);
+      return Changeset.newChangesetBuilder()
+        .setRevision(changeset.getRevision())
+        .setAuthor(changeset.hasAuthor() ? changeset.getAuthor() : null)
+        .setDate(changeset.getDate())
+        .build();
+    }
   }
 
   /**
index 75288bf03e4a0834990da8cc344f91875d740ec8..3a5bba93aef92449ce2083f2f6b298a998c15cab 100644 (file)
@@ -40,7 +40,9 @@ public class ScmInfoImpl implements ScmInfo {
 
   public ScmInfoImpl(Iterable<Changeset> lineChangesets) {
     checkState(!isEmpty(lineChangesets), "A ScmInfo must have at least one Changeset and does not support any null one");
-    this.lineChangesets = from(lineChangesets).filter(CheckNotNull.INSTANCE).toArray(Changeset.class);
+    this.lineChangesets = from(lineChangesets)
+      .filter(CheckNotNull.INSTANCE)
+      .toArray(Changeset.class);
     this.latestChangeset = computeLatestChangeset(lineChangesets);
   }
 
index c74f176098765e17c3271a1e07c450cb8348f798..a36d84c386b182e4f0c7d8e2928e695348f26a91 100644 (file)
@@ -127,7 +127,7 @@ public class ReportScmInfoTest {
   @Test
   public void fail_with_ISE_when_changeset_has_no_revision() throws Exception {
     thrown.expect(IllegalStateException.class);
-    thrown.expectMessage("Changeset must have a revision");
+    thrown.expectMessage("Changeset on line 1 must have a revision");
 
     new ReportScmInfo(BatchReport.Changesets.newBuilder()
       .setComponentRef(FILE_REF)
@@ -142,7 +142,7 @@ public class ReportScmInfoTest {
   @Test
   public void fail_with_ISE_when_changeset_has_no_date() throws Exception {
     thrown.expect(IllegalStateException.class);
-    thrown.expectMessage("Changeset must have a date");
+    thrown.expectMessage("Changeset on line 1 must have a date");
 
     new ReportScmInfo(BatchReport.Changesets.newBuilder()
       .setComponentRef(FILE_REF)