Polish CodeBlock joining logic
Consistently use `CodeBlock.joining(", ")` when generating code.
This commit is contained in:
parent
4560313b9d
commit
3ae1b9ba57
|
|
@ -140,20 +140,21 @@ class BeanDefinitionPropertiesCodeGenerator {
|
||||||
|
|
||||||
private void addInitDestroyMethods(Builder builder,
|
private void addInitDestroyMethods(Builder builder,
|
||||||
AbstractBeanDefinition beanDefinition, @Nullable String[] methodNames, String format) {
|
AbstractBeanDefinition beanDefinition, @Nullable String[] methodNames, String format) {
|
||||||
|
List<String> filteredMethodNames = (!ObjectUtils.isEmpty(methodNames))
|
||||||
if (!ObjectUtils.isEmpty(methodNames)) {
|
? Arrays.stream(methodNames).filter(this::isNotInferredMethod).toList()
|
||||||
Class<?> beanType = ClassUtils
|
: Collections.emptyList();
|
||||||
.getUserClass(beanDefinition.getResolvableType().toClass());
|
if (!filteredMethodNames.isEmpty()) {
|
||||||
List<String> filteredMethodNames = Arrays.stream(methodNames)
|
Class<?> beanType = ClassUtils.getUserClass(beanDefinition.getResolvableType().toClass());
|
||||||
.filter(candidate -> !AbstractBeanDefinition.INFER_METHOD.equals(candidate))
|
|
||||||
.toList();
|
|
||||||
if (!ObjectUtils.isEmpty(filteredMethodNames)) {
|
|
||||||
filteredMethodNames.forEach(methodName -> addInitDestroyHint(beanType, methodName));
|
filteredMethodNames.forEach(methodName -> addInitDestroyHint(beanType, methodName));
|
||||||
CodeBlock arguments = CodeBlock.join(filteredMethodNames.stream()
|
CodeBlock arguments = filteredMethodNames.stream()
|
||||||
.map(name -> CodeBlock.of("$S", name)).toList(), ", ");
|
.map(name -> CodeBlock.of("$S", name))
|
||||||
|
.collect(CodeBlock.joining(", "));
|
||||||
builder.addStatement(format, BEAN_DEFINITION_VARIABLE, arguments);
|
builder.addStatement(format, BEAN_DEFINITION_VARIABLE, arguments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isNotInferredMethod(String candidate) {
|
||||||
|
return !AbstractBeanDefinition.INFER_METHOD.equals(candidate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addInitDestroyHint(Class<?> beanUserClass, String methodName) {
|
private void addInitDestroyHint(Class<?> beanUserClass, String methodName) {
|
||||||
|
|
@ -264,12 +265,8 @@ class BeanDefinitionPropertiesCodeGenerator {
|
||||||
}
|
}
|
||||||
|
|
||||||
private CodeBlock toStringVarArgs(String[] strings) {
|
private CodeBlock toStringVarArgs(String[] strings) {
|
||||||
CodeBlock.Builder builder = CodeBlock.builder();
|
return Arrays.stream(strings).map(string -> CodeBlock.of("$S", string))
|
||||||
for (int i = 0; i < strings.length; i++) {
|
.collect(CodeBlock.joining(","));
|
||||||
builder.add((i != 0) ? ", " : "");
|
|
||||||
builder.add("$S", strings[i]);
|
|
||||||
}
|
|
||||||
return builder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object toRole(int value) {
|
private Object toRole(int value) {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.beans.factory.aot;
|
package org.springframework.beans.factory.aot;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
@ -28,6 +28,7 @@ import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.springframework.aot.generate.GeneratedMethod;
|
import org.springframework.aot.generate.GeneratedMethod;
|
||||||
import org.springframework.aot.generate.GeneratedMethods;
|
import org.springframework.aot.generate.GeneratedMethods;
|
||||||
|
|
@ -43,6 +44,7 @@ import org.springframework.javapoet.CodeBlock;
|
||||||
import org.springframework.javapoet.CodeBlock.Builder;
|
import org.springframework.javapoet.CodeBlock.Builder;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal code generator used to generate code for a single value contained in
|
* Internal code generator used to generate code for a single value contained in
|
||||||
|
|
@ -247,17 +249,11 @@ class BeanDefinitionPropertyValueCodeGenerator {
|
||||||
public CodeBlock generateCode(@Nullable Object value, ResolvableType type) {
|
public CodeBlock generateCode(@Nullable Object value, ResolvableType type) {
|
||||||
if (type.isArray()) {
|
if (type.isArray()) {
|
||||||
ResolvableType componentType = type.getComponentType();
|
ResolvableType componentType = type.getComponentType();
|
||||||
int length = Array.getLength(value);
|
Stream<CodeBlock> elements = Arrays.stream(ObjectUtils.toObjectArray(value)).map(component ->
|
||||||
|
BeanDefinitionPropertyValueCodeGenerator.this.generateCode(component, componentType));
|
||||||
CodeBlock.Builder builder = CodeBlock.builder();
|
CodeBlock.Builder builder = CodeBlock.builder();
|
||||||
builder.add("new $T {", type.toClass());
|
builder.add("new $T {", type.toClass());
|
||||||
for (int i = 0; i < length; i++) {
|
builder.add(elements.collect(CodeBlock.joining(", ")));
|
||||||
Object component = Array.get(value, i);
|
|
||||||
if (i != 0) {
|
|
||||||
builder.add(", ");
|
|
||||||
}
|
|
||||||
builder.add("$L", BeanDefinitionPropertyValueCodeGenerator.this
|
|
||||||
.generateCode(component, componentType));
|
|
||||||
}
|
|
||||||
builder.add("}");
|
builder.add("}");
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue