![JAR search and dependency download from the Maven repository](/logo.png)
kotlincursor.processor.KCursorDataProcessor.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlincursor-compiler Show documentation
Show all versions of kotlincursor-compiler Show documentation
Kotlin Cursor & ContentValues boilerplate annotation processor.
The newest version!
package kotlincursor.processor
import com.google.auto.service.AutoService
import kotlincursor.annotation.KCursorData
import javax.annotation.processing.AbstractProcessor
import javax.annotation.processing.Filer
import javax.annotation.processing.Messager
import javax.annotation.processing.ProcessingEnvironment
import javax.annotation.processing.Processor
import javax.annotation.processing.RoundEnvironment
import javax.lang.model.SourceVersion
import javax.lang.model.element.TypeElement
import javax.lang.model.util.Elements
import javax.lang.model.util.Types
import javax.tools.Diagnostic
import javax.tools.StandardLocation
@AutoService(Processor::class)
class KCursorDataProcessor : AbstractProcessor() {
val messager: Messager by lazy { processingEnv.messager }
val elements: Elements by lazy { processingEnv.elementUtils }
val types: Types by lazy { processingEnv.typeUtils }
val filer: Filer by lazy { processingEnv.filer }
override fun init(processingEnv: ProcessingEnvironment) {
super.init(processingEnv)
messager.printMessage(Diagnostic.Kind.OTHER, "Initialized KotlinCursorProcessor")
}
override fun getSupportedAnnotationTypes() = setOf(KCursorData::class.java.canonicalName)
override fun getSupportedSourceVersion() = SourceVersion.RELEASE_8
override fun process(annotations: MutableSet, roundEnv: RoundEnvironment): Boolean {
val cursorDataClass = KCursorDataClass(messager, elements, types)
roundEnv.getElementsAnnotatedWith(KCursorData::class.java).forEach {
if (it is TypeElement) {
val kotlinFile = cursorDataClass.generateKotlinFile(it)
val file = filer.createResource(StandardLocation.SOURCE_OUTPUT,
kotlinFile.packageName, "${kotlinFile.fileName}.kt", it)
file.openWriter().use {
kotlinFile.writeTo(it)
}
} else {
messager.printMessage(Diagnostic.Kind.WARNING, "Found element annotated with " +
"${KCursorData::class} but its not a data class!", it)
}
}
return true
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy