@Override public void visitConfigBuilderMethod(Object type, String methodName, AnnotationMetadata annotationMetadata, ConfigurationMetadataBuilder metadataBuilder) { String factoryMethod = annotationMetadata .getValue( ConfigurationBuilder.class, "factoryMethod", String.class) .orElse(null); if (StringUtils.isNotEmpty(factoryMethod)) { Type builderType = getTypeReference(type); injectMethodVisitor.visitVarInsn(ALOAD, injectInstanceIndex); injectMethodVisitor.invokeStatic( builderType, org.objectweb.asm.commons.Method.getMethod( builderType.getClassName() + " " + factoryMethod + "()" ) ); String propertyName = NameUtils.getPropertyNameForGetter(methodName); String setterName = NameUtils.setterNameFor(propertyName); injectMethodVisitor.invokeVirtual(beanType, org.objectweb.asm.commons.Method.getMethod( "void " + setterName + "(" + builderType.getClassName() + ")" )); } this.currentConfigBuilderState = new ConfigBuilderState(type, methodName, true, annotationMetadata, metadataBuilder); }
@Override public void visitConfigBuilderMethod(Object type, String methodName, AnnotationMetadata annotationMetadata, ConfigurationMetadataBuilder metadataBuilder) { String factoryMethod = annotationMetadata .getValue( ConfigurationBuilder.class, "factoryMethod", String.class) .orElse(null); if (StringUtils.isNotEmpty(factoryMethod)) { Type builderType = getTypeReference(type); injectMethodVisitor.visitVarInsn(ALOAD, injectInstanceIndex); injectMethodVisitor.invokeStatic( builderType, org.objectweb.asm.commons.Method.getMethod( builderType.getClassName() + " " + factoryMethod + "()" ) ); String propertyName = NameUtils.getPropertyNameForGetter(methodName); String setterName = NameUtils.setterNameFor(propertyName); injectMethodVisitor.invokeVirtual(beanType, org.objectweb.asm.commons.Method.getMethod( "void " + setterName + "(" + builderType.getClassName() + ")" )); } this.currentConfigBuilderState = new ConfigBuilderState(type, methodName, true, annotationMetadata, metadataBuilder); }