InventoryIndexManagerImpl.java 文件源码

java
阅读 31 收藏 0 点赞 0 评论 0

项目:zstack 作者:
private void populateInventoryIndexer() throws URISyntaxException, ClassNotFoundException, NoSuchMethodException {
    ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(true);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Inventory.class));
    scanner.addExcludeFilter(new AnnotationTypeFilter(Controller.class));
    for (String pkg : getBasePkgNames()) {
        for (BeanDefinition bd : scanner.findCandidateComponents(pkg)) {
            Class<?> inventoryClass = Class.forName(bd.getBeanClassName());
            Inventory invat = inventoryClass.getAnnotation(Inventory.class);
            if (!triggerVOs.contains(invat.mappingVOClass())) {
                String err = String.format("Inventory[%s]'s mapping VO class[%s] is not annotated by @TriggerIndex", inventoryClass.getName(), invat
                        .mappingVOClass().getName());
                throw new IllegalArgumentException(err);
            }

            String mappingClassSimpleName = invat.mappingVOClass().getSimpleName();
            IndexerInfo info = voClassToIndexerMapping.get(mappingClassSimpleName);
            if (info == null) {
                String invName = inventoryClass.getSimpleName();
                info = new IndexerInfo();
                info.url = String.format("%s/%s/%s", elasticSearchBaseUrl, invName.toLowerCase(), invName);
                info.inventoryClass = inventoryClass;
                info.inventoryName = invName;
                info.mappingVOClass = invat.mappingVOClass();
                info.valueOfMethod = getValueOfMethodOfInventoryClass(inventoryClass);
                info.entityIdField = getEntityIdFieldFromClass(info.mappingVOClass);
                info.entityIdField.setAccessible(true);
                voClassToIndexerMapping.put(mappingClassSimpleName, info);
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号