Search in sources :

Example 1 with TypedName

use of com.disney.groovity.doc.ClassDescriptor.TypedName 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;
}
Also used : ClassDescriptor(com.disney.groovity.doc.ClassDescriptor) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) TypedName(com.disney.groovity.doc.ClassDescriptor.TypedName) Method(java.lang.reflect.Method) Annotation(java.lang.annotation.Annotation) LinkedHashMap(java.util.LinkedHashMap) Function(com.disney.groovity.doc.Function) Type(java.lang.reflect.Type) ParameterizedType(java.lang.reflect.ParameterizedType) Arg(com.disney.groovity.doc.Arg) List(java.util.List) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap)

Aggregations

Arg (com.disney.groovity.doc.Arg)1 ClassDescriptor (com.disney.groovity.doc.ClassDescriptor)1 TypedName (com.disney.groovity.doc.ClassDescriptor.TypedName)1 Function (com.disney.groovity.doc.Function)1 Annotation (java.lang.annotation.Annotation)1 Method (java.lang.reflect.Method)1 ParameterizedType (java.lang.reflect.ParameterizedType)1 Type (java.lang.reflect.Type)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Map (java.util.Map)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)1