[kotlin] J2K copy-paste cleanup: rename DataForConversion

KTIJ-28714
IJ-CR-150614

(cherry picked from commit 13cfdd96db96306f742e3d102053a13a988f492b)

GitOrigin-RevId: 2ae30885302c38ab5066914353235fbd5be2d292
This commit is contained in:
Alexey Belkov
2024-12-05 21:53:56 +00:00
committed by intellij-monorepo-bot
parent 2596b067cf
commit d553c9555c
11 changed files with 41 additions and 41 deletions
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.j2k.copyPaste.K1J2KCopyPasteConverter
import org.jetbrains.kotlin.j2k.*
import org.jetbrains.kotlin.j2k.J2kConverterExtension.Kind.K1_NEW
import org.jetbrains.kotlin.j2k.copyPaste.TargetData
import org.jetbrains.kotlin.j2k.copyPaste.DataForConversion
import org.jetbrains.kotlin.j2k.copyPaste.ConversionData
import org.jetbrains.kotlin.j2k.copyPaste.J2KCopyPasteConverter
import org.jetbrains.kotlin.j2k.copyPaste.K1PlainTextPasteImportResolver
import org.jetbrains.kotlin.j2k.copyPaste.PlainTextPasteImportResolver
@@ -43,18 +43,18 @@ class NewJ2kConverterExtension : J2kConverterExtension() {
getNewJ2KConversions(context)
override fun createPlainTextPasteImportResolver(
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetKotlinFile: KtFile
): PlainTextPasteImportResolver {
return K1PlainTextPasteImportResolver(dataForConversion, targetKotlinFile)
return K1PlainTextPasteImportResolver(conversionData, targetKotlinFile)
}
override fun createCopyPasteConverter(
project: Project,
editor: Editor,
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetData: TargetData,
): J2KCopyPasteConverter {
return K1J2KCopyPasteConverter(project, editor, dataForConversion, targetData, kind)
return K1J2KCopyPasteConverter(project, editor, conversionData, targetData, kind)
}
}
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
class K1J2KCopyPasteConverter(
private val project: Project,
private val editor: Editor,
private val dataForConversion: DataForConversion,
private val conversionData: ConversionData,
private val targetData: TargetData,
private val j2kKind: J2kConverterExtension.Kind,
) : J2KCopyPasteConverter {
@@ -66,9 +66,9 @@ class K1J2KCopyPasteConverter(
ThreadingAssertions.assertEventDispatchThread()
fun runConversion() {
val conversionResult = dataForConversion.elementsAndTexts.convertCodeToKotlin(project, targetData.file, j2kKind)
val conversionResult = conversionData.elementsAndTexts.convertCodeToKotlin(project, targetData.file, j2kKind)
val (text, parseContext, importsToAdd, isTextChanged, converterContext) = conversionResult
val referenceData = buildReferenceData(text, parseContext, dataForConversion.importsAndPackage, targetData.file)
val referenceData = buildReferenceData(text, parseContext, conversionData.importsAndPackage, targetData.file)
val changedText = if (isTextChanged) text else null
result = Result(changedText, referenceData, importsToAdd, converterContext)
}
@@ -32,9 +32,9 @@ import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
/**
* Tests: [org.jetbrains.kotlin.nj2k.K1JavaToKotlinCopyPasteConversionTestGenerated].
*/
class K1PlainTextPasteImportResolver(private val dataForConversion: DataForConversion, private val targetKotlinFile: KtFile) :
class K1PlainTextPasteImportResolver(private val conversionData: ConversionData, private val targetKotlinFile: KtFile) :
PlainTextPasteImportResolver {
private val sourceJavaFile: PsiJavaFile = dataForConversion.sourceJavaFile
private val sourceJavaFile: PsiJavaFile = conversionData.sourceJavaFile
private val javaFileImportList: PsiImportList = sourceJavaFile.importList!!
private val project = targetKotlinFile.project
private val scope: GlobalSearchScope = targetKotlinFile.resolveScope
@@ -56,7 +56,7 @@ class K1PlainTextPasteImportResolver(private val dataForConversion: DataForConve
// TODO removing this function doesn't affect existing tests
// investigate is this needed or not
private fun addImportsToJavaFileFromKotlinFile() {
if (javaFileImportList in dataForConversion.elementsAndTexts.toList()) return
if (javaFileImportList in conversionData.elementsAndTexts.toList()) return
ProgressManager.getInstance().runProcessWithProgressSynchronously(
addImportsTask, KotlinNJ2KBundle.message("copy.text.adding.imports"), /* canBeCanceled = */ true, project
@@ -36,18 +36,18 @@ class OldJ2kConverterExtension : J2kConverterExtension() {
true
override fun createPlainTextPasteImportResolver(
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetKotlinFile: KtFile
): PlainTextPasteImportResolver {
return K1PlainTextPasteImportResolver(dataForConversion, targetKotlinFile)
return K1PlainTextPasteImportResolver(conversionData, targetKotlinFile)
}
override fun createCopyPasteConverter(
project: Project,
editor: Editor,
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetData: TargetData
): J2KCopyPasteConverter {
return K1J2KCopyPasteConverter(project, editor, dataForConversion, targetData, kind)
return K1J2KCopyPasteConverter(project, editor, conversionData, targetData, kind)
}
}
@@ -10,7 +10,7 @@ import com.intellij.psi.PsiJavaFile
import org.jetbrains.kotlin.j2k.*
import org.jetbrains.kotlin.j2k.J2kConverterExtension.Kind.K2
import org.jetbrains.kotlin.j2k.copyPaste.TargetData
import org.jetbrains.kotlin.j2k.copyPaste.DataForConversion
import org.jetbrains.kotlin.j2k.copyPaste.ConversionData
import org.jetbrains.kotlin.j2k.copyPaste.J2KCopyPasteConverter
import org.jetbrains.kotlin.j2k.copyPaste.PlainTextPasteImportResolver
import org.jetbrains.kotlin.j2k.k2.copyPaste.K2J2KCopyPasteConverter
@@ -49,18 +49,18 @@ class K2J2KConverterExtension : J2kConverterExtension() {
getK2J2KConversions(context)
override fun createPlainTextPasteImportResolver(
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetKotlinFile: KtFile
): PlainTextPasteImportResolver {
return K2PlainTextPasteImportResolver(dataForConversion, targetKotlinFile)
return K2PlainTextPasteImportResolver(conversionData, targetKotlinFile)
}
override fun createCopyPasteConverter(
project: Project,
editor: Editor,
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetData: TargetData
): J2KCopyPasteConverter {
return K2J2KCopyPasteConverter(project, editor, dataForConversion.elementsAndTexts, targetData)
return K2J2KCopyPasteConverter(project, editor, conversionData.elementsAndTexts, targetData)
}
}
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.idea.base.psi.kotlinFqName
import org.jetbrains.kotlin.idea.base.util.module
import org.jetbrains.kotlin.idea.base.util.runReadActionInSmartMode
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.j2k.copyPaste.DataForConversion
import org.jetbrains.kotlin.j2k.copyPaste.ConversionData
import org.jetbrains.kotlin.j2k.copyPaste.PlainTextPasteImportResolver
import org.jetbrains.kotlin.nj2k.KotlinNJ2KBundle
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
@@ -33,9 +33,9 @@ import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
/**
* Tests: [org.jetbrains.kotlin.j2k.k2.K2TextJavaToKotlinCopyPasteConversionTestGenerated].
*/
internal class K2PlainTextPasteImportResolver(private val dataForConversion: DataForConversion, private val targetKotlinFile: KtFile) :
internal class K2PlainTextPasteImportResolver(private val conversionData: ConversionData, private val targetKotlinFile: KtFile) :
PlainTextPasteImportResolver {
private val sourceJavaFile: PsiJavaFile = dataForConversion.sourceJavaFile
private val sourceJavaFile: PsiJavaFile = conversionData.sourceJavaFile
private val javaFileImportList: PsiImportList = sourceJavaFile.importList!!
private val project = targetKotlinFile.project
private val scope: GlobalSearchScope = targetKotlinFile.resolveScope
@@ -55,7 +55,7 @@ internal class K2PlainTextPasteImportResolver(private val dataForConversion: Dat
// TODO removing this function doesn't affect existing tests
// investigate is this needed or not
private fun addImportsToJavaFileFromKotlinFile() {
if (javaFileImportList in dataForConversion.elementsAndTexts.toList()) return
if (javaFileImportList in conversionData.elementsAndTexts.toList()) return
ProgressManager.getInstance().runProcessWithProgressSynchronously(
addImportsTask, KotlinNJ2KBundle.message("copy.text.adding.imports"), /* canBeCanceled = */ true, project
@@ -8,7 +8,7 @@ import com.intellij.openapi.module.Module
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiJavaFile
import org.jetbrains.kotlin.j2k.copyPaste.DataForConversion
import org.jetbrains.kotlin.j2k.copyPaste.ConversionData
import org.jetbrains.kotlin.j2k.copyPaste.J2KCopyPasteConverter
import org.jetbrains.kotlin.j2k.copyPaste.PlainTextPasteImportResolver
import org.jetbrains.kotlin.j2k.copyPaste.TargetData
@@ -50,14 +50,14 @@ abstract class J2kConverterExtension {
emptyList()
abstract fun createPlainTextPasteImportResolver(
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetKotlinFile: KtFile
): PlainTextPasteImportResolver
abstract fun createCopyPasteConverter(
project: Project,
editor: Editor,
dataForConversion: DataForConversion,
conversionData: ConversionData,
targetData: TargetData,
): J2KCopyPasteConverter
@@ -18,13 +18,13 @@ import org.jetbrains.kotlin.psi.psiUtil.elementsInRange
* @property importsAndPackage Kotlin code of the package declaration and significant non-static import statements of the original Java file
* @property sourceJavaFile a copy of the whole file containing the to-be-converted Java code fragment
*/
class DataForConversion private constructor(
class ConversionData private constructor(
val elementsAndTexts: ElementAndTextList,
val importsAndPackage: String,
val sourceJavaFile: PsiJavaFile
) {
companion object {
fun prepare(copiedCode: CopiedJavaCode, project: Project): DataForConversion {
fun prepare(copiedCode: CopiedJavaCode, project: Project): ConversionData {
val startOffsets = copiedCode.startOffsets.clone()
val endOffsets = copiedCode.endOffsets.clone()
assert(startOffsets.size == endOffsets.size) { "Must have the same size" }
@@ -45,7 +45,7 @@ class DataForConversion private constructor(
elementsAndTexts.collectElementsToConvert(file, fileText, TextRange(startOffsets[i], endOffsets[i]))
}
return DataForConversion(elementsAndTexts, importsAndPackage, file)
return ConversionData(elementsAndTexts, importsAndPackage, file)
}
}
}
@@ -69,11 +69,11 @@ class ConvertJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransferab
if (!isConversionSupportedAtPosition(targetData.file, targetData.bounds.startOffset)) return
val copiedJavaCode = values.single() as CopiedJavaCode
val dataForConversion = DataForConversion.prepare(copiedJavaCode, project)
val conversionData = ConversionData.prepare(copiedJavaCode, project)
val j2kKind = getJ2kKind(targetData.file)
val converter = J2kConverterExtension.extension(j2kKind)
.createCopyPasteConverter(project, editor, dataForConversion, targetData)
.createCopyPasteConverter(project, editor, conversionData, targetData)
val textLength = copiedJavaCode.startOffsets.indices.sumOf { copiedJavaCode.endOffsets[it] - copiedJavaCode.startOffsets[it] }
if (textLength < MAX_TEXT_LENGTH_TO_CONVERT_WITHOUT_ASKING_USER && converter.convertAndRestoreReferencesIfTextIsUnchanged()) {
@@ -89,7 +89,7 @@ class ConvertJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransferab
type = ConversionType.PSI_EXPRESSION,
isNewJ2k = j2kKind == K1_NEW,
conversionTime,
linesCount = dataForConversion.elementsAndTexts.lineCount(),
linesCount = conversionData.elementsAndTexts.lineCount(),
filesCount = 1
)
@@ -121,16 +121,16 @@ class ConvertTextJavaCopyPasteProcessor : CopyPastePostProcessor<TextBlockTransf
if (!confirmConvertJavaOnPaste(project, isPlainText = true)) return
val copiedJavaCode = prepareCopiedJavaCodeByContext(text, javaConversionContext, pasteTarget)
val dataForConversion = DataForConversion.prepare(copiedJavaCode, project)
val conversionData = ConversionData.prepare(copiedJavaCode, project)
val j2kKind = getJ2kKind(targetData.file)
val converter = J2KTextCopyPasteConverter(project, editor, dataForConversion, targetData, j2kKind)
val converter = J2KTextCopyPasteConverter(project, editor, conversionData, targetData, j2kKind)
val conversionTime = measureTimeMillis { converter.convert() }
J2KFusCollector.log(
type = ConversionType.TEXT_EXPRESSION,
isNewJ2k = j2kKind == K1_NEW,
conversionTime,
linesCount = dataForConversion.elementsAndTexts.lineCount(),
linesCount = conversionData.elementsAndTexts.lineCount(),
filesCount = 1
)
@@ -19,12 +19,12 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset
internal class J2KTextCopyPasteConverter(
private val project: Project,
private val editor: Editor,
private val dataForConversion: DataForConversion,
private val conversionData: ConversionData,
private val targetData: TargetData,
private val j2kKind: J2kConverterExtension.Kind,
) {
fun convert() {
val additionalImports = tryToResolveImports(dataForConversion, targetData.file)
val additionalImports = tryToResolveImports(conversionData, targetData.file)
ProgressManager.checkCanceled()
val importsInsertOffset = targetData.file.importList?.endOffset ?: 0
@@ -33,7 +33,7 @@ internal class J2KTextCopyPasteConverter(
convertedImportsText = "\n" + convertedImportsText
}
val conversionResult = dataForConversion.elementsAndTexts.convertCodeToKotlin(project, targetData.file, j2kKind)
val conversionResult = conversionData.elementsAndTexts.convertCodeToKotlin(project, targetData.file, j2kKind)
val convertedText = conversionResult.text
ProgressManager.checkCanceled()
@@ -62,8 +62,8 @@ internal class J2KTextCopyPasteConverter(
runPostProcessing(project, targetData.file, boundsAfterReplace.asTextRange, conversionResult.converterContext, j2kKind)
}
private fun tryToResolveImports(dataForConversion: DataForConversion, targetFile: KtFile): ElementAndTextList {
val resolver = J2kConverterExtension.extension(j2kKind).createPlainTextPasteImportResolver(dataForConversion, targetFile)
private fun tryToResolveImports(conversionData: ConversionData, targetFile: KtFile): ElementAndTextList {
val resolver = J2kConverterExtension.extension(j2kKind).createPlainTextPasteImportResolver(conversionData, targetFile)
val imports = resolver.generateRequiredImports()
val newlineSeparatedImports = imports.flatMap { importStatement ->
listOf("\n", importStatement)