aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api/src/main
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2015-10-14 15:41:24 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2015-10-14 15:46:59 +0200
commit9b4bff607f50dcbc063e928772dd5c65b005e6dc (patch)
tree0587585dd30f8a1ceff77d0133442998fab39029 /sonar-plugin-api/src/main
parentcf0128cceea80d2637dff20713d6de9182394242 (diff)
downloadsonarqube-9b4bff607f50dcbc063e928772dd5c65b005e6dc.tar.gz
sonarqube-9b4bff607f50dcbc063e928772dd5c65b005e6dc.zip
SONAR-6277 Fix incorrect offset conversion with old Mac line ends '\r'
Diffstat (limited to 'sonar-plugin-api/src/main')
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/FileMetadata.java39
1 files changed, 24 insertions, 15 deletions
diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/FileMetadata.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/FileMetadata.java
index 8d449f4ab4c..aa275e19b28 100644
--- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/FileMetadata.java
+++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/FileMetadata.java
@@ -20,18 +20,6 @@
package org.sonar.api.batch.fs.internal;
import com.google.common.primitives.Ints;
-import org.apache.commons.codec.binary.Hex;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.io.ByteOrderMark;
-import org.apache.commons.io.input.BOMInputStream;
-import org.sonar.api.batch.BatchSide;
-import org.sonar.api.CoreProperties;
-import org.sonar.api.utils.log.Logger;
-import org.sonar.api.utils.log.Loggers;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nullable;
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -48,6 +36,16 @@ import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.ByteOrderMark;
+import org.apache.commons.io.input.BOMInputStream;
+import org.sonar.api.CoreProperties;
+import org.sonar.api.batch.BatchSide;
+import org.sonar.api.utils.log.Logger;
+import org.sonar.api.utils.log.Loggers;
/**
* Computes hash of files. Ends of Lines are ignored, so files with
@@ -311,11 +309,19 @@ public class FileMetadata {
c = (char) i;
if (afterCR) {
for (CharHandler handler : handlers) {
- if (c != CARRIAGE_RETURN && c != LINE_FEED) {
+ if (c == CARRIAGE_RETURN) {
+ handler.newLine();
+ handler.handleAll(c);
+ } else if (c == LINE_FEED) {
+ handler.handleAll(c);
+ handler.newLine();
+ afterCR = false;
+ } else {
+ handler.newLine();
handler.handleIgnoreEoL(c);
+ handler.handleAll(c);
+ afterCR = false;
}
- handler.handleAll(c);
- handler.newLine();
}
afterCR = c == CARRIAGE_RETURN;
} else if (c == LINE_FEED) {
@@ -337,6 +343,9 @@ public class FileMetadata {
i = reader.read();
}
for (CharHandler handler : handlers) {
+ if (afterCR) {
+ handler.newLine();
+ }
handler.eof();
}
}