micronaut-projects / micronaut-core

Micronaut Application Framework
http://micronaut.io
Apache License 2.0
6.06k stars 1.06k forks source link

@CacheConfig leads to NullPointerException using Kotlin #1230

Closed marceloverdijk closed 5 years ago

marceloverdijk commented 5 years ago

Using Micronaut 1.0.4 I have a Kotlin class like:

@Singleton
@CacheConfig(cacheNames = ["continent-cache"])
class ContinentServiceImpl : BaseServiceImpl<Continent, String>(Continent::class.java), ContinentService {

    @Cacheable
    override fun findById(id: String): Continent? {
        return super.findById(id)
    }
}

when compiling the app it fails with:

> Task :kaptKotlin FAILED
e: [kapt] An exception occurred: java.lang.NullPointerException
        at io.micronaut.inject.annotation.DefaultAnnotationMetadata.getValues(DefaultAnnotationMetadata.java:371)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor$AnnBeanElementVisitor.visitExecutableMethod(BeanDefinitionInjectProcessor.java:878)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor$AnnBeanElementVisitor.visitExecutable(BeanDefinitionInjectProcessor.java:548)
        at com.sun.tools.javac.code.Symbol$MethodSymbol.accept(Symbol.java:1644)
        at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:146)
        at javax.lang.model.util.ElementScanner6.scan(ElementScanner6.java:133)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor$AnnBeanElementVisitor.visitType(BeanDefinitionInjectProcessor.java:458)
        at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:1150)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor$AnnBeanElementVisitor.visitType(BeanDefinitionInjectProcessor.java:454)
        at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:1150)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor.lambda$process$6(BeanDefinitionInjectProcessor.java:182)
        at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
        at io.micronaut.annotation.processing.BeanDefinitionInjectProcessor.process(BeanDefinitionInjectProcessor.java:179)

I will create an example later --> https://github.com/marceloverdijk/micronaut-1230 Just run ./gradlew clean run

marceloverdijk commented 5 years ago

Thx!