]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2358 Don't use org.codehaus.plexus.util.StringInputStream to calculate checksum...
authorEvgeny Mandrikov <mandrikov@gmail.com>
Tue, 19 Apr 2011 09:47:26 +0000 (13:47 +0400)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Tue, 19 Apr 2011 13:51:53 +0000 (17:51 +0400)
plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecorator.java
plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/timemachine/ViolationPersisterDecoratorTest.java

index 832a4be13b02fa056db6f343b7dc1611335ad4ea..8360475d550f2278926c7de8b172e9d08e6f0cf7 100644 (file)
@@ -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.<String>emptyList() : getChecksums(source.getData());
   }
 
+  /**
+   * @param data can't be null
+   */
   static List<String> getChecksums(String data) {
+    String[] lines = data.split("\r?\n|\r", -1);
     List<String> result = Lists.newArrayList();
-    StringInputStream stream = new StringInputStream(data);
-    try {
-      List<String> 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<Rule, RuleFailureModel> pastViolationsByRule) {
     Collection<RuleFailureModel> 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;
     }
index daf343330c6dbb19563012285a089d9a82b4f878..0c715997b395b118ed9ede05032a8776e9531050 100644 (file)
@@ -48,9 +48,11 @@ public class ViolationPersisterDecoratorTest {
   public void shouldGenerateCorrectChecksums() {
     List<String> crlf = ViolationPersisterDecorator.getChecksums("Hello\r\nWorld");
     List<String> lf = ViolationPersisterDecorator.getChecksums("Hello\nWorld");
+    List<String> 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() {")));