Skip to content

Commit

Permalink
Fix Gradle v8.9 instrumentation (#7319)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikita-tkachenko-datadog committed Jul 12, 2024
1 parent 1538da0 commit f0eec59
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -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));
}

/**
Expand All @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -36,7 +35,7 @@ public String instrumentedType() {
@Override
public String[] helperClassNames() {
return new String[] {
packageName + ".CiVisibilityGradleListenerProvider",
packageName + ".CiVisibilityGradleListenerInjector",
};
}

Expand All @@ -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);
}
}
}

0 comments on commit f0eec59

Please sign in to comment.