KT-7178 Converter from Java drops the result when there is already a file with the same name
#KT-7178 Fixed
This commit is contained in:
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.actions
|
|||||||
import com.intellij.openapi.actionSystem.AnAction
|
import com.intellij.openapi.actionSystem.AnAction
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
|
||||||
import com.intellij.openapi.command.CommandProcessor
|
import com.intellij.openapi.command.CommandProcessor
|
||||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
@@ -34,13 +33,12 @@ import com.intellij.psi.PsiJavaFile
|
|||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter
|
import org.jetbrains.kotlin.idea.j2k.IdeaResolverForConverter
|
||||||
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeCommand
|
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
|
import org.jetbrains.kotlin.j2k.IdeaReferenceSearcher
|
||||||
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
import org.jetbrains.kotlin.j2k.JavaToKotlinConverter
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
||||||
@@ -133,8 +131,9 @@ public class JavaToKotlinAction : AnAction() {
|
|||||||
val result = ArrayList<VirtualFile>()
|
val result = ArrayList<VirtualFile>()
|
||||||
for ((psiFile, text) in javaFiles.zip(convertedTexts)) {
|
for ((psiFile, text) in javaFiles.zip(convertedTexts)) {
|
||||||
val virtualFile = psiFile.getVirtualFile()
|
val virtualFile = psiFile.getVirtualFile()
|
||||||
|
val fileName = uniqueKotlinFileName(virtualFile)
|
||||||
try {
|
try {
|
||||||
virtualFile.rename(this, virtualFile.getNameWithoutExtension() + ".kt")
|
virtualFile.rename(this, fileName)
|
||||||
virtualFile.setBinaryContent(CharsetToolkit.getUtf8Bytes(text))
|
virtualFile.setBinaryContent(CharsetToolkit.getUtf8Bytes(text))
|
||||||
result.add(virtualFile)
|
result.add(virtualFile)
|
||||||
}
|
}
|
||||||
@@ -144,4 +143,15 @@ public class JavaToKotlinAction : AnAction() {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun uniqueKotlinFileName(javaFile: VirtualFile): String {
|
||||||
|
val ioFile = File(javaFile.getPath().replace('/', File.separatorChar))
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
while (true) {
|
||||||
|
val fileName = javaFile.getNameWithoutExtension() + (if (i > 0) i else "") + ".kt"
|
||||||
|
if (!ioFile.resolveSibling(fileName).exists()) return fileName
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user