Move utilities from NameSerializationUtil to meaningful places

This commit is contained in:
Alexander Udalov
2015-03-23 18:43:28 +03:00
parent 485dce987c
commit b57e15f3a4
10 changed files with 82 additions and 106 deletions
@@ -25,13 +25,9 @@ import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.ClassData
import org.jetbrains.kotlin.serialization.NameSerializationUtil
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeCapabilitiesDeserializer
import org.jetbrains.kotlin.serialization.deserialization.LocalClassResolverImpl
import org.jetbrains.kotlin.serialization.deserialization.*
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
import org.jetbrains.kotlin.storage.StorageManager
import java.io.InputStream
@@ -46,13 +42,13 @@ public class BuiltinsPackageFragment(
private val extensionRegistry: ExtensionRegistryLite
;{
init {
extensionRegistry = ExtensionRegistryLite.newInstance()
BuiltInsProtoBuf.registerAllExtensions(extensionRegistry)
extensionRegistry
}
private val nameResolver = NameSerializationUtil.deserializeNameResolver(
private val nameResolver = NameResolver.read(
getStream(BuiltInsSerializationUtil.getStringTableFilePath(fqName))
)
@@ -30,7 +30,7 @@ public final class ClassData {
public static ClassData read(@NotNull byte[] bytes, @NotNull ExtensionRegistryLite registry) {
try {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
NameResolver nameResolver = NameSerializationUtil.deserializeNameResolver(in);
NameResolver nameResolver = NameResolver.read(in);
ProtoBuf.Class classProto = ProtoBuf.Class.parseFrom(in, registry);
return new ClassData(nameResolver, classProto);
}
@@ -40,7 +40,6 @@ public final class ClassData {
}
private final NameResolver nameResolver;
private final ProtoBuf.Class classProto;
public ClassData(@NotNull NameResolver nameResolver, @NotNull ProtoBuf.Class classProto) {
@@ -21,34 +21,17 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolver;
import org.jetbrains.kotlin.utils.UtilsPackage;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class NameSerializationUtil {
private NameSerializationUtil() {
}
@NotNull
public static NameResolver deserializeNameResolver(@NotNull InputStream in) {
try {
ProtoBuf.StringTable simpleNames = ProtoBuf.StringTable.parseDelimitedFrom(in);
ProtoBuf.QualifiedNameTable qualifiedNames = ProtoBuf.QualifiedNameTable.parseDelimitedFrom(in);
return new NameResolver(simpleNames, qualifiedNames);
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
public static void serializeNameResolver(@NotNull OutputStream out, @NotNull NameResolver nameResolver) {
serializeStringTable(out, nameResolver.getStringTable(), nameResolver.getQualifiedNameTable());
}
public static void serializeStringTable(@NotNull OutputStream out, @NotNull StringTable stringTable) {
serializeStringTable(out, toStringTable(stringTable), toQualifiedNameTable(stringTable));
}
private static void serializeStringTable(
public static void serializeStringTable(
@NotNull OutputStream out,
@NotNull ProtoBuf.StringTable stringTable,
@NotNull ProtoBuf.QualifiedNameTable qualifiedNameTable
@@ -61,27 +44,4 @@ public class NameSerializationUtil {
throw UtilsPackage.rethrow(e);
}
}
@NotNull
public static ProtoBuf.StringTable toStringTable(@NotNull StringTable stringTable) {
ProtoBuf.StringTable.Builder simpleNames = ProtoBuf.StringTable.newBuilder();
for (String simpleName : stringTable.getStrings()) {
simpleNames.addString(simpleName);
}
return simpleNames.build();
}
@NotNull
public static ProtoBuf.QualifiedNameTable toQualifiedNameTable(@NotNull StringTable stringTable) {
ProtoBuf.QualifiedNameTable.Builder qualifiedNames = ProtoBuf.QualifiedNameTable.newBuilder();
for (ProtoBuf.QualifiedNameTable.QualifiedName.Builder qName : stringTable.getFqNames()) {
qualifiedNames.addQualifiedName(qName);
}
return qualifiedNames.build();
}
@NotNull
public static NameResolver createNameResolver(@NotNull StringTable table) {
return new NameResolver(toStringTable(table), toQualifiedNameTable(table));
}
}
@@ -30,7 +30,7 @@ public final class PackageData {
public static PackageData read(@NotNull byte[] bytes, @NotNull ExtensionRegistryLite registry) {
try {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
NameResolver nameResolver = NameSerializationUtil.deserializeNameResolver(in);
NameResolver nameResolver = NameResolver.read(in);
ProtoBuf.Package packageProto = ProtoBuf.Package.parseFrom(in, registry);
return new PackageData(nameResolver, packageProto);
}
@@ -40,7 +40,6 @@ public final class PackageData {
}
private final NameResolver nameResolver;
private final ProtoBuf.Package packageProto;
public PackageData(@NotNull NameResolver nameResolver, @NotNull ProtoBuf.Package packageProto) {
@@ -16,8 +16,6 @@
package org.jetbrains.kotlin.serialization;
import kotlin.Function1;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.ClassOrPackageFragmentDescriptor;
@@ -26,8 +24,6 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
import java.util.List;
import static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName;
public class StringTable {
@@ -66,21 +62,6 @@ public class StringTable {
this.extension = extension;
}
@NotNull
public List<String> getStrings() {
return strings.getAllInternedObjects();
}
@NotNull
public List<QualifiedName.Builder> getFqNames() {
return KotlinPackage.map(qualifiedNames.getAllInternedObjects(), new Function1<FqNameProto, QualifiedName.Builder>() {
@Override
public QualifiedName.Builder invoke(FqNameProto proto) {
return proto.fqName;
}
});
}
public int getSimpleNameIndex(@NotNull Name name) {
return getStringIndex(name.asString());
}
@@ -136,4 +117,22 @@ public class StringTable {
}
return result;
}
@NotNull
public ProtoBuf.StringTable serializeSimpleNames() {
ProtoBuf.StringTable.Builder builder = ProtoBuf.StringTable.newBuilder();
for (String simpleName : strings.getAllInternedObjects()) {
builder.addString(simpleName);
}
return builder.build();
}
@NotNull
public ProtoBuf.QualifiedNameTable serializeQualifiedNames() {
ProtoBuf.QualifiedNameTable.Builder builder = ProtoBuf.QualifiedNameTable.newBuilder();
for (FqNameProto fqName : qualifiedNames.getAllInternedObjects()) {
builder.addQualifiedName(fqName.fqName);
}
return builder.build();
}
}
@@ -21,12 +21,27 @@ import org.jetbrains.kotlin.name.ClassId;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.serialization.ProtoBuf;
import org.jetbrains.kotlin.utils.UtilsPackage;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import static org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.QualifiedName;
public class NameResolver {
@NotNull
public static NameResolver read(@NotNull InputStream in) {
try {
ProtoBuf.StringTable simpleNames = ProtoBuf.StringTable.parseDelimitedFrom(in);
ProtoBuf.QualifiedNameTable qualifiedNames = ProtoBuf.QualifiedNameTable.parseDelimitedFrom(in);
return new NameResolver(simpleNames, qualifiedNames);
}
catch (IOException e) {
throw UtilsPackage.rethrow(e);
}
}
private final ProtoBuf.StringTable strings;
private final ProtoBuf.QualifiedNameTable qualifiedNames;