public void start()

in core/src/main/java/com/alibaba/smart/framework/engine/configuration/impl/DefaultXmlParserFacade.java [43:102]


    public void start() {
        this.bindings = processEngineConfiguration.getAnnotationScanner().getScanResult().get(
            ExtensionConstant.ELEMENT_PARSER).getBindingMap();
        Set<Entry<Class, Object>> entries = bindings.entrySet();
        for (Entry<Class, Object> entry : entries) {
            try {
                Class aClass = entry.getKey();
                Object newInstance = aClass.newInstance();
                boolean isSmartEngineCustomElement = newInstance instanceof CustomExtensionElement;

                Field field ;
                QName qName = null;


                if(!isSmartEngineCustomElement){

                    field = aClass.getField("qtype");
                    qName = (QName) field.get(newInstance);
                    bindingsWithQName.put(qName, entry.getValue());
                }else {

                    field = aClass.getField("xmlLocalPart");
                    String localPart=  (String)field.get(newInstance);

                    Map<String, Object> magicExtension = processEngineConfiguration.getMagicExtension();

                    if(MapUtil.isNotEmpty(magicExtension)){
                        Map<String,String> fallBackMap = (Map<String,String> )magicExtension.get("fallBack");

                        if(MapUtil.isNotEmpty(fallBackMap)){

                            List<QName> qNames= new ArrayList<QName>();

                            for (Entry<String, String> entryX : fallBackMap.entrySet()) {
                                QName qnamex = new QName(entryX.getKey(),localPart,entryX.getValue());
                                qNames.add(qnamex);
                            }

                            for(QName item : qNames) {
                                // single already registered, skip
                                if(item.equals(qName)) {
                                    continue;
                                }
                                bindingsWithQName.put(item, entry.getValue());
                            }

                        }



                    }

                }

            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

    }