in winegrower-extension/winegrower-agent/src/main/java/org/apache/winegrower/extension/agent/WinegrowerAgent.java [48:95]
public static void agentmain(final String agentArgs, final Instrumentation instrumentation) {
if (Boolean.getBoolean("winegrower.agent.started")) {
return;
}
if (DEBUG) {
print("agentargs: " + agentArgs);
}
ofNullable(extractConfig(agentArgs, "libs="))
.ifPresent(value -> toLibStream(value)
.forEach(lib -> {
try {
instrumentation.appendToSystemClassLoaderSearch(new JarFile(lib));
} catch (final IOException e) {
throw new IllegalArgumentException(e);
}
}));
final Collection<URL> isolatedLibs = ofNullable(extractConfig(agentArgs, "isolatedlibs="))
.map(value -> toLibStream(value)
.map(lib -> {
try {
return lib.toURI().toURL();
} catch (final IOException e) {
throw new IllegalArgumentException(e);
}
}).collect(toList()))
.orElseGet(Collections::emptyList);
final URLClassLoader loader = new WinegrowerAgentClassLoader(
isolatedLibs,
toValues(extractConfig(agentArgs, "ignoredParentClasses=")).collect(toList()),
toValues(extractConfig(agentArgs, "ignoredParentResources=")).collect(toList()));
final Thread thread = Thread.currentThread();
final ClassLoader contextualLoader = thread.getContextClassLoader();
thread.setContextClassLoader(loader);
try {
doStart(agentArgs, instrumentation);
} catch (final Throwable e) {
final Integer exitStatus = Integer.getInteger("winegrower.agent.exitStatusOnError", -1);
if (exitStatus > 0) {
System.exit(exitStatus);
}
throw new IllegalStateException(e);
} finally {
thread.setContextClassLoader(contextualLoader);
}
}