From 5cc143c7351b3a5d8334a59b42720407232f4153 Mon Sep 17 00:00:00 2001 From: Evgeny Mandrikov Date: Tue, 19 Apr 2011 13:47:26 +0400 Subject: [PATCH] SONAR-2358 Don't use org.codehaus.plexus.util.StringInputStream to calculate checksums for violations --- .../ViolationPersisterDecorator.java | 23 ++++++------------- .../ViolationPersisterDecoratorTest.java | 2 ++ 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecorator.java index 832a4be13b0..8360475d550 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecorator.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecorator.java @@ -23,10 +23,8 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; -import org.codehaus.plexus.util.StringInputStream; import org.sonar.api.batch.*; import org.sonar.api.database.model.RuleFailureModel; import org.sonar.api.database.model.SnapshotSource; @@ -35,11 +33,9 @@ import org.sonar.api.resources.Resource; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; import org.sonar.api.rules.Violation; -import org.sonar.api.utils.SonarException; import org.sonar.batch.components.PastViolationsLoader; import org.sonar.batch.index.ViolationPersister; -import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -108,19 +104,14 @@ public class ViolationPersisterDecorator implements Decorator { return source == null || source.getData() == null ? Collections.emptyList() : getChecksums(source.getData()); } + /** + * @param data can't be null + */ static List getChecksums(String data) { + String[] lines = data.split("\r?\n|\r", -1); List result = Lists.newArrayList(); - StringInputStream stream = new StringInputStream(data); - try { - List lines = IOUtils.readLines(stream); - for (String line : lines) { - result.add(getChecksum(line)); - } - } catch (IOException e) { - throw new SonarException("Unable to calculate checksums", e); - - } finally { - IOUtils.closeQuietly(stream); + for (String line : lines) { + result.add(getChecksum(line)); } return result; } @@ -145,7 +136,7 @@ public class ViolationPersisterDecorator implements Decorator { */ RuleFailureModel selectPastViolation(Violation violation, Multimap pastViolationsByRule) { Collection pastViolations = pastViolationsByRule.get(violation.getRule()); - if (pastViolations==null || pastViolations.isEmpty()) { + if (pastViolations == null || pastViolations.isEmpty()) { // skip violation, if there is no past violations with same rule return null; } diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecoratorTest.java index daf343330c6..0c715997b39 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecoratorTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecoratorTest.java @@ -48,9 +48,11 @@ public class ViolationPersisterDecoratorTest { public void shouldGenerateCorrectChecksums() { List crlf = ViolationPersisterDecorator.getChecksums("Hello\r\nWorld"); List lf = ViolationPersisterDecorator.getChecksums("Hello\nWorld"); + List cr = ViolationPersisterDecorator.getChecksums("Hello\rWorld"); assertThat(crlf.size(), is(2)); assertThat(crlf.get(0), not(equalTo(crlf.get(1)))); assertThat(lf, equalTo(crlf)); + assertThat(cr, equalTo(crlf)); assertThat(ViolationPersisterDecorator.getChecksum("\tvoid method() {\n"), equalTo(ViolationPersisterDecorator.getChecksum(" void method() {"))); -- 2.39.5