Skip to content

Commit 24e2e3b

Browse files
committed
[#8890] Implemented findClass in Java9ClassLoader
Removed manually registering providers which occurs duplication
1 parent 32c0b6d commit 24e2e3b

File tree

3 files changed

+18
-48
lines changed

3 files changed

+18
-48
lines changed

bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/classloader/Java9ClassLoader.java

+12
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,18 @@ protected URL findResource(String moduleName, String name) throws IOException {
5555
return null;
5656
}
5757

58+
@Override
59+
protected Class<?> findClass(String moduleName, String name) {
60+
if (getName().equals(moduleName)) {
61+
try {
62+
return this.findClass(name);
63+
} catch (ClassNotFoundException e) {
64+
return null;
65+
}
66+
}
67+
return null;
68+
}
69+
5870
@Override
5971
public InputStream getResourceAsStream(String name) {
6072
return super.getResourceAsStream(name);

bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleSupport.java

+5-35
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@
1818

1919

2020
import com.navercorp.pinpoint.bootstrap.module.JavaModule;
21-
import com.navercorp.pinpoint.bootstrap.module.Providers;
2221
import com.navercorp.pinpoint.common.util.JvmUtils;
2322
import com.navercorp.pinpoint.common.util.JvmVersion;
2423

2524
import java.lang.instrument.Instrumentation;
2625
import java.net.URL;
27-
import java.util.ArrayList;
28-
import java.util.List;
2926
import java.util.Objects;
3027

3128
/**
@@ -40,15 +37,14 @@ public class ModuleSupport {
4037

4138
private final JavaModule javaBaseModule;
4239
private final JavaModule bootstrapModule;
43-
private final List<String> allowedProviders;
4440

45-
ModuleSupport(Instrumentation instrumentation, List<String> allowedProviders) {
41+
ModuleSupport(Instrumentation instrumentation) {
4642
this.instrumentation = Objects.requireNonNull(instrumentation, "instrumentation");
47-
this.allowedProviders = Objects.requireNonNull(allowedProviders, "allowedProviders");
4843
this.javaBaseModule = wrapJavaModule(Object.class);
4944
this.bootstrapModule = wrapJavaModule(this.getClass());
5045
}
5146

47+
@SuppressWarnings("unused") // Used implicitly
5248
public void setup() {
5349
// pinpoint module name : unnamed
5450
JavaModule bootstrapModule = getBootstrapModule();
@@ -65,8 +61,8 @@ public void setup() {
6561

6662
}
6763

64+
@SuppressWarnings("unused") // Used implicitly
6865
public void defineAgentModule(ClassLoader classLoader, URL[] jarFileList) {
69-
7066
final JavaModule agentModule = newAgentModule(classLoader, jarFileList);
7167

7268
prepareAgentModule(classLoader, agentModule);
@@ -92,7 +88,7 @@ private void addPermissionToValueAnnotation(JavaModule agentModule) {
9288

9389
private JavaModule newAgentModule(ClassLoader classLoader, URL[] jarFileList) {
9490
ModuleBuilder moduleBuilder = new ModuleBuilder();
95-
final Module agentModule = moduleBuilder.defineModule("pinpoint.agent", classLoader, jarFileList);
91+
final Module agentModule = moduleBuilder.defineModule(classLoader.getName(), classLoader, jarFileList);
9692
return wrapJavaModule(agentModule);
9793
}
9894

@@ -229,32 +225,6 @@ private void prepareAgentModule(final ClassLoader classLoader, JavaModule agentM
229225
final String watchEventServiceName = "org.apache.logging.log4j.core.util.WatchEventService";
230226
Class<?> watchEventServiceClazz = forName(watchEventServiceName, classLoader);
231227
agentModule.addUses(watchEventServiceClazz);
232-
233-
List<Providers> providersList = agentModule.getProviders();
234-
for (Providers providers : providersList) {
235-
final String service = providers.getService();
236-
if (isAllowedProvider(service)) {
237-
logger.info("load provider:" + providers);
238-
Class<?> serviceClass = forName(providers.getService(), classLoader);
239-
List<Class<?>> providerClassList = loadProviderClassList(providers.getProviders(), classLoader);
240-
agentModule.addProvides(serviceClass, providerClassList);
241-
} else {
242-
logger.info("discard provider:" + providers);
243-
}
244-
}
245-
}
246-
247-
public boolean isAllowedProvider(String serviceName) {
248-
return allowedProviders.contains(serviceName);
249-
}
250-
251-
private List<Class<?>> loadProviderClassList(List<String> classNameList, ClassLoader classLoader) {
252-
List<Class<?>> providerClassList = new ArrayList<>();
253-
for (String providerClassName : classNameList) {
254-
Class<?> providerClass = forName(providerClassName, classLoader);
255-
providerClassList.add(providerClass);
256-
}
257-
return providerClassList;
258228
}
259229

260230
private Class<?> forName(String className, ClassLoader classLoader) {
@@ -281,7 +251,7 @@ private JavaModule loadModule(String moduleName) {
281251
// throw new ModuleException(moduleName + " not found");
282252
}
283253

284-
private JavaModule wrapJavaModule(Class clazz) {
254+
private JavaModule wrapJavaModule(Class<?> clazz) {
285255
return new Java9Module(instrumentation, clazz.getModule());
286256
}
287257

bootstraps/bootstrap-java9/src/main/java/com/navercorp/pinpoint/bootstrap/java9/module/ModuleSupportFactory.java

+1-13
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
package com.navercorp.pinpoint.bootstrap.java9.module;
1818

1919
import java.lang.instrument.Instrumentation;
20-
import java.util.Arrays;
21-
import java.util.List;
2220

2321
/**
2422
* @author Woonduk Kang(emeroad)
@@ -28,16 +26,6 @@ public ModuleSupportFactory() {
2826
}
2927

3028
public ModuleSupport newModuleSupport(Instrumentation instrumentation) {
31-
// Dynamic changes are required?
32-
// move to pinpoint.config?
33-
List<String> allowedProviders = Arrays.asList(
34-
"io.grpc.NameResolverProvider",
35-
"com.navercorp.pinpoint.agent.plugin.proxy.common.ProxyRequestMetadataProvider",
36-
"com.navercorp.pinpoint.profiler.context.recorder.proxy.ProxyRequestParserProvider",
37-
"io.grpc.ManagedChannelProvider",
38-
"io.grpc.LoadBalancerProvider"
39-
);
40-
41-
return new ModuleSupport(instrumentation, allowedProviders);
29+
return new ModuleSupport(instrumentation);
4230
}
4331
}

0 commit comments

Comments
 (0)