Close kapt writer only once
This commit is contained in:
+7
-10
@@ -46,8 +46,6 @@ public abstract class AnnotationCollectorExtensionBase() : ClassBuilderIntercept
|
|||||||
|
|
||||||
protected abstract val annotationFilterList: List<String>?
|
protected abstract val annotationFilterList: List<String>?
|
||||||
|
|
||||||
private val classBuilderFactories = arrayListOf<AnnotationCollectorClassBuilderFactory>()
|
|
||||||
|
|
||||||
private val shortenedAnnotationCache = ShortenedNameCache(RecordTypes.SHORTENED_ANNOTATION)
|
private val shortenedAnnotationCache = ShortenedNameCache(RecordTypes.SHORTENED_ANNOTATION)
|
||||||
private val shortenedPackageNameCache = ShortenedNameCache(RecordTypes.SHORTENED_PACKAGE_NAME)
|
private val shortenedPackageNameCache = ShortenedNameCache(RecordTypes.SHORTENED_PACKAGE_NAME)
|
||||||
|
|
||||||
@@ -56,12 +54,11 @@ public abstract class AnnotationCollectorExtensionBase() : ClassBuilderIntercept
|
|||||||
bindingContext: BindingContext,
|
bindingContext: BindingContext,
|
||||||
diagnostics: DiagnosticSink
|
diagnostics: DiagnosticSink
|
||||||
): ClassBuilderFactory {
|
): ClassBuilderFactory {
|
||||||
val factory = AnnotationCollectorClassBuilderFactory(interceptedFactory, getWriter(diagnostics), diagnostics)
|
return AnnotationCollectorClassBuilderFactory(interceptedFactory, getWriter(diagnostics), diagnostics)
|
||||||
classBuilderFactories.add(factory)
|
|
||||||
return factory
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun getWriter(diagnostic: DiagnosticSink): Writer
|
protected abstract fun getWriter(diagnostic: DiagnosticSink): Writer
|
||||||
|
protected abstract fun closeWriter()
|
||||||
|
|
||||||
private inner class AnnotationCollectorClassBuilderFactory(
|
private inner class AnnotationCollectorClassBuilderFactory(
|
||||||
private val delegateFactory: ClassBuilderFactory,
|
private val delegateFactory: ClassBuilderFactory,
|
||||||
@@ -84,11 +81,7 @@ public abstract class AnnotationCollectorExtensionBase() : ClassBuilderIntercept
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun close() {
|
override fun close() {
|
||||||
for (factory in classBuilderFactories) {
|
closeWriter()
|
||||||
factory.writer.close()
|
|
||||||
}
|
|
||||||
classBuilderFactories.clear()
|
|
||||||
|
|
||||||
delegateFactory.close()
|
delegateFactory.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,6 +225,10 @@ public class AnnotationCollectorExtension(
|
|||||||
|
|
||||||
private var writerInternal: Writer? = null
|
private var writerInternal: Writer? = null
|
||||||
|
|
||||||
|
override fun closeWriter() {
|
||||||
|
writerInternal?.close()
|
||||||
|
}
|
||||||
|
|
||||||
override fun getWriter(diagnostic: DiagnosticSink): Writer {
|
override fun getWriter(diagnostic: DiagnosticSink): Writer {
|
||||||
return writerInternal ?: try {
|
return writerInternal ?: try {
|
||||||
with (File(outputFilename)) {
|
with (File(outputFilename)) {
|
||||||
|
|||||||
+1
@@ -67,6 +67,7 @@ public abstract class AbstractAnnotationProcessorBoxTest : CodegenTestCase() {
|
|||||||
val stringWriter = StringWriter()
|
val stringWriter = StringWriter()
|
||||||
|
|
||||||
override fun getWriter(diagnostic: DiagnosticSink) = stringWriter
|
override fun getWriter(diagnostic: DiagnosticSink) = stringWriter
|
||||||
|
override fun closeWriter() {}
|
||||||
|
|
||||||
override val annotationFilterList = listOf<String>()
|
override val annotationFilterList = listOf<String>()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user