11package io .quarkus .deployment .steps ;
22
3- import javax .inject .Inject ;
4-
53import org .jboss .jandex .AnnotationInstance ;
64import org .jboss .jandex .AnnotationValue ;
75import org .jboss .jandex .ClassInfo ;
1210import io .quarkus .deployment .annotations .BuildProducer ;
1311import io .quarkus .deployment .annotations .BuildStep ;
1412import io .quarkus .deployment .builditem .CombinedIndexBuildItem ;
13+ import io .quarkus .deployment .builditem .nativeimage .LambdaCapturingTypeBuildItem ;
1514import io .quarkus .deployment .builditem .nativeimage .ReflectiveClassBuildItem ;
1615import io .quarkus .runtime .annotations .RegisterForReflection ;
1716
1817public class RegisterForReflectionBuildStep {
1918
2019 private static final Logger log = Logger .getLogger (RegisterForReflectionBuildStep .class );
2120
22- @ Inject
23- CombinedIndexBuildItem combinedIndexBuildItem ;
24-
2521 @ BuildStep
26- public void build (BuildProducer <ReflectiveClassBuildItem > reflectiveClass ) {
22+ public void build (CombinedIndexBuildItem combinedIndexBuildItem ,
23+ BuildProducer <ReflectiveClassBuildItem > reflectiveClass ,
24+ BuildProducer <LambdaCapturingTypeBuildItem > lambdaCapturingTypeProducer ) {
2725 for (AnnotationInstance i : combinedIndexBuildItem .getIndex ()
2826 .getAnnotations (DotName .createSimple (RegisterForReflection .class .getName ()))) {
2927
@@ -34,6 +32,13 @@ public void build(BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
3432
3533 AnnotationValue targetsValue = i .value ("targets" );
3634 AnnotationValue classNamesValue = i .value ("classNames" );
35+ AnnotationValue lambdaCapturingTypesValue = i .value ("lambdaCapturingTypes" );
36+
37+ if (lambdaCapturingTypesValue != null ) {
38+ for (String lambdaCapturingType : lambdaCapturingTypesValue .asStringArray ()) {
39+ lambdaCapturingTypeProducer .produce (new LambdaCapturingTypeBuildItem (lambdaCapturingType ));
40+ }
41+ }
3742
3843 ClassLoader classLoader = Thread .currentThread ().getContextClassLoader ();
3944 if (targetsValue == null && classNamesValue == null ) {
0 commit comments