diff --git a/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerProvider.java b/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerInjector.java similarity index 65% rename from dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerProvider.java rename to dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerInjector.java index a0d561fff70..d78169673e5 100644 --- a/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerProvider.java +++ b/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityGradleListenerInjector.java @@ -1,18 +1,16 @@ package datadog.trace.instrumentation.gradle; import org.gradle.initialization.ClassLoaderRegistry; -import org.gradle.internal.service.ServiceRegistration; +import org.gradle.internal.service.ServiceRegistry; +import org.gradle.internal.service.scopes.BuildScopeServices; -public class CiVisibilityGradleListenerProvider { - private final ClassLoaderRegistry classLoaderRegistry; +public class CiVisibilityGradleListenerInjector { - public CiVisibilityGradleListenerProvider(ClassLoaderRegistry classLoaderRegistry) { - this.classLoaderRegistry = classLoaderRegistry; - } - - public void configure(ServiceRegistration serviceRegistration) { - Class ciVisibilityGradleListener = loadCiVisibilityGradleListener(); - serviceRegistration.add(ciVisibilityGradleListener); + public static void inject(ServiceRegistry parentServices, BuildScopeServices buildScopeServices) { + ClassLoaderRegistry classLoaderRegistry = parentServices.get(ClassLoaderRegistry.class); + Class ciVisibilityGradleListener = loadCiVisibilityGradleListener(classLoaderRegistry); + buildScopeServices.register( + serviceRegistration -> serviceRegistration.add(ciVisibilityGradleListener)); } /** @@ -24,7 +22,7 @@ public void configure(ServiceRegistration serviceRegistration) { * org.gradle.api.tasks.testing.Test} task), which is a plugin. Therefore, we cannot reference its * {@code Class} instance directly, and instead have to load it explicitly. */ - private Class loadCiVisibilityGradleListener() { + private static Class loadCiVisibilityGradleListener(ClassLoaderRegistry classLoaderRegistry) { try { return classLoaderRegistry .getPluginsClassLoader() diff --git a/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/GradleBuildScopeServicesInstrumentation.java b/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/GradleBuildScopeServicesInstrumentation.java index 23b34d99cc0..1e4cbb9b1f7 100644 --- a/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/GradleBuildScopeServicesInstrumentation.java +++ b/dd-java-agent/instrumentation/gradle/src/main/groovy/datadog/trace/instrumentation/gradle/GradleBuildScopeServicesInstrumentation.java @@ -10,7 +10,6 @@ import java.util.Set; import net.bytebuddy.asm.Advice; import net.bytebuddy.matcher.ElementMatcher; -import org.gradle.initialization.ClassLoaderRegistry; import org.gradle.internal.service.ServiceRegistry; import org.gradle.internal.service.scopes.BuildScopeServices; @@ -36,7 +35,7 @@ public String instrumentedType() { @Override public String[] helperClassNames() { return new String[] { - packageName + ".CiVisibilityGradleListenerProvider", + packageName + ".CiVisibilityGradleListenerInjector", }; } @@ -55,9 +54,8 @@ public static class Construct { @Advice.OnMethodExit(suppress = Throwable.class) public static void afterConstructor( @Advice.This final BuildScopeServices buildScopeServices, - @Advice.Argument(0) final ServiceRegistry parent) { - ClassLoaderRegistry classLoaderRegistry = parent.get(ClassLoaderRegistry.class); - buildScopeServices.addProvider(new CiVisibilityGradleListenerProvider(classLoaderRegistry)); + @Advice.Argument(0) final ServiceRegistry parentServices) { + CiVisibilityGradleListenerInjector.inject(parentServices, buildScopeServices); } } }