Refactoring in AnnotationProcessingManager.kt.

This commit is contained in:
Sergey Igushkin
2017-04-10 19:02:01 +03:00
parent 80daae90e3
commit 64278a06cc
@@ -42,7 +42,7 @@ import java.util.zip.ZipFile
internal fun Project.initKapt( internal fun Project.initKapt(
kotlinTask: KotlinCompile, kotlinTask: KotlinCompile,
javaTask: AbstractCompile, javaTask: JavaCompile,
kaptManager: AnnotationProcessingManager, kaptManager: AnnotationProcessingManager,
variantName: String, variantName: String,
kotlinOptions: KotlinJvmOptionsImpl?, kotlinOptions: KotlinJvmOptionsImpl?,
@@ -91,16 +91,13 @@ internal fun Project.initKapt(
kaptManager.generateJavaHackFile() kaptManager.generateJavaHackFile()
} }
var originalJavaCompilerArgs: List<String>? = null
javaTask.doFirst { javaTask.doFirst {
originalJavaCompilerArgs = (javaTask as JavaCompile).options.compilerArgs
kaptManager.setupKapt() kaptManager.setupKapt()
kaptManager.generateJavaHackFile() kaptManager.generateJavaHackFile()
kotlinAfterJavaTask?.source(kaptManager.generatedKotlinSourceDir) kotlinAfterJavaTask?.source(kaptManager.generatedKotlinSourceDir)
} }
javaTask.doLast { javaTask.doLast {
(javaTask as JavaCompile).options.compilerArgs = originalJavaCompilerArgs
kaptManager.afterJavaCompile() kaptManager.afterJavaCompile()
} }
@@ -138,6 +135,8 @@ class AnnotationProcessingManager(
val wrappersDirectory = File(aptWorkingDir, "wrappers") val wrappersDirectory = File(aptWorkingDir, "wrappers")
val hackAnnotationDir = File(aptWorkingDir, "java_src") val hackAnnotationDir = File(aptWorkingDir, "java_src")
private var originalJavaCompilerArgs: List<String>? = null
private companion object { private companion object {
val JAVA_FQNAME_PATTERN = "^([\\p{L}_$][\\p{L}\\p{N}_$]*\\.)*[\\p{L}_$][\\p{L}\\p{N}_$]*$".toRegex() val JAVA_FQNAME_PATTERN = "^([\\p{L}_$][\\p{L}\\p{N}_$]*\\.)*[\\p{L}_$][\\p{L}\\p{N}_$]*$".toRegex()
val GEN_ANNOTATION = "__gen/annotation" val GEN_ANNOTATION = "__gen/annotation"
@@ -157,7 +156,11 @@ class AnnotationProcessingManager(
return kotlinGeneratedDir return kotlinGeneratedDir
} }
val kaptProcessorPath get() = javaTask.classpath + setOf(wrappersDirectory) + aptFiles
fun setupKapt() { fun setupKapt() {
originalJavaCompilerArgs = javaTask.options.compilerArgs
if (aptFiles.isEmpty()) return if (aptFiles.isEmpty()) return
if (project.plugins.findPlugin(ANDROID_APT_PLUGIN_ID) != null) { if (project.plugins.findPlugin(ANDROID_APT_PLUGIN_ID) != null) {
@@ -168,8 +171,7 @@ class AnnotationProcessingManager(
generateAnnotationProcessorStubs(javaTask, annotationProcessorFqNames, wrappersDirectory) generateAnnotationProcessorStubs(javaTask, annotationProcessorFqNames, wrappersDirectory)
val processorPath = setOf(wrappersDirectory) + aptFiles setProcessorPath(javaTask, (kaptProcessorPath))
setProcessorPath(javaTask, (processorPath + javaTask.classpath))
if (aptOutputDir.exists()) { if (aptOutputDir.exists()) {
aptOutputDir.deleteRecursively() aptOutputDir.deleteRecursively()
@@ -187,6 +189,7 @@ class AnnotationProcessingManager(
} else { } else {
project.logger.kotlinDebug("kapt: Java file stub was not found at $generatedFile") project.logger.kotlinDebug("kapt: Java file stub was not found at $generatedFile")
} }
javaTask.options.compilerArgs = originalJavaCompilerArgs
} }
fun generateJavaHackFile() { fun generateJavaHackFile() {