Skip to content

Commit 40f6fef

Browse files
committed
Review - II Kevin Gilmore Changes
1 parent f1f55d4 commit 40f6fef

2 files changed

Lines changed: 12 additions & 51 deletions

File tree

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,19 @@
11
package com.baeldung.loadedclasslisting;
22

3-
import java.lang.reflect.Method;
43
import java.util.Arrays;
54

6-
import com.baeldung.loadedclasslisting.ListLoadedClassesAgent.ClassLoaderType;
7-
import com.baeldung.loadedclasslisting.customLoader.ClassLoaderInfo;
8-
import com.baeldung.loadedclasslisting.customLoader.CustomClassLoader;
9-
105
public class Launcher {
116

12-
private static ClassLoader customClassLoader;
13-
147
public static void main(String[] args) {
15-
printClassesLoadedBy(ClassLoaderType.BOOTSTRAP);
16-
printClassesLoadedBy(ClassLoaderType.SYSTEM);
17-
printClassesLoadedBy(ClassLoaderType.EXTENSION);
18-
printClassesLoadedBy(ClassLoaderType.CUSTOM);
8+
printClassesLoadedBy("BOOTSTRAP");
9+
printClassesLoadedBy("SYSTEM");
10+
printClassesLoadedBy("EXTENSION");
1911
}
2012

21-
private static void printClassesLoadedBy(ClassLoaderType classLoaderType) {
22-
Class<?>[] classes;
23-
if (classLoaderType.equals(ClassLoaderType.CUSTOM)) {
24-
customClassLoader = customClassLoading();
25-
classes = ListLoadedClassesAgent.listLoadedClasses(customClassLoader);
26-
} else {
27-
classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
28-
}
13+
private static void printClassesLoadedBy(String classLoaderType) {
14+
Class<?>[] classes = ListLoadedClassesAgent.listLoadedClasses(classLoaderType);
2915
Arrays.asList(classes)
3016
.forEach(clazz -> System.out.println(
3117
classLoaderType + " ClassLoader : " + clazz.getCanonicalName()));
3218
}
33-
34-
private static CustomClassLoader customClassLoading() {
35-
CustomClassLoader customClassLoader = new CustomClassLoader();
36-
Class<?> c;
37-
try {
38-
c = customClassLoader.findClass(ClassLoaderInfo.class.getName());
39-
Object ob = c.getDeclaredConstructor()
40-
.newInstance();
41-
Method md = c.getMethod("printClassLoaders");
42-
md.invoke(ob);
43-
} catch (Exception e) {
44-
e.printStackTrace();
45-
}
46-
return customClassLoader;
47-
}
4819
}

core-java-modules/core-java-jvm-2/src/main/java/com/baeldung/loadedclasslisting/ListLoadedClassesAgent.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@
44

55
public class ListLoadedClassesAgent {
66

7-
public enum ClassLoaderType {
8-
SYSTEM, EXTENSION, BOOTSTRAP, CUSTOM , PLATFORM
9-
}
10-
117
private static Instrumentation instrumentation;
128

139
public static void premain(String agentArgs, Instrumentation instrumentation) {
1410
ListLoadedClassesAgent.instrumentation = instrumentation;
1511
}
1612

17-
public static Class<?>[] listLoadedClasses(ClassLoaderType classLoaderType) {
13+
public static Class<?>[] listLoadedClasses(String classLoaderType) {
1814
if (instrumentation == null) {
1915
throw new IllegalStateException(
2016
"ListLoadedClassesAgent is not initialized.");
@@ -23,24 +19,18 @@ public static Class<?>[] listLoadedClasses(ClassLoaderType classLoaderType) {
2319
getClassLoader(classLoaderType));
2420
}
2521

26-
public static Class<?>[] listLoadedClasses(ClassLoader classLoader) {
27-
if (instrumentation == null) {
28-
throw new IllegalStateException(
29-
"ListLoadedClassesAgent is not initialized.");
30-
}
31-
return instrumentation.getInitiatedClasses(classLoader);
32-
}
33-
34-
private static ClassLoader getClassLoader(ClassLoaderType classLoaderType) {
22+
private static ClassLoader getClassLoader(String classLoaderType) {
3523
ClassLoader classLoader = null;
3624
switch (classLoaderType) {
37-
case SYSTEM:
25+
case "SYSTEM":
3826
classLoader = ClassLoader.getSystemClassLoader();
3927
break;
40-
case EXTENSION:
28+
case "EXTENSION":
4129
classLoader = ClassLoader.getSystemClassLoader().getParent();
4230
break;
43-
case BOOTSTRAP:
31+
// passing a null value to the Instrumentation : getInitiatedClasses method
32+
// defaults to the bootstrap class loader
33+
case "BOOTSTRAP":
4434
break;
4535
default:
4636
break;

0 commit comments

Comments
 (0)