for (final MethodMetadata method : memberDetails.getMethods()) {
if (!BeanInfoUtils.isAccessorMethod(method)) {
continue;
}
final FieldMetadata field = BeanInfoUtils
.getFieldForJavaBeanMethod(memberDetails, method);
if (field == null) {
continue;
}
final JavaSymbolName fieldName = field.getFieldName();
final String fieldResourceId = XmlUtils.convertId(resourceId + "."
+ fieldName.getSymbolName().toLowerCase());
if (typeLocationService.isInProject(method.getReturnType())
&& webMetadataService.isRooIdentifier(method
.getReturnType(), webMetadataService
.getMemberDetails(method.getReturnType()))) {
final JavaTypePersistenceMetadataDetails typePersistenceMetadataDetails = webMetadataService
.getJavaTypePersistenceMetadataDetails(method
.getReturnType(), webMetadataService
.getMemberDetails(method.getReturnType()),
jspMetadataId);
if (typePersistenceMetadataDetails != null) {
for (final FieldMetadata f : typePersistenceMetadataDetails
.getRooIdentifierFields()) {
final String sb = f.getFieldName()
.getReadableSymbolName();
properties.put(
XmlUtils.convertId(resourceId
+ "."
+ javaTypePersistenceMetadataDetails
.getIdentifierField()
.getFieldName().getSymbolName()
+ "."
+ f.getFieldName().getSymbolName()
.toLowerCase()),
StringUtils.isNotBlank(sb) ? sb : fieldName
.getSymbolName());
}
}
}
else if (!method.getMethodName().equals(
javaTypePersistenceMetadataDetails
.getIdentifierAccessorMethod().getMethodName())
|| javaTypePersistenceMetadataDetails
.getVersionAccessorMethod() != null
&& !method
.getMethodName()
.equals(javaTypePersistenceMetadataDetails
.getVersionAccessorMethod().getMethodName())) {
final String sb = fieldName.getReadableSymbolName();
properties.put(fieldResourceId, StringUtils.isNotBlank(sb) ? sb
: fieldName.getSymbolName());
}
// Checking if current field is embeddable
// If is embeddable, add properties for every embeddable class field
AnnotationMetadata embeddedAnnotation = field.getAnnotation(EMBEDDED_ANNOTATION);
if(embeddedAnnotation != null){
// Getting embeddable class
JavaType embeddableClass = field.getFieldType();
ClassOrInterfaceTypeDetails embeddableClassDetails = typeLocationService.getTypeDetails(embeddableClass);
if(embeddableClassDetails != null){
AnnotationMetadata embeddableAnnotation = embeddableClassDetails.getAnnotation(EMBEDDABLE_ANNOTATION);
if(embeddableAnnotation != null){
// Getting embeddable fields