@@ -509,7 +509,7 @@ public void forSubResourceMethod(ClassCreator subClassCreator, MethodCreator sub
509
509
collectHeaderFillers (subInterfaceClass , subMethod , headerFillersByName );
510
510
String subHeaderFillerName = subInterfaceClass .name ().toString () + sha1 (rootInterfaceClass .name ().toString ()) +
511
511
"$$" + methodIndex + "$$" + subMethodIndex ;
512
- createAndReturnHeaderFiller (subClassCreator , subConstructor , subMethodCreator , subMethod ,
512
+ createAndReturnHeaderFiller (subClassCreator , subClinit , subMethodCreator , subMethod ,
513
513
invocationBuilder , index , generatedClasses , subMethodIndex , subHeaderFillerName , headerFillersByName ,
514
514
Collections .emptyList ());
515
515
}
@@ -535,7 +535,7 @@ public void forMethod(ClassCreator classCreator, MethodCreator constructor,
535
535
clientBasicAuth .value ("password" ).asString ()));
536
536
}
537
537
538
- createAndReturnHeaderFiller (classCreator , constructor , methodCreator , method ,
538
+ createAndReturnHeaderFiller (classCreator , clinit , methodCreator , method ,
539
539
invocationBuilder , index , generatedClasses , methodIndex ,
540
540
interfaceClass + "$$" + method .name () + "$$" + methodIndex , headerFillersByName , enhancers );
541
541
}
@@ -593,18 +593,19 @@ public void accept(AddHeadersEnhancer.Context context) {
593
593
}
594
594
}
595
595
596
- private void createAndReturnHeaderFiller (ClassCreator classCreator , MethodCreator constructor ,
596
+ private void createAndReturnHeaderFiller (ClassCreator classCreator , MethodCreator clinit ,
597
597
MethodCreator methodCreator , MethodInfo method ,
598
598
AssignableResultHandle invocationBuilder , IndexView index ,
599
599
BuildProducer <GeneratedClassBuildItem > generatedClasses , int methodIndex , String fillerClassName ,
600
600
Map <String , ParamData > headerFillersByName ,
601
601
List <AddHeadersEnhancer > addHeadersEnhancers ) {
602
- FieldDescriptor headerFillerField = FieldDescriptor .of (classCreator .getClassName (),
603
- "headerFiller" + methodIndex , HeaderFiller .class );
604
- classCreator .getFieldCreator (headerFillerField ).setModifiers (Modifier .PRIVATE | Modifier .FINAL );
605
- ResultHandle headerFiller ;
602
+ FieldDescriptor headerFillerField = null ;
606
603
// create header filler for this method if headerFillersByName is not empty
607
604
if (!headerFillersByName .isEmpty () || !addHeadersEnhancers .isEmpty ()) {
605
+ headerFillerField = FieldDescriptor .of (classCreator .getClassName (),
606
+ "headerFiller" + methodIndex , HeaderFiller .class );
607
+ classCreator .getFieldCreator (headerFillerField ).setModifiers (Modifier .STATIC | Modifier .PRIVATE | Modifier .FINAL );
608
+
608
609
GeneratedClassGizmoAdaptor classOutput = new GeneratedClassGizmoAdaptor (generatedClasses , true );
609
610
try (ClassCreator headerFillerClass = ClassCreator .builder ().className (fillerClassName )
610
611
.interfaces (ExtendedHeaderFiller .class )
@@ -654,19 +655,17 @@ public ResultHandle requestContextHandle() {
654
655
655
656
addHeaders .returnValue (null );
656
657
657
- headerFiller = constructor .newInstance (MethodDescriptor .ofConstructor (fillerClassName ));
658
+ ResultHandle headerFiller = clinit .newInstance (MethodDescriptor .ofConstructor (fillerClassName ));
659
+ clinit .writeStaticField (headerFillerField , headerFiller );
658
660
}
659
- } else {
660
- headerFiller = constructor
661
- .readStaticField (FieldDescriptor .of (NoOpHeaderFiller .class , "INSTANCE" , NoOpHeaderFiller .class ));
662
661
}
663
- constructor .writeInstanceField (headerFillerField , constructor .getThis (), headerFiller );
664
662
665
- ResultHandle headerFillerAsObject = methodCreator .checkCast (
666
- methodCreator .readInstanceField (headerFillerField , methodCreator .getThis ()), Object .class );
667
663
methodCreator .assign (invocationBuilder ,
668
664
methodCreator .invokeInterfaceMethod (INVOCATION_BUILDER_PROPERTY_METHOD , invocationBuilder ,
669
- methodCreator .load (HeaderFiller .class .getName ()), headerFillerAsObject ));
665
+ methodCreator .load (HeaderFiller .class .getName ()),
666
+ headerFillerField != null ? methodCreator .readStaticField (headerFillerField )
667
+ : methodCreator .readStaticField (
668
+ FieldDescriptor .of (NoOpHeaderFiller .class , "INSTANCE" , NoOpHeaderFiller .class ))));
670
669
671
670
ResultHandle parametersList = null ;
672
671
if (method .parametersCount () == 0 ) {
0 commit comments