77
88import java .util .Set ;
99import java .util .stream .Collectors ;
10+ import java .lang .reflect .Field ;
11+ import java .lang .reflect .Method ;
12+ import java .lang .reflect .Parameter ;
13+ import java .util .ArrayList ;
14+ import java .util .Arrays ;
15+ import java .util .Comparator ;
1016import java .util .List ;
1117
1218import com .google .common .reflect .ClassPath .ClassInfo ;
1319import com .google .common .reflect .ClassPath ;
1420
1521public class App {
1622 public static void main (String [] args ) throws Exception {
17- Set <ClassInfo > classInfos = ClassPath .from (User .class .getClassLoader ()).getTopLevelClassesRecursive ("com.microsoft.graph" );
18- List <String > classNames = classInfos .stream ().map (classInfo -> classInfo .getName ()).distinct ().collect (Collectors .toList ());
23+ final String [] mNames = { //those are default java language methods that every object will have
24+ "equals" ,
25+ "getClass" ,
26+ "hashCode" ,
27+ "notify" ,
28+ "notifyAll" ,
29+ "toString" ,
30+ "wait"
31+ };
32+ methodsNameToSkip = Arrays .asList (mNames );
33+ final ILogWriter writer = new ConsoleLogWriter ();
34+
35+
36+ final Set <ClassInfo > classInfos = ClassPath .from (User .class .getClassLoader ()).getTopLevelClassesRecursive ("com.microsoft.graph" );
37+ final List <String > classNames = classInfos .stream ()
38+ .map (classInfo -> classInfo .getName ())
39+ .distinct ()
40+ .collect (Collectors .toList ());
41+ classNames .sort (Comparator .naturalOrder ());
1942 for (String c : classNames ) {
2043 Class <?> clazz = Class .forName (c );
21- System .out .println (clazz .getName ());
44+ String classHeadLine = "class " + clazz .getName ();
45+ Class <?> superClass = clazz .getSuperclass ();
46+ if (superClass != null && superClass != Object .class ) {
47+ classHeadLine += " : " + superClass .getName ();
48+ }
49+ writer .write (classHeadLine );
50+ serializeFields (clazz , writer );
51+ serializeMethods (clazz , writer );
52+ }
53+ }
54+ private static void serializeFields (final Class <?> clazz , final ILogWriter writer ) {
55+ final Field [] fields = clazz .getFields ();
56+ Arrays .sort (fields , (o1 , o2 ) -> o1 .getName ().compareTo (o2 .getName ()));
57+ for (Field field : fields ) {
58+ writer .write ("property " + field .getName () + " : " + field .getType ().getName (), 2 );
59+ }
60+ }
61+ private static List <String > methodsNameToSkip ;
62+ private static void serializeMethods (final Class <?> clazz , final ILogWriter writer ) {
63+ final Method [] methods = clazz .getMethods ();
64+ Arrays .sort (methods , (o1 , o2 ) -> o1 .getName ().compareTo (o2 .getName ()));
65+ for (Method method : methods ) {
66+ if (!methodsNameToSkip .contains (method .getName ())) {
67+ writer .write ("method " + method .getName (), 2 );
68+ writer .write ("return type " +method .getReturnType ().getName (), 4 );
69+ serializeParameters (method , writer );
70+ }
71+ }
72+ }
73+ private static void serializeParameters (final Method method , final ILogWriter writer ) {
74+ for (Parameter parameter : method .getParameters ()) {
75+ writer .write ("param " + parameter .getName () + " : " + parameter .getType ().getName (), 4 );
2276 }
2377 }
24- }
78+ }
0 commit comments