@ -175,8 +175,9 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
ExecutableElement getter = entry . getValue ( ) ;
ExecutableElement getter = entry . getValue ( ) ;
ExecutableElement setter = members . getPublicSetters ( ) . get ( name ) ;
ExecutableElement setter = members . getPublicSetters ( ) . get ( name ) ;
VariableElement field = members . getFields ( ) . get ( name ) ;
VariableElement field = members . getFields ( ) . get ( name ) ;
boolean isNested = getAnnotation ( field ,
Element returnType = this . processingEnv . getTypeUtils ( ) . asElement (
nestedConfigurationPropertyAnnotation ( ) ) ! = null ;
getter . getReturnType ( ) ) ;
boolean isNested = isNested ( returnType , field , element ) ;
boolean isCollection = this . typeUtils . isCollectionOrMap ( getter
boolean isCollection = this . typeUtils . isCollectionOrMap ( getter
. getReturnType ( ) ) ;
. getReturnType ( ) ) ;
if ( ! isNested & & ( setter ! = null | | isCollection ) ) {
if ( ! isNested & & ( setter ! = null | | isCollection ) ) {
@ -203,22 +204,25 @@ public class ConfigurationMetadataAnnotationProcessor extends AbstractProcessor
getter . getReturnType ( ) ) ;
getter . getReturnType ( ) ) ;
AnnotationMirror annotation = getAnnotation ( getter ,
AnnotationMirror annotation = getAnnotation ( getter ,
configurationPropertiesAnnotation ( ) ) ;
configurationPropertiesAnnotation ( ) ) ;
boolean isNested = getAnnotation ( field ,
boolean isNested = isNested ( returnType , field , element ) ;
nestedConfigurationPropertyAnnotation ( ) ) ! = null ;
if ( returnType ! = null & & returnType instanceof TypeElement
if ( returnType ! = null & & returnType instanceof TypeElement
& & annotation = = null ) {
& & annotation = = null & & isNested ) {
TypeElement returns = ( TypeElement ) returnType ;
String nestedPrefix = ConfigurationMetadata . nestedPrefix ( prefix , name ) ;
if ( ( this . typeUtils . isEnclosedIn ( returnType , element ) & & returnType
. getKind ( ) ! = ElementKind . ENUM ) | | isNested ) {
String nestedPrefix = ConfigurationMetadata
. nestedPrefix ( prefix , name ) ;
this . metadata . add ( ItemMetadata . newGroup ( nestedPrefix ,
this . metadata . add ( ItemMetadata . newGroup ( nestedPrefix ,
this . typeUtils . getType ( returns ) ,
this . typeUtils . getType ( returnType ) ,
this . typeUtils . getType ( element ) , getter . toString ( ) ) ) ;
this . typeUtils . getType ( element ) , getter . toString ( ) ) ) ;
processTypeElement ( nestedPrefix , returns ) ;
processTypeElement ( nestedPrefix , ( TypeElement ) returnType ) ;
}
}
}
}
}
}
private boolean isNested ( Element returnType , VariableElement field ,
TypeElement element ) {
if ( getAnnotation ( field , nestedConfigurationPropertyAnnotation ( ) ) ! = null ) {
return true ;
}
return this . typeUtils . isEnclosedIn ( returnType , element )
& & returnType . getKind ( ) ! = ElementKind . ENUM ;
}
}
private boolean hasDeprecateAnnotation ( Element element ) {
private boolean hasDeprecateAnnotation ( Element element ) {