in core/src/main/java/com/alibaba/smart/framework/engine/extension/scanner/SimpleAnnotationScanner.java [145:192]
public void scan(
ProcessEngineConfiguration processEngineConfiguration, Class<? extends Annotation> targetAnnotationType) {
Set<Class<?>> classSet;
try {
classSet = scan(this.packageNameList);
} catch (IOException e) {
throw new EngineException(e.getMessage(), e);
}
for (Class<?> currentClazz : classSet) {
boolean present = currentClazz.isAnnotationPresent(targetAnnotationType);
if (present) {
ExtensionBinding currentBindingAnnotation = (ExtensionBinding)currentClazz.getAnnotation(targetAnnotationType);
String group = currentBindingAnnotation.group();
ExtensionBindingResult extensionBindingResult = scanResult.get(group);
if (null == extensionBindingResult) {
extensionBindingResult = new ExtensionBindingResult();
Map<Class, Object> bindingMap = new HashMap<Class, Object>();
extensionBindingResult.setBindingMap(bindingMap);
scanResult.put(group, extensionBindingResult);
}
Map<Class, Object> bindingMap = extensionBindingResult.getBindingMap();
Class bindKeyClass = currentBindingAnnotation.bindKey();
Object objectInBindingMap = bindingMap.get(bindKeyClass);
if (objectInBindingMap == null) {
put(processEngineConfiguration, currentClazz, bindingMap, bindKeyClass);
} else {
handleDuplicatedKey( processEngineConfiguration,bindingMap, currentBindingAnnotation, currentClazz,objectInBindingMap,targetAnnotationType);
}
}
}
}