aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFreddy Mallet <freddy.mallet@gmail.com>2011-10-24 17:25:24 +0200
committerFreddy Mallet <freddy.mallet@gmail.com>2011-10-24 17:25:24 +0200
commitbe8344a0b85281415989fdfa93be3c23e2add75c (patch)
tree15f3f13be929aae949766d5a03c2c6e2e8777513
parent7b85ebdefdd22560fcfeb22e5c60116690149314 (diff)
parent45a940949298b830a743eaf8866ea128f1388111 (diff)
downloadsonarqube-be8344a0b85281415989fdfa93be3c23e2add75c.tar.gz
sonarqube-be8344a0b85281415989fdfa93be3c23e2add75c.zip
Merge branch 'master' of github.com:SonarSource/sonar
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/SourceChecksum.java11
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecorator.java18
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/SourceChecksumTest.java15
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecoratorTest.java33
-rw-r--r--plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent-result.xml8
-rw-r--r--plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent.xml8
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java2
8 files changed, 63 insertions, 34 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/SourceChecksum.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/SourceChecksum.java
index 8d6c327e749..c6eba62ca15 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/SourceChecksum.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/SourceChecksum.java
@@ -33,6 +33,17 @@ public final class SourceChecksum {
// only static methods
}
+ /**
+ * @param line line number (first line has number 1)
+ * @return checksum or null if checksum not exists for line
+ */
+ public static String getChecksumForLine(List<String> checksums, Integer line) {
+ if (line == null || line < 1 || line > checksums.size()) {
+ return null;
+ }
+ return checksums.get(line - 1);
+ }
+
public static List<String> lineChecksumsOfFile(String file) {
List<String> result = Lists.newArrayList();
if (file != null) {
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecorator.java
index 67ca1ec63c5..d766618d6be 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecorator.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecorator.java
@@ -74,7 +74,7 @@ public class ViolationTrackingDecorator implements Decorator {
List<Violation> result = Lists.newArrayList();
List<String> checksums = SourceChecksum.lineChecksumsOfFile(index.getSource(context.getResource()));
for (Violation violation : context.getViolations()) {
- violation.setChecksum(getChecksumForLine(checksums, violation.getLineId()));
+ violation.setChecksum(SourceChecksum.getChecksumForLine(checksums, violation.getLineId()));
result.add(violation);
}
return result;
@@ -171,14 +171,10 @@ public class ViolationTrackingDecorator implements Decorator {
}
private boolean isSameChecksum(Violation newViolation, RuleFailureModel pastViolation) {
- return pastViolation.getChecksum() != null
- && StringUtils.equals(pastViolation.getChecksum(), newViolation.getChecksum());
+ return StringUtils.equals(pastViolation.getChecksum(), newViolation.getChecksum());
}
private boolean isSameLine(Violation newViolation, RuleFailureModel pastViolation) {
- if (pastViolation.getLine() == null && newViolation.getLineId() == null) {
- return true;
- }
return ObjectUtils.equals(pastViolation.getLine(), newViolation.getLineId());
}
@@ -201,16 +197,6 @@ public class ViolationTrackingDecorator implements Decorator {
}
}
- /**
- * @return checksum or null if checksum not exists for line
- */
- private String getChecksumForLine(List<String> checksums, Integer line) {
- if (line == null || line < 1 || line > checksums.size()) {
- return null;
- }
- return checksums.get(line - 1);
- }
-
@Override
public String toString() {
return getClass().getSimpleName();
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/SourceChecksumTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/SourceChecksumTest.java
index 3c361aa61da..92c8b954874 100644
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/SourceChecksumTest.java
+++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/SourceChecksumTest.java
@@ -19,14 +19,23 @@
*/
package org.sonar.plugins.core.timemachine;
-import org.junit.Test;
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.assertThat;
import java.util.List;
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.assertThat;
+import org.junit.Test;
public class SourceChecksumTest {
+ @Test
+ public void shouldGetChecksumForLine() {
+ List<String> checksums = SourceChecksum.lineChecksumsOfFile("line");
+ assertThat(SourceChecksum.getChecksumForLine(checksums, null), nullValue());
+ assertThat(SourceChecksum.getChecksumForLine(checksums, 0), nullValue());
+ assertThat(SourceChecksum.getChecksumForLine(checksums, 1), notNullValue());
+ assertThat(SourceChecksum.getChecksumForLine(checksums, 2), nullValue());
+ }
+
/**
* See http://jira.codehaus.org/browse/SONAR-2358
*/
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecoratorTest.java
index 1da2991ece6..5aee8dc0586 100644
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecoratorTest.java
+++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationTrackingDecoratorTest.java
@@ -31,7 +31,6 @@ import org.sonar.api.utils.DateUtils;
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
-import java.util.List;
import java.util.Map;
import static org.hamcrest.Matchers.*;
@@ -62,7 +61,22 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation1, newViolation2),
Lists.newArrayList(referenceViolation1, referenceViolation2));
assertThat(mapping.get(newViolation1), equalTo(referenceViolation1));
+ assertThat(newViolation1.isNew(), is(false));
assertThat(mapping.get(newViolation2), equalTo(referenceViolation2));
+ assertThat(newViolation2.isNew(), is(false));
+ }
+
+ /**
+ * See SONAR-2928
+ */
+ @Test
+ public void sameRuleAndNullLineAndChecksumButDifferentMessages() {
+ Violation newViolation = newViolation("new message", null, 50, "checksum1");
+ RuleFailureModel referenceViolation = newReferenceViolation("old message", null, 50, "checksum1");
+
+ Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
+ assertThat(mapping.get(newViolation), equalTo(referenceViolation));
+ assertThat(newViolation.isNew(), is(false));
}
@Test
@@ -72,6 +86,7 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
assertThat(mapping.get(newViolation), equalTo(referenceViolation));
+ assertThat(newViolation.isNew(), is(false));
}
@Test
@@ -91,6 +106,7 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
assertThat(mapping.get(newViolation), is(nullValue()));
+ assertThat(newViolation.isNew(), is(true));
}
@Test
@@ -100,6 +116,7 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
assertThat(mapping.get(newViolation), equalTo(referenceViolation));
+ assertThat(newViolation.isNew(), is(false));
}
/**
@@ -112,6 +129,7 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
assertThat(mapping.get(newViolation), equalTo(referenceViolation));
+ assertThat(newViolation.isNew(), is(false));
}
@Test
@@ -121,6 +139,7 @@ public class ViolationTrackingDecoratorTest {
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
assertThat(mapping.get(newViolation), is(nullValue()));
+ assertThat(newViolation.isNew(), is(true));
}
@Test
@@ -137,7 +156,7 @@ public class ViolationTrackingDecoratorTest {
public void shouldCompareViolationsWithDatabaseFormat() {
// violation messages are trimmed and can be abbreviated when persisted in database.
// Comparing violation messages must use the same format.
- Violation newViolation = newViolation("message", 1, 50, "checksum1");
+ Violation newViolation = newViolation(" message ", 1, 50, "checksum1");
RuleFailureModel referenceViolation = newReferenceViolation(" message ", 1, 50, "checksum2");
Map<Violation, RuleFailureModel> mapping = decorator.mapViolations(Lists.newArrayList(newViolation), Lists.newArrayList(referenceViolation));
@@ -170,19 +189,19 @@ public class ViolationTrackingDecoratorTest {
assertThat(newViolation.isNew(), is(false));
}
- private Violation newViolation(String message, int lineId, int ruleId) {
+ private Violation newViolation(String message, Integer lineId, int ruleId) {
Rule rule = Rule.create().setKey("rule");
rule.setId(ruleId);
return Violation.create(rule, null).setLineId(lineId).setMessage(message);
}
- private Violation newViolation(String message, int lineId, int ruleId, String lineChecksum) {
+ private Violation newViolation(String message, Integer lineId, int ruleId, String lineChecksum) {
return newViolation(message, lineId, ruleId).setChecksum(lineChecksum);
}
- private RuleFailureModel newReferenceViolation(String message, int lineId, int ruleId, String lineChecksum) {
+ private RuleFailureModel newReferenceViolation(String message, Integer lineId, int ruleId, String lineChecksum) {
RuleFailureModel referenceViolation = new RuleFailureModel();
- referenceViolation.setId(lineId + ruleId);
+ referenceViolation.setId(violationId++);
referenceViolation.setLine(lineId);
referenceViolation.setMessage(message);
referenceViolation.setRuleId(ruleId);
@@ -190,4 +209,6 @@ public class ViolationTrackingDecoratorTest {
return referenceViolation;
}
+ private int violationId = 0;
+
}
diff --git a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent-result.xml b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent-result.xml
index 6ec77c2f90b..d7a0f131936 100644
--- a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent-result.xml
+++ b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent-result.xml
@@ -152,16 +152,16 @@
<events id="1" name="Version 0.9" resource_id="1" snapshot_id="1" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="2" name="Version 1.0-SNAPSHOT" resource_id="1" snapshot_id="130" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="3" name="Version 1.1-SNAPSHOT" resource_id="1" snapshot_id="520" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="4" name="Version 1.2-SNAPSHOT" resource_id="1" snapshot_id="530" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
</dataset> \ No newline at end of file
diff --git a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent.xml b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent.xml
index 3becebd619a..53b0530a117 100644
--- a/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent.xml
+++ b/plugins/sonar-dbcleaner-plugin/src/test/resources/org/sonar/plugins/dbcleaner/period/DefaultPeriodCleanerTest/dbContent.xml
@@ -135,15 +135,15 @@ to ensure that unit tests pass on any locale.
<events id="1" name="Version 0.9" resource_id="1" snapshot_id="1" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="2" name="Version 1.0-SNAPSHOT" resource_id="1" snapshot_id="130" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="3" name="Version 1.1-SNAPSHOT" resource_id="1" snapshot_id="520" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
<events id="4" name="Version 1.2-SNAPSHOT" resource_id="1" snapshot_id="530" category="Version" description="[null]"
- event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]" data="[null]"/>
+ event_date="2008-12-02 13:58:00.00" CREATED_AT="[null]"/>
</dataset> \ No newline at end of file
diff --git a/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java b/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java
index ffa330334eb..94becc59ec7 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/index/DefaultIndex.java
@@ -399,6 +399,8 @@ public class DefaultIndex extends SonarIndex {
public Event addEvent(Resource resource, String name, String description, String category, Date date) {
Event event = new Event(name, description, category);
event.setDate(date);
+ event.setCreatedAt(new Date());
+
persistence.saveEvent(resource, event);
return null;
}
diff --git a/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java b/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java
index 5700b8e0ee0..a645d78d5c8 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java
+++ b/sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java
@@ -42,7 +42,7 @@ public class SchemaMigration {
- complete the Derby DDL file used for unit tests : sonar-testing-harness/src/main/resources/org/sonar/test/persistence/sonar-test.ddl
*/
- public static final int LAST_VERSION = 220;
+ public static final int LAST_VERSION = 221;
public final static String TABLE_NAME = "schema_migrations";