Skip to content

Commit

Permalink
[kotlin2cpg] JvmClasspathRoot without an actual temporary file (joern…
Browse files Browse the repository at this point in the history
  • Loading branch information
xavierpinho authored Nov 12, 2024
1 parent df29596 commit 16f9541
Showing 1 changed file with 10 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package io.joern.kotlin2cpg.compiler

import io.joern.kotlin2cpg.DefaultContentRootJarPath

import java.io.{File, FileOutputStream}
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
import org.jetbrains.kotlin.cli.jvm.compiler.{EnvironmentConfigFiles, KotlinCoreEnvironment}
import org.jetbrains.kotlin.cli.jvm.config.{JavaSourceRoot, JvmClasspathRoot}
import org.jetbrains.kotlin.config.{CommonConfigurationKeys, CompilerConfiguration, JVMConfigurationKeys}
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.cli.common.messages.{
CompilerMessageSeverity,
CompilerMessageSourceLocation,
MessageCollector
}
import org.jetbrains.kotlin.cli.jvm.compiler.{EnvironmentConfigFiles, KotlinCoreEnvironment}
import org.jetbrains.kotlin.cli.jvm.config.{JavaSourceRoot, JvmClasspathRoot}
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.config.{CommonConfigurationKeys, CompilerConfiguration, JVMConfigurationKeys}
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
import org.slf4j.LoggerFactory

import java.io.File

object CompilerAPI {
private val logger = LoggerFactory.getLogger(getClass)

Expand Down Expand Up @@ -45,20 +45,9 @@ object CompilerAPI {
logger.warn(s"Path to dependency does not point to existing file `${path.path}`.")
}
} else {
val resourceStream = getClass.getClassLoader.getResourceAsStream(path.path)
if (resourceStream != null) {
val tempFile = File.createTempFile("kotlin2cpgDependencies", "")
tempFile.deleteOnExit()
val outStream = new FileOutputStream(tempFile)
val buffer = new Array[Byte](4096)

while (resourceStream.available > 0) {
val readBytes = resourceStream.read(buffer)
outStream.write(buffer, 0, readBytes)
}
outStream.flush()
outStream.close()

val resource = getClass.getClassLoader.getResource(path.path)
if (resource != null) {
val tempFile = File(resource.getFile)
config.add(CLIConfigurationKeys.CONTENT_ROOTS, new JvmClasspathRoot(tempFile))
logger.debug(s"Added dependency from resources `${path.path}`.")
} else {
Expand Down

0 comments on commit 16f9541

Please sign in to comment.