@Optional in getters for properties without field

This commit is contained in:
Radist 2018-07-14 16:41:52 +03:00
parent c6d1ed4409
commit 4c631902a0
3 changed files with 12 additions and 1 deletions

View File

@ -285,7 +285,7 @@ public class ConfigBeanImpl {
private static boolean isOptionalProperty(Class beanClass, PropertyDescriptor beanProp) {
Field field = getField(beanClass, beanProp.getName());
return field != null && (field.getAnnotationsByType(Optional.class).length > 0);
return field != null ? field.getAnnotationsByType(Optional.class).length > 0 : beanProp.getReadMethod().getAnnotationsByType(Optional.class).length > 0;
}
private static Field getField(Class beanClass, String fieldName) {

View File

@ -8,6 +8,7 @@ public class ObjectsConfig {
@Optional
private String optionalValue;
private String mandatoryValue;
private String Default;
public String getMandatoryValue() {
return mandatoryValue;
@ -24,6 +25,15 @@ public class ObjectsConfig {
public void setOptionalValue(String optionalValue) {
this.optionalValue = optionalValue;
}
@Optional
public String getDefault() {
return Default;
}
public void setDefault(String Default) {
this.Default = Default;
}
}
private ValueObject valueObject;

View File

@ -211,6 +211,7 @@ class ConfigBeanFactoryTest extends TestUtils {
assertNotNull(beanConfig)
assertNotNull(beanConfig.getValueObject)
assertNull(beanConfig.getValueObject.getOptionalValue)
assertNull(beanConfig.getValueObject.getDefault)
assertEquals("notNull", beanConfig.getValueObject.getMandatoryValue)
}