public void scan()

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);
                }

            }

        }

    }