FastjsonHttpMessageConverter.java 文件源码

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

项目:java-platform 作者:
private void pathVisit(final Map<Class<?>, PropertyPreFilter> propertyFilters, final Set<String> paths,
        Class<?> beanClass) {
    if (paths == null || beanClass == null) {
        return;
    }

    Set<String> revisePaths = new HashSet<>();
    Map<String, Set<String>> references = new HashMap<>();
    for (String path : paths) {
        if (StringUtils.contains(path, ".")) {
            String referenceProperty = StringUtils.substringBefore(path, ".");
            revisePaths.add(referenceProperty);

            Set<String> referencePaths = references.get(referenceProperty);
            if (referencePaths == null) {
                referencePaths = new HashSet<>();
                references.put(referenceProperty, referencePaths);
            }
            referencePaths.add(StringUtils.substringAfter(path, "."));
        } else {
            revisePaths.add(path);
        }
    }

    if (revisePaths.size() > 0) {
        PropertyPreFilter preFilter = propertyFilters.get(beanClass);
        if (preFilter != null) {
            if (preFilter instanceof IncludesPropertyPreFilter) {
                ((IncludesPropertyPreFilter) preFilter).getIncludes().addAll(revisePaths);
            }
        } else {
            propertyFilters.put(beanClass, new IncludesPropertyPreFilter(beanClass, revisePaths));
        }

    }

    if (references.size() > 0) {
        for (Entry<String, Set<String>> reference : references.entrySet()) {
            pathVisit(propertyFilters, reference.getValue(),
                    PropertyUtil.getPropertyType(beanClass, reference.getKey()));
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号