micronaut-projects / micronaut-email

Apache License 2.0
3 stars 4 forks source link

Introspection issue after upgrade to Micronaut Email 2.0.0-M1 #219

Closed liefra closed 1 year ago

liefra commented 1 year ago

Expected Behavior

Email can be sent

Actual Behaviour

The io.micronaut.email.EmailSender send function throws the following jakarta.validation.ConstraintViolationException:

jakarta.validation.ConstraintViolationException: send.email.to: Cannot validate java.util.Collection. No bean introspection present. Please add @Introspected to the class and ensure Micronaut annotation processing is enabled

 __  __ _                                  _   
|  \/  (_) ___ _ __ ___  _ __   __ _ _   _| |_ 
| |\/| | |/ __| '__/ _ \| '_ \ / _` | | | | __|
| |  | | | (__| | | (_) | | | | (_| | |_| | |_ 
|_|  |_|_|\___|_|  \___/|_| |_|\__,_|\__,_|\__|
  Micronaut (v4.0.0-M2)

10:20:18.434 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: send.email.to: Cannot validate java.util.Collection. No bean introspection present. Please add @Introspected to the class and ensure Micronaut annotation processing is enabled
jakarta.validation.ConstraintViolationException: send.email.to: Cannot validate java.util.Collection. No bean introspection present. Please add @Introspected to the class and ensure Micronaut annotation processing is enabled
    at io.micronaut.validation.ValidatingInterceptor.intercept(ValidatingInterceptor.java:119)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:137)
    at io.micronaut.email.javamail.sender.$JavaxEmailSender$Definition$Intercepted.send(Unknown Source)
    at io.micronaut.email.javamail.sender.JavaxEmailSender.send(JavaxEmailSender.java:45)
    at io.micronaut.email.DefaultEmailSender.send(DefaultEmailSender.java:55)
    at io.micronaut.email.$DefaultEmailSender$Definition$Intercepted.$$access$$send(Unknown Source)
    at io.micronaut.email.$DefaultEmailSender$Definition$Exec.dispatch(Unknown Source)
    at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invoke(AbstractExecutableMethodsDefinition.java:442)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:128)
    at io.micronaut.validation.ValidatingInterceptor.validateReturnMicronautValidator(ValidatingInterceptor.java:153)
    at io.micronaut.validation.ValidatingInterceptor.intercept(ValidatingInterceptor.java:139)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:137)
    at io.micronaut.email.$DefaultEmailSender$Definition$Intercepted.send(Unknown Source)
    at io.micronaut.email.EmailSender.send(EmailSender.java:39)
    at com.example.OciMailService.send(OciMailService.kt:29)
    at com.example.OciMailService.onStartupEvent(OciMailService.kt:17)
    at com.example.$OciMailService$Definition$Exec.dispatch(Unknown Source)
    at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invoke(AbstractExecutableMethodsDefinition.java:442)
    at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.invoke(DefaultBeanContext.java:3873)
    at io.micronaut.aop.chain.AdapterIntroduction.intercept(AdapterIntroduction.java:84)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:137)
    at com.example.OciMailService$ApplicationEventListener$onStartupEvent1$Intercepted.onApplicationEvent(Unknown Source)
    at io.micronaut.context.event.ApplicationEventPublisherFactory.notifyEventListeners(ApplicationEventPublisherFactory.java:266)
    at io.micronaut.context.event.ApplicationEventPublisherFactory$2.publishEvent(ApplicationEventPublisherFactory.java:226)
    at io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1784)
    at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:362)
    at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:191)
    at io.micronaut.runtime.Micronaut.start(Micronaut.java:75)
    at io.micronaut.runtime.Micronaut.run(Micronaut.java:324)
    at io.micronaut.runtime.Micronaut.run(Micronaut.java:299)
    at com.example.ApplicationKt.main(Application.kt:5)

Steps To Reproduce

See also demo repo.

Basic Kotlin example is:

  val builder = Email.builder()
                .from("noreply@exmaple.com")
                .subject("Test mail")
                .body("Test body")
                .to("test@example.com")

        emailSender.send(builder)

I tried, KSP and Kapt, both with the same result.

Environment Information

JDK 17

Example Application

https://github.com/liefra/jakartamaildemo

Version

Micronaut 4.0.0-M2

sdelamo commented 1 year ago

@liefra is this fixed with 4.0.0 ?

liefra commented 1 year ago

@sdelamo : Just checked with version 4.0.0 and now it works. Thanks a lot!