if (hasAccessMethods()) {
getDescriptor().setDefaultAccessMethods(getAccessMethods());
} else {
MetadataAnnotation virtualAccessMethods = getAnnotation(VirtualAccessMethods.class);
if (virtualAccessMethods != null){
getDescriptor().setDefaultAccessMethods(new AccessMethodsMetadata(virtualAccessMethods, this));
return;
}
// Go through the mapped superclasses.
for (MappedSuperclassAccessor mappedSuperclass : getMappedSuperclasses()) {
if (mappedSuperclass.hasAccessMethods()) {
getDescriptor().setDefaultAccessMethods(mappedSuperclass.getAccessMethods());
return;
}
virtualAccessMethods = mappedSuperclass.getAnnotation(VirtualAccessMethods.class);
if (virtualAccessMethods != null){
getDescriptor().setDefaultAccessMethods(new AccessMethodsMetadata(virtualAccessMethods, this));
return;
}
}
// Go through the inheritance parents.
if (getDescriptor().isInheritanceSubclass()) {
MetadataDescriptor parentDescriptor = getDescriptor().getInheritanceParentDescriptor();
while (parentDescriptor.isInheritanceSubclass()) {
if (parentDescriptor.getClassAccessor().hasAccessMethods()) {
getDescriptor().setDefaultAccessMethods(parentDescriptor.getClassAccessor().getAccessMethods());
return;
}
virtualAccessMethods = parentDescriptor.getClassAccessor().getAnnotation(VirtualAccessMethods.class);
if (virtualAccessMethods != null){
getDescriptor().setDefaultAccessMethods(new AccessMethodsMetadata(virtualAccessMethods, this));
return;
}
parentDescriptor = parentDescriptor.getInheritanceParentDescriptor();
}
}