in tools/erlanalysis/src/main/java/org/apache/dubbo/erlang/analysis/parse/CommonTypeInfo.java [74:105]
private void parseTypeDetailInfo(Type type) {
CommonTypeItem typeItem = new CommonTypeItem();
typeItem.setClassName(type.getClassName());
Class classObj = null;
try {
classObj = Class.forName(type.getClassName(), false, Thread.currentThread().getContextClassLoader());
Field[] fields = classObj.getDeclaredFields();
for (Field field : fields) {
try {
PropertyDescriptor propertyDesc = new PropertyDescriptor(field.getName(), classObj);
if (propertyDesc.getReadMethod() == null && propertyDesc.getWriteMethod() == null) {
continue;
}
} catch (IntrospectionException e) {
logger.warn("get field property error", e);
continue;
}
CommonTypeFieldInfo fieldInfo = new CommonTypeFieldInfo();
fieldInfo.setFieldName(field.getName());
fieldInfo.setFieldType(field.getType());
typeItem.addField(fieldInfo);
//判断该类型是否需要继续解析
parseTypeinfo(field.getType().getName());
}
commonTypeList.put(type.getClassName(), typeItem);
logger.debug("parse type detail success {}", type.getClassName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}