@@ -509,7 +509,7 @@ public void forSubResourceMethod(ClassCreator subClassCreator, MethodCreator sub
509509 collectHeaderFillers (subInterfaceClass , subMethod , headerFillersByName );
510510 String subHeaderFillerName = subInterfaceClass .name ().toString () + sha1 (rootInterfaceClass .name ().toString ()) +
511511 "$$" + methodIndex + "$$" + subMethodIndex ;
512- createAndReturnHeaderFiller (subClassCreator , subConstructor , subMethodCreator , subMethod ,
512+ createAndReturnHeaderFiller (subClassCreator , subClinit , subMethodCreator , subMethod ,
513513 invocationBuilder , index , generatedClasses , subMethodIndex , subHeaderFillerName , headerFillersByName ,
514514 Collections .emptyList ());
515515 }
@@ -535,7 +535,7 @@ public void forMethod(ClassCreator classCreator, MethodCreator constructor,
535535 clientBasicAuth .value ("password" ).asString ()));
536536 }
537537
538- createAndReturnHeaderFiller (classCreator , constructor , methodCreator , method ,
538+ createAndReturnHeaderFiller (classCreator , clinit , methodCreator , method ,
539539 invocationBuilder , index , generatedClasses , methodIndex ,
540540 interfaceClass + "$$" + method .name () + "$$" + methodIndex , headerFillersByName , enhancers );
541541 }
@@ -593,18 +593,19 @@ public void accept(AddHeadersEnhancer.Context context) {
593593 }
594594 }
595595
596- private void createAndReturnHeaderFiller (ClassCreator classCreator , MethodCreator constructor ,
596+ private void createAndReturnHeaderFiller (ClassCreator classCreator , MethodCreator clinit ,
597597 MethodCreator methodCreator , MethodInfo method ,
598598 AssignableResultHandle invocationBuilder , IndexView index ,
599599 BuildProducer <GeneratedClassBuildItem > generatedClasses , int methodIndex , String fillerClassName ,
600600 Map <String , ParamData > headerFillersByName ,
601601 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 ;
606603 // create header filler for this method if headerFillersByName is not empty
607604 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+
608609 GeneratedClassGizmoAdaptor classOutput = new GeneratedClassGizmoAdaptor (generatedClasses , true );
609610 try (ClassCreator headerFillerClass = ClassCreator .builder ().className (fillerClassName )
610611 .interfaces (ExtendedHeaderFiller .class )
@@ -654,19 +655,17 @@ public ResultHandle requestContextHandle() {
654655
655656 addHeaders .returnValue (null );
656657
657- headerFiller = constructor .newInstance (MethodDescriptor .ofConstructor (fillerClassName ));
658+ ResultHandle headerFiller = clinit .newInstance (MethodDescriptor .ofConstructor (fillerClassName ));
659+ clinit .writeStaticField (headerFillerField , headerFiller );
658660 }
659- } else {
660- headerFiller = constructor
661- .readStaticField (FieldDescriptor .of (NoOpHeaderFiller .class , "INSTANCE" , NoOpHeaderFiller .class ));
662661 }
663- constructor .writeInstanceField (headerFillerField , constructor .getThis (), headerFiller );
664662
665- ResultHandle headerFillerAsObject = methodCreator .checkCast (
666- methodCreator .readInstanceField (headerFillerField , methodCreator .getThis ()), Object .class );
667663 methodCreator .assign (invocationBuilder ,
668664 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 ))));
670669
671670 ResultHandle parametersList = null ;
672671 if (method .parametersCount () == 0 ) {
0 commit comments