Skip to content

Commit 9f85bee

Browse files
committed
UnsupportedOperationException when creating 'scratch file' in IntelliJ IDEA
Signed-off-by: Dmytro Nosan <[email protected]>
1 parent e0f7699 commit 9f85bee

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

spring-javaformat-intellij-idea/spring-javaformat-intellij-idea-plugin/src/main/java/io/spring/format/formatter/intellij/formatting/SpringJavaFormatFormattingService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public boolean canFormat(@NotNull PsiFile file) {
7878
public void formatDocument(@NotNull Document document, @NotNull List<TextRange> formattingRanges,
7979
@NotNull FormattingContext formattingContext, boolean canChangeWhiteSpaceOnly, boolean quickFormat) {
8080
VirtualFile file = formattingContext.getVirtualFile();
81-
Path path = (file != null) ? file.toNioPath() : null;
81+
Path path = (file != null) ? file.getFileSystem().getNioPath(file) : null;
8282
JavaFormatConfig config = JavaFormatConfig.findFrom(path);
8383
Formatter formatter = new Formatter(config);
8484
String source = document.getText();

spring-javaformat-intellij-idea/spring-javaformat-intellij-idea-plugin/src/test/java/io/spring/format/formatter/intellij/formatting/SpringJavaFormatFormattingServiceTests.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package io.spring.format.formatter.intellij.formatting;
1818

19+
import java.nio.file.Files;
20+
import java.nio.file.Path;
1921
import java.util.Collections;
2022

2123
import com.intellij.formatting.FormattingContext;
@@ -25,8 +27,11 @@
2527
import com.intellij.openapi.fileTypes.FileTypeManager;
2628
import com.intellij.openapi.fileTypes.PlainTextFileType;
2729
import com.intellij.openapi.project.Project;
30+
import com.intellij.openapi.vfs.VirtualFile;
31+
import com.intellij.openapi.vfs.VirtualFileSystem;
2832
import com.intellij.psi.PsiFile;
2933
import org.junit.jupiter.api.Test;
34+
import org.junit.jupiter.api.io.TempDir;
3035

3136
import io.spring.format.formatter.intellij.state.State;
3237

@@ -73,12 +78,21 @@ void canFormatWhenJavaFileAndActiveReturnsTrue() {
7378
}
7479

7580
@Test
76-
void formatDocumentAppliesFormatting() {
81+
void formatDocumentAppliesFormatting(@TempDir Path tempDir) throws Exception {
82+
Files.writeString(tempDir.resolve(".spring-javaformat.properties"), "indentation-style=spaces");
7783
Document document = mock(Document.class);
78-
String text = "public class Hello {}";
84+
String text = "public\tclass\tHello\t{}";
7985
given(document.getText()).willReturn(text);
8086
FormattingContext formattingContext = mock(FormattingContext.class);
81-
this.service.formatDocument(document, Collections.emptyList(), formattingContext, false, false);
87+
VirtualFile virtualFile = mock(VirtualFile.class);
88+
VirtualFileSystem virtualFileSystem = mock(VirtualFileSystem.class);
89+
given(virtualFile.getFileSystem()).willReturn(virtualFileSystem);
90+
given(formattingContext.getVirtualFile()).willReturn(virtualFile);
91+
given(virtualFileSystem.getNioPath(virtualFile)).willReturn(tempDir.resolve("Hello.java"));
92+
this.service.formatDocument(document, Collections.emptyList(), formattingContext,
93+
false, false);
94+
verify(document).replaceString(6, 7, " ");
95+
verify(document).replaceString(12, 13, " ");
8296
verify(document).replaceString(20, 20, "\n\n");
8397
}
8498

0 commit comments

Comments
 (0)