Make StubIndexService responsible for serializing and deserializing file stubs

This commit is contained in:
Pavel V. Talanov
2015-09-03 20:54:41 +03:00
parent 52cb404920
commit 25f31582c9
2 changed files with 19 additions and 9 deletions
@@ -67,20 +67,13 @@ public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
@Override
public void serialize(@NotNull KotlinFileStub stub, @NotNull StubOutputStream dataStream)
throws IOException {
dataStream.writeName(stub.getPackageFqName().asString());
dataStream.writeName(stub.getFacadeSimpleName());
dataStream.writeName(stub.getPartSimpleName());
dataStream.writeBoolean(stub.isScript());
StubIndexService.getInstance().serializeFileStub(stub, dataStream);
}
@NotNull
@Override
public KotlinFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
StringRef packageFqNameAsString = dataStream.readName();
boolean isScript = dataStream.readBoolean();
StringRef facadeSimpleName = dataStream.readName();
StringRef partSimpleName = dataStream.readName();
return new KotlinFileStubImpl(null, packageFqNameAsString, facadeSimpleName, partSimpleName, isScript);
return StubIndexService.getInstance().deserializeFileStub(dataStream);
}
@Override
@@ -18,6 +18,8 @@ package org.jetbrains.kotlin.psi.stubs.elements
import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.stubs.IndexSink
import com.intellij.psi.stubs.StubInputStream
import com.intellij.psi.stubs.StubOutputStream
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.psi.stubs.*
import org.jetbrains.kotlin.psi.stubs.impl.KotlinFileStubImpl
@@ -45,6 +47,21 @@ public open class StubIndexService protected constructor() {
return KotlinFileStubImpl(file, file.packageFqNameByTree.asString(), file.isScriptByTree)
}
public open fun serializeFileStub(stub: KotlinFileStub, dataStream: StubOutputStream) {
dataStream.writeName(stub.getPackageFqName().asString())
dataStream.writeName(stub.getFacadeSimpleName())
dataStream.writeName(stub.getPartSimpleName())
dataStream.writeBoolean(stub.isScript())
}
public open fun deserializeFileStub(dataStream: StubInputStream): KotlinFileStub {
val packageFqNameAsString = dataStream.readName()
val isScript = dataStream.readBoolean()
val facadeSimpleName = dataStream.readName()
val partSimpleName = dataStream.readName()
return KotlinFileStubImpl(null, packageFqNameAsString!!, facadeSimpleName, partSimpleName, isScript)
}
companion object {
@jvmStatic
public fun getInstance(): StubIndexService {