Receive Charset of Document in the constructor
This commit is contained in:
1 parent
de09472421
commit
40ad978d8f
3 files changed
+26
-23
No files matched your search
@@ -4,15 +4,16 @@
|
||||
|
||||
package net.sourceforge.pmd.util.document;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.Closeable;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
@@ -35,10 +36,11 @@ public class DocumentFile implements Document, Closeable {
|
||||
private int currentPosition = 0;
|
||||
|
||||
private final Path temporaryPath = Files.createTempFile("pmd-", ".tmp");
|
||||
private final Writer writer = Files.newBufferedWriter(temporaryPath, StandardCharsets.UTF_8);
|
||||
private final Writer writer;
|
||||
|
||||
public DocumentFile(final File file) throws IOException {
|
||||
reader = Files.newBufferedReader(file.toPath(), StandardCharsets.UTF_8);
|
||||
public DocumentFile(final File file, final Charset charset) throws IOException {
|
||||
reader = Files.newBufferedReader(requireNonNull(file).toPath(), requireNonNull(charset));
|
||||
writer = Files.newBufferedWriter(temporaryPath, charset);
|
||||
this.filePath = file.toPath();
|
||||
mapLinesToOffsets();
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ public class DocumentFileTest {
|
||||
public void insertAtStartOfTheFileShouldSucceed() throws IOException {
|
||||
writeContentToTemporaryFile("static void main(String[] args) {}");
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, 0, "public ");
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class DocumentFileTest {
|
||||
public void insertVariousTokensIntoTheFileShouldSucceed() throws IOException {
|
||||
writeContentToTemporaryFile("static void main(String[] args) {}");
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, 0, "public ");
|
||||
documentFile.insert(0, 17, "final ");
|
||||
}
|
||||
@@ -101,7 +101,7 @@ public class DocumentFileTest {
|
||||
final String code = "public static void main(String[] args)";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, code.length(), "{}");
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ public class DocumentFileTest {
|
||||
final String code = "public static void main(final String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.delete(new RegionByLineImp(0, 0, 24, 30));
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ public class DocumentFileTest {
|
||||
final String code = "static void main(final String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, 0, "public ");
|
||||
documentFile.delete(new RegionByLineImp(0, 0, 17, 23));
|
||||
}
|
||||
@@ -147,7 +147,7 @@ public class DocumentFileTest {
|
||||
final String code = "void main(String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, 0, "public ");
|
||||
documentFile.insert(0, 0, "static ");
|
||||
documentFile.delete(new RegionByLineImp(0, 0, 0, 4));
|
||||
@@ -166,7 +166,7 @@ public class DocumentFileTest {
|
||||
final String code = "int main(String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.replace(new RegionByLineImp(0, 0, 0, 3), "void");
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ public class DocumentFileTest {
|
||||
final String code = "int main(String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.replace(new RegionByLineImp(0, 0, 0, "int".length()), "void");
|
||||
documentFile.replace(new RegionByLineImp(0, 0, 4, 4 + "main".length()), "foo");
|
||||
documentFile.replace(new RegionByLineImp(0, 0, 9, 9 + "String".length()), "CharSequence");
|
||||
@@ -198,7 +198,7 @@ public class DocumentFileTest {
|
||||
final String code = "static int main(CharSequence[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
documentFile.insert(0, 0, "public");
|
||||
documentFile.delete(new RegionByLineImp(0, 0, 0, 6));
|
||||
documentFile.replace(new RegionByLineImp(0, 0, 7, 7 + "int".length()), "void");
|
||||
@@ -224,7 +224,7 @@ public class DocumentFileTest {
|
||||
expectedLineToOffset.add(40);
|
||||
expectedLineToOffset.add(49);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
assertEquals(expectedLineToOffset, documentFile.getLineToOffset());
|
||||
}
|
||||
}
|
||||
@@ -241,7 +241,7 @@ public class DocumentFileTest {
|
||||
expectedLineToOffset.add(41);
|
||||
expectedLineToOffset.add(51);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
assertEquals(expectedLineToOffset, documentFile.getLineToOffset());
|
||||
}
|
||||
}
|
||||
@@ -258,7 +258,7 @@ public class DocumentFileTest {
|
||||
expectedLineToOffset.add(41);
|
||||
expectedLineToOffset.add(50);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
assertEquals(expectedLineToOffset, documentFile.getLineToOffset());
|
||||
}
|
||||
}
|
||||
|
||||
+7
-6
@@ -10,6 +10,7 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
@@ -39,7 +40,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
public void insertAtStartOfTheDocumentShouldSucceed() throws IOException {
|
||||
writeContentToTemporaryFile("static void main(String[] args) {}");
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
applier.addDocumentOperation(new InsertDocumentOperation(0, 0, "public "));
|
||||
|
||||
@@ -89,7 +90,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
public void removeTokenShouldSucceed() throws IOException {
|
||||
writeContentToTemporaryFile("public static void main(String[] args) {}");
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
applier.addDocumentOperation(new DeleteDocumentOperation(0, 0, 7, 13));
|
||||
|
||||
@@ -107,7 +108,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
final String code = "static void main(final String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
applier.addDocumentOperation(new InsertDocumentOperation(0, 0, "public "));
|
||||
applier.addDocumentOperation(new DeleteDocumentOperation(0, 0, 17, 23));
|
||||
@@ -126,7 +127,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
final String code = "void main(String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
|
||||
applier.addDocumentOperation(new InsertDocumentOperation(0, 0, "public "));
|
||||
@@ -149,7 +150,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
final String code = "int main(String[] args) {}";
|
||||
writeContentToTemporaryFile(code);
|
||||
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
|
||||
applier.addDocumentOperation(new ReplaceDocumentOperation(0, 0, 0, "int".length(), "void"));
|
||||
@@ -182,7 +183,7 @@ public class DocumentOperationsApplierForNonOverlappingRegionsWithDocumentFileTe
|
||||
}
|
||||
|
||||
private void shuffleAndApplyOperations(List<DocumentOperation> documentOperations) throws IOException {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile)) {
|
||||
try (DocumentFile documentFile = new DocumentFile(temporaryFile, StandardCharsets.UTF_8)) {
|
||||
applier = new DocumentOperationsApplierForNonOverlappingRegions(documentFile);
|
||||
|
||||
Collections.shuffle(documentOperations);
|
||||
|
||||
Reference in new issue
Block a user