Provide more info for EA-89216

This commit is contained in:
Zalim Bashorov
2017-05-25 23:31:52 +03:00
parent 753b714544
commit 13aeb171bd
@@ -25,6 +25,7 @@ import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.caches.JarUserDataManager
import org.jetbrains.kotlin.js.JavaScript
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import java.util.zip.ZipException
object KotlinJavaScriptLibraryDetectionUtil {
@JvmStatic fun isKotlinJavaScriptLibrary(library: Library): Boolean {
@@ -51,10 +52,20 @@ object KotlinJavaScriptLibraryDetectionUtil {
return false
}
private fun isJsFileWithMetadata(file: VirtualFile): Boolean =
!file.isDirectory &&
JavaScript.EXTENSION == file.extension &&
KotlinJavascriptMetadataUtils.hasMetadata(String(file.contentsToByteArray(false)))
private fun isJsFileWithMetadata(file: VirtualFile): Boolean {
if (!file.isDirectory && JavaScript.EXTENSION == file.extension) {
val content = try {
file.contentsToByteArray(false)
}
catch (e: ZipException) {
throw RuntimeException("file:${file.path} isDirectory: ${file.isDirectory}, exists: ${file.exists()}", e)
}
return KotlinJavascriptMetadataUtils.hasMetadata(String(content))
}
return false
}
object HasKotlinJSMetadataInJar : JarUserDataManager.JarBooleanPropertyCounter(HasKotlinJSMetadataInJar::class.simpleName!!) {
override fun hasProperty(file: VirtualFile) = KotlinJavaScriptLibraryDetectionUtil.isJsFileWithMetadata(file)