Clean-up JavaModuleInfo.kt

This commit is contained in:
Victor Petukhov
2021-04-03 09:53:40 +03:00
parent 788d3c022a
commit 49e838781c
@@ -29,33 +29,30 @@ import org.jetbrains.org.objectweb.asm.Opcodes.ACC_TRANSITIVE
import java.io.IOException import java.io.IOException
class JavaModuleInfo( class JavaModuleInfo(
val moduleName: String, val moduleName: String,
val requires: List<Requires>, val requires: List<Requires>,
val exports: List<Exports> val exports: List<Exports>
) { ) {
data class Requires(val moduleName: String, val isTransitive: Boolean) data class Requires(val moduleName: String, val isTransitive: Boolean)
data class Exports(val packageFqName: FqName, val toModules: List<String>) data class Exports(val packageFqName: FqName, val toModules: List<String>)
override fun toString(): String = override fun toString() = "Module $moduleName (${requires.size} requires, ${exports.size} exports)"
"Module $moduleName (${requires.size} requires, ${exports.size} exports)"
companion object { companion object {
fun create(psiJavaModule: PsiJavaModule): JavaModuleInfo { fun create(psiJavaModule: PsiJavaModule) = JavaModuleInfo(
return JavaModuleInfo( psiJavaModule.name,
psiJavaModule.name, psiJavaModule.requires.mapNotNull { statement ->
psiJavaModule.requires.mapNotNull { statement -> statement.moduleName?.let { moduleName ->
statement.moduleName?.let { moduleName -> Requires(moduleName, statement.hasModifierProperty(PsiModifier.TRANSITIVE))
JavaModuleInfo.Requires(moduleName, statement.hasModifierProperty(PsiModifier.TRANSITIVE)) }
} },
}, psiJavaModule.exports.mapNotNull { statement ->
psiJavaModule.exports.mapNotNull { statement -> statement.packageName?.let { packageName ->
statement.packageName?.let { packageName -> Exports(FqName(packageName), statement.moduleNames)
JavaModuleInfo.Exports(FqName(packageName), statement.moduleNames) }
} }
} )
)
}
fun read(file: VirtualFile): JavaModuleInfo? { fun read(file: VirtualFile): JavaModuleInfo? {
val contents = try { file.contentsToByteArray() } catch (e: IOException) { return null } val contents = try { file.contentsToByteArray() } catch (e: IOException) { return null }