PackageFacadeProvider refactoring

This commit is contained in:
Michael Bogdanov
2015-08-27 15:13:42 +03:00
parent 843241848f
commit c274ceffe8
36 changed files with 130 additions and 150 deletions
@@ -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)
@@ -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()
}
}