use of com.disney.groovity.doc.ClassDescriptor in project groovity by disney.
the class Groovity method makeClassDoc.
@SuppressWarnings({ "rawtypes", "unchecked" })
protected Map makeClassDoc(Class clazz) {
ClassDescriptor descriptor = new ClassDescriptor(clazz);
Map cmodel = new LinkedHashMap();
cmodel.put(NAME, clazz.getName());
if (descriptor.getSuperType() != null) {
cmodel.put(EXTENDS, TypeLabel.get(descriptor.getSuperType()));
}
if (descriptor.getInterfaces() != null && descriptor.getInterfaces().length > 0) {
List<String> interfaces = new ArrayList<>();
for (Type t : descriptor.getInterfaces()) {
interfaces.add(TypeLabel.get(t));
}
cmodel.put(IMPLEMENTS, interfaces);
}
List<TypedName> props = descriptor.getProperties();
if (props != null) {
List cfields = new ArrayList();
for (TypedName prop : props) {
if (!BINDING.equals(prop.name)) {
Map pmap = new LinkedHashMap();
pmap.put(NAME, prop.name);
pmap.put(TYPE, TypeLabel.get(prop.type));
cfields.add(pmap);
}
}
if (cfields.size() > 0) {
cmodel.put(PROPERTIES, cfields);
}
}
List<Method> mtds = descriptor.getMethods();
if (mtds != null) {
List mlist = new ArrayList();
for (Method desc : mtds) {
if (!internalMethodNames.contains(desc.getName()) && !desc.getName().contains("__")) {
Map mmap = new HashMap();
mmap.put(NAME, desc.getName());
mmap.put(MODIFIERS, Modifier.toString(desc.getModifiers()));
Function func = desc.getAnnotation(Function.class);
if (func != null) {
mmap.put(INFO, func.info());
}
Type[] pts = desc.getGenericParameterTypes();
Annotation[][] anns = desc.getParameterAnnotations();
if (pts != null && pts.length > 0) {
List parms = new ArrayList();
for (int i = 0; i < pts.length; i++) {
Map pm = new LinkedHashMap();
Annotation[] aa = anns[i];
String name = "arg" + (i + 1);
for (Annotation a : aa) {
if (a instanceof Arg) {
name = ((Arg) a).name();
pm.put(INFO, ((Arg) a).info());
break;
}
}
pm.put(NAME, name);
pm.put(TYPE, TypeLabel.get(pts[i]));
parms.add(pm);
}
mmap.put(PARAMETERS, parms);
}
Type returnType = desc.getGenericReturnType();
if (returnType != null) {
mmap.put(RETURNS, TypeLabel.get(returnType));
}
mlist.add(mmap);
}
}
cmodel.put(METHODS, mlist);
}
return cmodel;
}
Aggregations