Minor, delete SerializerProvider

This commit is contained in:
Alexander Udalov
2013-07-15 23:05:48 +04:00
parent 2e3005e431
commit 132f77d3c4
4 changed files with 12 additions and 41 deletions
@@ -23,65 +23,39 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.utils.ExceptionUtils;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Collection;
public class ClassSerializationUtil {
private ClassSerializationUtil() {
}
public interface Sink {
void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto);
}
public interface SerializerProvider {
@NotNull
DescriptorSerializer getSerializerFor(@NotNull ClassDescriptor classDescriptor);
}
public static final SerializerProvider NEW_EVERY_TIME = new SerializerProvider() {
@NotNull
@Override
public DescriptorSerializer getSerializerFor(@NotNull ClassDescriptor classDescriptor) {
return new DescriptorSerializer();
}
};
@NotNull
public static SerializerProvider constantSerializer(@NotNull final DescriptorSerializer serializer) {
return new SerializerProvider() {
@NotNull
@Override
public DescriptorSerializer getSerializerFor(@NotNull ClassDescriptor classDescriptor) {
return serializer;
}
};
}
public static void serializeClass(@NotNull ClassDescriptor classDescriptor, @NotNull SerializerProvider serializerProvider, @NotNull Sink sink) {
DescriptorSerializer serializer = serializerProvider.getSerializerFor(classDescriptor);
public static void serializeClass(@NotNull ClassDescriptor classDescriptor, @NotNull DescriptorSerializer serializer, @NotNull Sink sink) {
ProtoBuf.Class classProto = serializer.classProto(classDescriptor).build();
sink.writeClass(classDescriptor, classProto);
serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors(), serializerProvider, sink);
serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors(), serializer, sink);
serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getObjectDescriptors(), serializerProvider, sink);
serializeClasses(classDescriptor.getUnsubstitutedInnerClassesScope().getObjectDescriptors(), serializer, sink);
ClassDescriptor classObjectDescriptor = classDescriptor.getClassObjectDescriptor();
if (classObjectDescriptor != null) {
serializeClass(classObjectDescriptor, serializerProvider, sink);
serializeClass(classObjectDescriptor, serializer, sink);
}
}
public static void serializeClasses(
@NotNull Collection<? extends DeclarationDescriptor> descriptors,
@NotNull SerializerProvider serializerProvider,
@NotNull DescriptorSerializer serializer,
@NotNull Sink sink
) {
for (DeclarationDescriptor descriptor : descriptors) {
if (descriptor instanceof ClassDescriptor) {
ClassDescriptor nestedClass = (ClassDescriptor) descriptor;
serializeClass(nestedClass, serializerProvider, sink);
serializeClass((ClassDescriptor) descriptor, serializer, sink);
}
}
}
@@ -53,7 +53,6 @@ import java.io.File;
import java.io.IOException;
import java.util.*;
import static org.jetbrains.jet.descriptors.serialization.ClassSerializationUtil.constantSerializer;
import static org.jetbrains.jet.descriptors.serialization.ClassSerializationUtil.getClassId;
import static org.jetbrains.jet.descriptors.serialization.NameSerializationUtil.*;
import static org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationDeserializer.UNSUPPORTED;
@@ -232,7 +231,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
final Map<ClassDescriptor, byte[]> serializedClasses = Maps.newHashMap();
final DescriptorSerializer serializer = new DescriptorSerializer();
ClassSerializationUtil.serializeClasses(classes, constantSerializer(serializer), new ClassSerializationUtil.Sink() {
ClassSerializationUtil.serializeClasses(classes, serializer, new ClassSerializationUtil.Sink() {
@Override
public void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto) {
serializedClasses.put(classDescriptor, new ClassData(createNameResolver(serializer.getNameTable()), classProto).toBytes());
@@ -44,8 +44,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import static org.jetbrains.jet.descriptors.serialization.ClassSerializationUtil.constantSerializer;
public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
@Override
protected JetCoreEnvironment createEnvironment() {
@@ -139,7 +137,7 @@ public class BuiltinsDeserializationTest extends KotlinTestWithEnvironment {
Collection<DeclarationDescriptor> allDescriptors
) {
final Map<ClassId, ProtoBuf.Class> classProtos = Maps.newHashMap();
ClassSerializationUtil.serializeClasses(allDescriptors, constantSerializer(serializer), new ClassSerializationUtil.Sink() {
ClassSerializationUtil.serializeClasses(allDescriptors, serializer, new ClassSerializationUtil.Sink() {
@Override
public void writeClass(
@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto
@@ -70,7 +70,7 @@ public class BuiltInsSerializer {
});
final List<Name> classNames = new ArrayList<Name>();
ClassSerializationUtil.serializeClasses(allDescriptors, ClassSerializationUtil.constantSerializer(serializer), new ClassSerializationUtil.Sink() {
ClassSerializationUtil.serializeClasses(allDescriptors, serializer, new ClassSerializationUtil.Sink() {
@Override
public void writeClass(@NotNull ClassDescriptor classDescriptor, @NotNull ProtoBuf.Class classProto) {
try {