private Map<String, TypeIdentifier> analyzeClass(final String type, final Class<?> clazz) {
if (clazz == null || isJDKType(type))
return Collections.emptyMap();
final XmlAccessType value = getXmlAccessType(clazz);
// TODO analyze & test annotation inheritance
ignoredFieldNames.clear();
final List<Field> relevantFields = Stream.of(clazz.getDeclaredFields()).filter(f -> isRelevant(f, value)).collect(Collectors.toList());
final List<Method> relevantGetters = Stream.of(clazz.getDeclaredMethods()).filter(m -> isRelevant(m, value)).collect(Collectors.toList());
final Map<String, TypeIdentifier> properties = new HashMap<>();
final Stream<Class<?>> allSuperTypes = Stream.concat(Stream.of(clazz.getInterfaces()), Stream.of(clazz.getSuperclass()));
allSuperTypes.filter(Objects::nonNull).map(Type::getDescriptor).map(t -> analyzeClass(t, loadClassFromType(t))).forEach(properties::putAll);
Stream.concat(relevantFields.stream().map(f -> mapField(f, type)), relevantGetters.stream().map(g -> mapGetter(g, type)))
.filter(Objects::nonNull).forEach(p -> {
properties.put(p.getLeft(), TypeIdentifier.ofType(p.getRight()));
analyze(p.getRight());
});
return properties;
}
JavaTypeAnalyzer.java 文件源码
java
阅读 32
收藏 0
点赞 0
评论 0
项目:jaxrs-analyzer
作者:
评论列表
文章目录