@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return NO_IMPORTS;
}
//(1)
AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader
.loadMetadata(this.beanClassLoader);
//(2)
AutoConfigurationEntry autoConfigurationEntry = getAutoConfigurationEntry(autoConfigurationMetadata,
annotationMetadata);
return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
}
protected AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata,
AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return EMPTY_ENTRY;
}
//(3)
AnnotationAttributes attributes = getAttributes(annotationMetadata);
//(4)
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
//(5)
configurations = removeDuplicates(configurations);
//(6)
Set<String> exclusions = getExclusions(annotationMetadata, attributes);
//(7)
checkExcludedClasses(configurations, exclusions);
//(8)
configurations.removeAll(exclusions);
//(9)
configurations = filter(configurations, autoConfigurationMetadata);
//(10)
fireAutoConfigurationImportEvents(configurations, exclusions);
return new AutoConfigurationEntry(configurations, exclusions);
}