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 @Override
public void serialize(@NotNull KotlinFileStub stub, @NotNull StubOutputStream dataStream) public void serialize(@NotNull KotlinFileStub stub, @NotNull StubOutputStream dataStream)
throws IOException { throws IOException {
dataStream.writeName(stub.getPackageFqName().asString()); StubIndexService.getInstance().serializeFileStub(stub, dataStream);
dataStream.writeName(stub.getFacadeSimpleName());
dataStream.writeName(stub.getPartSimpleName());
dataStream.writeBoolean(stub.isScript());
} }
@NotNull @NotNull
@Override @Override
public KotlinFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException { public KotlinFileStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException {
StringRef packageFqNameAsString = dataStream.readName(); return StubIndexService.getInstance().deserializeFileStub(dataStream);
boolean isScript = dataStream.readBoolean();
StringRef facadeSimpleName = dataStream.readName();
StringRef partSimpleName = dataStream.readName();
return new KotlinFileStubImpl(null, packageFqNameAsString, facadeSimpleName, partSimpleName, isScript);
} }
@Override @Override
@@ -18,6 +18,8 @@ package org.jetbrains.kotlin.psi.stubs.elements
import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.stubs.IndexSink 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.JetFile
import org.jetbrains.kotlin.psi.stubs.* import org.jetbrains.kotlin.psi.stubs.*
import org.jetbrains.kotlin.psi.stubs.impl.KotlinFileStubImpl 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) 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 { companion object {
@jvmStatic @jvmStatic
public fun getInstance(): StubIndexService { public fun getInstance(): StubIndexService {