micronaut-core icon indicating copy to clipboard operation
micronaut-core copied to clipboard

Instantiation methods in introspection of abstract class tries to instantiate the abstract class

Open rorueda opened this issue 8 months ago • 0 comments

Expected Behavior

Introspection for an abstract class doesn't override the instantiation methods trying to instantiate the abstract class.

Actual Behaviour

For Java and Kotlin, the introspection for abstract classes is overriding the instantiation methods with a call to the abstract class constructor. This results in a j.l.InstantiationError instead of a i.m.c.r.e.InstantiationException.

This is important in my use case because only the latter is caught by micronaut serde and then wrapped in a SerdeException.

Note that it already works for groovy classes.

Steps To Reproduce

See the changes in the tests at https://github.com/micronaut-projects/micronaut-core/compare/4.5.x...rorueda:issue-abstract-class-introspection

Note it also has a fix inspired by the groovy implementation (making the ClassElement ignore the constructors if the class is abstract).

Environment Information

No response

Example Application

No response

Version

core 4.5.x

rorueda avatar Jun 05 '24 22:06 rorueda