diff --git a/lib/annotations/jdom/org/jdom/annotations.xml b/lib/annotations/jdom/org/jdom/annotations.xml
index d1bbc1461817..8dfdb34759bf 100644
--- a/lib/annotations/jdom/org/jdom/annotations.xml
+++ b/lib/annotations/jdom/org/jdom/annotations.xml
@@ -57,6 +57,9 @@
-
+ -
+
+
-
diff --git a/platform/configuration-store-impl/src/FileBasedStorage.kt b/platform/configuration-store-impl/src/FileBasedStorage.kt
index f4045907948c..eb6302a6e7ac 100644
--- a/platform/configuration-store-impl/src/FileBasedStorage.kt
+++ b/platform/configuration-store-impl/src/FileBasedStorage.kt
@@ -44,7 +44,8 @@ open class FileBasedStorage(file: Path,
protected var lineSeparator: LineSeparator? = null
protected var blockSavingTheContent = false
- @Volatile var file = file
+ @Volatile
+ var file = file
private set
init {
@@ -99,7 +100,10 @@ open class FileBasedStorage(file: Path,
deleteFile(storage.file, this, virtualFile)
storage.cachedVirtualFile = null
}
- else if (!isUseVfs) {
+ else if (isUseVfs) {
+ storage.cachedVirtualFile = writeFile(storage.file, this, virtualFile, dataWriter, lineSeparator, storage.isUseXmlProlog)
+ }
+ else {
val file = storage.file
LOG.debugOrInfoIfTestMode { "Save $file" }
try {
@@ -109,9 +113,6 @@ open class FileBasedStorage(file: Path,
throw RuntimeException("Cannot write ${file}", e)
}
}
- else {
- storage.cachedVirtualFile = writeFile(storage.file, this, virtualFile, dataWriter, lineSeparator, storage.isUseXmlProlog)
- }
}
}
@@ -216,7 +217,7 @@ internal fun writeFile(file: Path?,
lineSeparator: LineSeparator,
prependXmlProlog: Boolean): VirtualFile {
val result = if (file != null && (virtualFile == null || !virtualFile.isValid)) {
- getOrCreateVirtualFile(requestor, file)
+ getOrCreateVirtualFile(file, requestor)
}
else {
virtualFile!!
diff --git a/platform/platform-impl/src/com/intellij/configurationStore/storageUtil.kt b/platform/platform-impl/src/com/intellij/configurationStore/storageUtil.kt
index 6c9b3786bd34..cc847d2cfd81 100644
--- a/platform/platform-impl/src/com/intellij/configurationStore/storageUtil.kt
+++ b/platform/platform-impl/src/com/intellij/configurationStore/storageUtil.kt
@@ -116,7 +116,7 @@ private fun collect(componentManager: ComponentManager,
substitutorToStore.put(substitutor, store)
}
-fun getOrCreateVirtualFile(requestor: Any?, file: Path): VirtualFile {
+fun getOrCreateVirtualFile(file: Path, requestor: Any?): VirtualFile {
val virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(file.systemIndependentPath)
if (virtualFile != null) {
return virtualFile
diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java
index 149f0756f1fd..85b15e82629b 100644
--- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java
+++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/ClasspathSaveSession.java
@@ -101,7 +101,7 @@ final class ClasspathSaveSession implements SaveSessionProducer, SaveSession, Sa
ThrowableRunnable runnable = () -> {
for (String key : modifiedContent.keySet()) {
Element content = modifiedContent.get(key);
- VirtualFile virtualFile = StorageUtilKt.getOrCreateVirtualFile(this, Paths.get(fileSet.getParent(key) + '/' + key));
+ VirtualFile virtualFile = StorageUtilKt.getOrCreateVirtualFile(Paths.get(fileSet.getParent(key) + '/' + key), this);
try (Writer writer = new OutputStreamWriter(virtualFile.getOutputStream(this), StandardCharsets.UTF_8)) {
EclipseJDOMUtil.output(content, writer, module.getProject());
}