mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Move setter attribute in PropertyDescriptor proper
This commit is contained in:
parent
a90c8d01a9
commit
75c248dcba
@ -21,8 +21,6 @@ import javax.lang.model.element.TypeElement;
|
||||
import javax.lang.model.element.VariableElement;
|
||||
import javax.lang.model.type.TypeMirror;
|
||||
|
||||
import org.springframework.boot.configurationprocessor.metadata.ItemDeprecation;
|
||||
|
||||
/**
|
||||
* A {@link PropertyDescriptor} for a standard JavaBean property.
|
||||
*
|
||||
@ -30,17 +28,10 @@ import org.springframework.boot.configurationprocessor.metadata.ItemDeprecation;
|
||||
*/
|
||||
class JavaBeanPropertyDescriptor extends PropertyDescriptor<ExecutableElement> {
|
||||
|
||||
private final ExecutableElement setter;
|
||||
|
||||
JavaBeanPropertyDescriptor(TypeElement ownerElement, ExecutableElement factoryMethod,
|
||||
ExecutableElement getter, String name, TypeMirror type, VariableElement field,
|
||||
ExecutableElement setter) {
|
||||
super(ownerElement, factoryMethod, getter, name, type, field, getter);
|
||||
this.setter = setter;
|
||||
}
|
||||
|
||||
public ExecutableElement getSetter() {
|
||||
return this.setter;
|
||||
super(ownerElement, factoryMethod, getter, name, type, field, getter, setter);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -50,13 +41,4 @@ class JavaBeanPropertyDescriptor extends PropertyDescriptor<ExecutableElement> {
|
||||
&& (getSetter() != null || isCollection);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemDeprecation resolveItemDeprecation(
|
||||
MetadataGenerationEnvironment environment) {
|
||||
boolean deprecated = environment.isDeprecated(getGetter())
|
||||
|| environment.isDeprecated(getSetter())
|
||||
|| environment.isDeprecated(getFactoryMethod());
|
||||
return deprecated ? environment.resolveItemDeprecation(getGetter()) : null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -43,9 +43,9 @@ class LombokPropertyDescriptor extends PropertyDescriptor<VariableElement> {
|
||||
private static final String LOMBOK_ACCESS_LEVEL_PUBLIC = "PUBLIC";
|
||||
|
||||
LombokPropertyDescriptor(TypeElement typeElement, ExecutableElement factoryMethod,
|
||||
VariableElement field, String name, TypeMirror type,
|
||||
ExecutableElement getter) {
|
||||
super(typeElement, factoryMethod, field, name, type, field, getter);
|
||||
VariableElement field, String name, TypeMirror type, ExecutableElement getter,
|
||||
ExecutableElement setter) {
|
||||
super(typeElement, factoryMethod, field, name, type, field, getter, setter);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,14 +69,15 @@ class LombokPropertyDescriptor extends PropertyDescriptor<VariableElement> {
|
||||
protected ItemDeprecation resolveItemDeprecation(
|
||||
MetadataGenerationEnvironment environment) {
|
||||
boolean deprecated = environment.isDeprecated(getField())
|
||||
|| environment.isDeprecated(getGetter())
|
||||
|| environment.isDeprecated(getFactoryMethod());
|
||||
return deprecated ? new ItemDeprecation() : null;
|
||||
|
||||
return deprecated ? environment.resolveItemDeprecation(getGetter()) : null;
|
||||
}
|
||||
|
||||
private boolean hasSetter(MetadataGenerationEnvironment env) {
|
||||
return !getField().getModifiers().contains(Modifier.FINAL)
|
||||
boolean nonFinalPublicField = !getField().getModifiers().contains(Modifier.FINAL)
|
||||
&& hasLombokPublicAccessor(env, false);
|
||||
return getSetter() != null || nonFinalPublicField;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,9 +49,11 @@ abstract class PropertyDescriptor<S> {
|
||||
|
||||
private final ExecutableElement getter;
|
||||
|
||||
private final ExecutableElement setter;
|
||||
|
||||
protected PropertyDescriptor(TypeElement ownerElement,
|
||||
ExecutableElement factoryMethod, S source, String name, TypeMirror type,
|
||||
VariableElement field, ExecutableElement getter) {
|
||||
VariableElement field, ExecutableElement getter, ExecutableElement setter) {
|
||||
this.ownerElement = ownerElement;
|
||||
this.factoryMethod = factoryMethod;
|
||||
this.source = source;
|
||||
@ -59,6 +61,7 @@ abstract class PropertyDescriptor<S> {
|
||||
this.type = type;
|
||||
this.field = field;
|
||||
this.getter = getter;
|
||||
this.setter = setter;
|
||||
}
|
||||
|
||||
public TypeElement getOwnerElement() {
|
||||
@ -89,11 +92,20 @@ abstract class PropertyDescriptor<S> {
|
||||
return this.getter;
|
||||
}
|
||||
|
||||
protected abstract ItemDeprecation resolveItemDeprecation(
|
||||
MetadataGenerationEnvironment environment);
|
||||
public ExecutableElement getSetter() {
|
||||
return this.setter;
|
||||
}
|
||||
|
||||
protected abstract boolean isProperty(MetadataGenerationEnvironment environment);
|
||||
|
||||
protected ItemDeprecation resolveItemDeprecation(
|
||||
MetadataGenerationEnvironment environment) {
|
||||
boolean deprecated = environment.isDeprecated(getGetter())
|
||||
|| environment.isDeprecated(getSetter())
|
||||
|| environment.isDeprecated(getFactoryMethod());
|
||||
return deprecated ? environment.resolveItemDeprecation(getGetter()) : null;
|
||||
}
|
||||
|
||||
protected boolean isNested(MetadataGenerationEnvironment environment) {
|
||||
Element typeElement = environment.getTypeUtils().asElement(getType());
|
||||
if (!(typeElement instanceof TypeElement)
|
||||
|
@ -61,8 +61,9 @@ class PropertyDescriptorResolver {
|
||||
members.getFields().forEach((name, field) -> {
|
||||
TypeMirror returnType = field.asType();
|
||||
ExecutableElement getter = members.getPublicGetter(name, returnType);
|
||||
ExecutableElement setter = members.getPublicSetter(name, returnType);
|
||||
candidates.add(new LombokPropertyDescriptor(type, factoryMethod, field, name,
|
||||
returnType, getter));
|
||||
returnType, getter, setter));
|
||||
});
|
||||
return candidates.stream().filter(this::isCandidate);
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ public class LombokPropertyDescriptorTests extends PropertyDescriptorTests {
|
||||
VariableElement field = getField(ownerElement, "third");
|
||||
ExecutableElement getter = getMethod(ownerElement, "getThird");
|
||||
LombokPropertyDescriptor property = new LombokPropertyDescriptor(ownerElement,
|
||||
null, field, "third", field.asType(), getter);
|
||||
null, field, "third", field.asType(), getter, null);
|
||||
assertItemMetadata(metadataEnv, property).isGroup().hasName("test.third")
|
||||
.hasType(
|
||||
"org.springframework.boot.configurationsample.lombok.SimpleLombokPojo")
|
||||
@ -303,8 +303,10 @@ public class LombokPropertyDescriptorTests extends PropertyDescriptorTests {
|
||||
VariableElement field = getField(ownerElement, name);
|
||||
ExecutableElement getter = getMethod(ownerElement,
|
||||
createAccessorMethodName("get", name));
|
||||
ExecutableElement setter = getMethod(ownerElement,
|
||||
createAccessorMethodName("set", name));
|
||||
return new LombokPropertyDescriptor(ownerElement, null, field, name,
|
||||
field.asType(), getter);
|
||||
field.asType(), getter, setter);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user