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()));
}
}
}
FastjsonHttpMessageConverter.java 文件源码
java
阅读 32
收藏 0
点赞 0
评论 0
项目:java-platform
作者:
评论列表
文章目录