Skip to content

Commit 50c8357

Browse files
committed
- adds serialization of information to console
1 parent 988da48 commit 50c8357

File tree

3 files changed

+79
-4
lines changed

3 files changed

+79
-4
lines changed

typesummary/app/src/main/java/typesummary/App.java

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,72 @@
77

88
import java.util.Set;
99
import 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;
1016
import java.util.List;
1117

1218
import com.google.common.reflect.ClassPath.ClassInfo;
1319
import com.google.common.reflect.ClassPath;
1420

1521
public 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+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package typesummary;
2+
3+
public class ConsoleLogWriter implements ILogWriter {
4+
public void write(final String content, final int indent) {
5+
String indentTxt = "";
6+
for(int i = 0; i <= indent; i++) {
7+
indentTxt += " ";
8+
}
9+
System.out.println(indentTxt + content);
10+
}
11+
12+
public void write(final String content) {
13+
write(content, 0);
14+
}
15+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package typesummary;
2+
3+
public interface ILogWriter {
4+
void write(final String content);
5+
void write(final String content, final int indent);
6+
}

0 commit comments

Comments
 (0)