PackageFacadeProvider refactoring
This commit is contained in:
+4
-5
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.load.java.components.*
|
||||
import org.jetbrains.kotlin.load.java.lazy.JavaResolverComponents
|
||||
import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider
|
||||
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider
|
||||
import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
|
||||
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
|
||||
import org.jetbrains.kotlin.load.java.reflect.ReflectJavaClassFinder
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaPropertyInitializerEvaluator
|
||||
@@ -55,12 +55,11 @@ public class RuntimeModuleData private constructor(public val deserialization: D
|
||||
val globalJavaResolverContext = JavaResolverComponents(
|
||||
storageManager, ReflectJavaClassFinder(classLoader), reflectKotlinClassFinder, deserializedDescriptorResolver,
|
||||
ExternalAnnotationResolver.EMPTY, ExternalSignatureResolver.DO_NOTHING, RuntimeErrorReporter, JavaResolverCache.EMPTY,
|
||||
JavaPropertyInitializerEvaluator.DoNothing, SamConversionResolver, RuntimeSourceElementFactory, singleModuleClassResolver
|
||||
JavaPropertyInitializerEvaluator.DoNothing, SamConversionResolver, RuntimeSourceElementFactory, singleModuleClassResolver,
|
||||
if (moduleName == null) PackageFacadeProvider.EMPTY else RuntimePackageFacadeProvider(moduleName, classLoader)
|
||||
)
|
||||
println("moduleName $moduleName")
|
||||
val lazyJavaPackageFragmentProvider =
|
||||
LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module),
|
||||
if (moduleName == null) PackageMappingProvider.EMPTY else RuntimePackageMappingProvider(moduleName, classLoader))
|
||||
LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module))
|
||||
val javaDescriptorResolver = JavaDescriptorResolver(lazyJavaPackageFragmentProvider, module)
|
||||
val javaClassDataFinder = JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver)
|
||||
val binaryClassAnnotationAndConstantLoader = BinaryClassAnnotationAndConstantLoaderImpl(module, storageManager, reflectKotlinClassFinder, RuntimeErrorReporter)
|
||||
|
||||
+10
-14
@@ -16,37 +16,33 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.kotlin.reflect
|
||||
|
||||
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider
|
||||
import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
|
||||
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
|
||||
import org.jetbrains.kotlin.load.kotlin.PackageFacades
|
||||
import java.io.ByteArrayOutputStream
|
||||
|
||||
class RuntimePackageMappingProvider(val moduleName: String, val classLoader : ClassLoader) : PackageMappingProvider {
|
||||
class RuntimePackageFacadeProvider(val moduleName: String, val classLoader : ClassLoader) : PackageFacadeProvider {
|
||||
|
||||
val mapping: ModuleMapping by lazy {
|
||||
print("finding metainf for $moduleName")
|
||||
val resourceAsStream = classLoader.getResourceAsStream("META-INF/$moduleName.kotlin_module") ?: return@lazy ModuleMapping("")
|
||||
|
||||
print("OK")
|
||||
|
||||
try {
|
||||
val out = ByteArrayOutputStream(4096);
|
||||
val buffer = ByteArray(4096);
|
||||
val out = ByteArrayOutputStream(4096)
|
||||
val buffer = ByteArray(4096)
|
||||
while (true) {
|
||||
val r = resourceAsStream.read(buffer);
|
||||
if (r == -1) break;
|
||||
out.write(buffer, 0, r);
|
||||
val r = resourceAsStream.read(buffer)
|
||||
if (r == -1) break
|
||||
out.write(buffer, 0, r)
|
||||
}
|
||||
|
||||
val ret = out.toByteArray();
|
||||
val ret = out.toByteArray()
|
||||
return@lazy ModuleMapping(String(ret, "UTF-8"))
|
||||
} finally {
|
||||
resourceAsStream.close()
|
||||
}
|
||||
}
|
||||
|
||||
override fun findPackageMembers(packageName: String): List<String> {
|
||||
print("finding $packageName")
|
||||
return mapping.package2MiniFacades.getOrElse (packageName, { PackageFacades("default") }).parts.toList()
|
||||
override fun findPackageFacades(packageInternalName: String): List<String> {
|
||||
return mapping.package2MiniFacades.getOrElse (packageInternalName, { PackageFacades("default") }).parts.toList()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user