Skip to content

Instantly share code, notes, and snippets.

@lptr
Created November 14, 2022 13:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lptr/e20b646202cd2e2f5807a720e2445b12 to your computer and use it in GitHub Desktop.
Save lptr/e20b646202cd2e2f5807a720e2445b12 to your computer and use it in GitHub Desktop.
diff --git a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequest.java b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequest.java
index 218423f5a23..e4c431e30db 100644
--- a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequest.java
+++ b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/DefaultPluginRequest.java
@@ -26,8 +26,6 @@
public class DefaultPluginRequest implements PluginRequestInternal {
- private static final Runnable NOOP_ACCEPTANCE_HANDLER = () -> {};
-
private final PluginId id;
private final String version;
private final boolean apply;
@@ -35,7 +33,6 @@ public class DefaultPluginRequest implements PluginRequestInternal {
private final String scriptDisplayName;
private final ModuleVersionSelector artifact;
private final PluginRequest originalRequest;
- private final Runnable acceptanceHandler;
public DefaultPluginRequest(PluginId id, String version, boolean apply, Integer lineNumber, ScriptSource scriptSource) {
this(id, version, apply, lineNumber, scriptSource.getDisplayName(), null);
@@ -46,7 +43,7 @@ public DefaultPluginRequest(String id, String version, boolean apply, Integer li
}
public DefaultPluginRequest(PluginId id, String version, boolean apply, Integer lineNumber, String scriptDisplayName, ModuleVersionSelector artifact) {
- this(id, version, apply, lineNumber, scriptDisplayName, artifact, null, NOOP_ACCEPTANCE_HANDLER);
+ this(id, version, apply, lineNumber, scriptDisplayName, artifact, null);
}
public DefaultPluginRequest(
@@ -56,8 +53,7 @@ public DefaultPluginRequest(
Integer lineNumber,
String scriptDisplayName,
ModuleVersionSelector artifact,
- PluginRequest originalRequest,
- Runnable acceptanceHandler
+ PluginRequest originalRequest
) {
this.id = id;
this.version = version;
@@ -66,7 +62,6 @@ public DefaultPluginRequest(
this.scriptDisplayName = scriptDisplayName;
this.artifact = artifact;
this.originalRequest = originalRequest != null ? originalRequest : this;
- this.acceptanceHandler = acceptanceHandler;
}
@Override
@@ -127,9 +122,4 @@ public String getDisplayName() {
public PluginRequest getOriginalRequest() {
return originalRequest;
}
-
- @Override
- public Runnable getAcceptanceHandler() {
- return acceptanceHandler;
- }
}
diff --git a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/PluginRequestInternal.java b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/PluginRequestInternal.java
index 2ad964b500d..8579e6cd253 100644
--- a/subprojects/core/src/main/java/org/gradle/plugin/management/internal/PluginRequestInternal.java
+++ b/subprojects/core/src/main/java/org/gradle/plugin/management/internal/PluginRequestInternal.java
@@ -29,6 +29,4 @@ public interface PluginRequestInternal extends PluginRequest {
String getDisplayName();
PluginRequest getOriginalRequest();
-
- Runnable getAcceptanceHandler();
}
diff --git a/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java b/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
index ecb1660bb12..440abb63714 100644
--- a/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
+++ b/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
@@ -22,6 +22,7 @@
import org.gradle.internal.service.scopes.Scopes;
import org.gradle.internal.service.scopes.ServiceScope;
import org.gradle.plugin.management.internal.PluginRequests;
+import org.gradle.plugin.use.PluginId;
import javax.annotation.Nullable;
@@ -37,4 +38,8 @@ public interface PluginRequestApplicator {
* {@link ClassLoaderScope}.
*/
void applyPlugins(PluginRequests requests, ScriptHandlerInternal scriptHandler, @Nullable PluginManagerInternal target, ClassLoaderScope classLoaderScope);
+
+ interface Listener {
+ void pluginApplied(PluginId id);
+ }
}
diff --git a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
index 854109d10f7..bb2d4fd9ce7 100644
--- a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
+++ b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
@@ -35,12 +35,6 @@
public class GradleEnterpriseAutoAppliedPluginRegistry implements AutoAppliedPluginRegistry {
- private final GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus;
-
- public GradleEnterpriseAutoAppliedPluginRegistry(GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus) {
- this.autoAppliedStatus = autoAppliedStatus;
- }
-
@Override
public PluginRequests getAutoAppliedPlugins(Project target) {
return PluginRequests.EMPTY;
@@ -71,8 +65,7 @@ private PluginRequestInternal createGradleEnterprisePluginRequest() {
null,
getScriptDisplayName(),
artifact,
- null,
- autoAppliedStatus::markAsAutoApplied
+ null
);
}
diff --git a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoApplicationListener.java b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoApplicationListener.java
new file mode 100644
index 00000000000..84b7574c9e7
--- /dev/null
+++ b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoApplicationListener.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2022 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.gradle.internal.enterprise.impl;
+
+import org.gradle.internal.concurrent.Stoppable;
+import org.gradle.internal.event.ListenerManager;
+import org.gradle.plugin.use.PluginId;
+import org.gradle.plugin.use.internal.PluginRequestApplicator;
+
+public class GradleEnterprisePluginAutoApplicationListener implements PluginRequestApplicator.Listener, Stoppable {
+ private final GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus;
+ private final ListenerManager listenerManager;
+
+ public GradleEnterprisePluginAutoApplicationListener(
+ GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus,
+ ListenerManager listenerManager
+ ) {
+ this.autoAppliedStatus = autoAppliedStatus;
+ this.listenerManager = listenerManager;
+ listenerManager.addListener(this);
+ }
+
+ @Override
+ public void pluginApplied(PluginId id) {
+ autoAppliedStatus.markAsAutoApplied();
+ }
+
+ @Override
+ public void stop() {
+ listenerManager.removeListener(this);
+ }
+}
diff --git a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginServices.java b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginServices.java
index 724aebd39da..d52dadfcdd9 100644
--- a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginServices.java
+++ b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginServices.java
@@ -25,6 +25,11 @@
public class GradleEnterprisePluginServices extends AbstractPluginServiceRegistry {
+ @Override
+ public void registerBuildServices(ServiceRegistration registration) {
+ registration.add(GradleEnterprisePluginAutoApplicationListener.class);
+ }
+
@Override
public void registerBuildTreeServices(ServiceRegistration registration) {
// legacy
diff --git a/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/DefaultPluginResolveDetails.java b/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/DefaultPluginResolveDetails.java
index 32a34b7061a..38a86ac824d 100644
--- a/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/DefaultPluginResolveDetails.java
+++ b/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/DefaultPluginResolveDetails.java
@@ -47,8 +47,7 @@ public void useModule(Object notation) {
targetPluginRequest.getLineNumber(),
targetPluginRequest.getScriptDisplayName(),
USE_MODULE_NOTATION_PARSER.parseNotation(notation),
- targetPluginRequest.getOriginalRequest(),
- targetPluginRequest.getAcceptanceHandler()
+ targetPluginRequest.getOriginalRequest()
);
}
@@ -61,8 +60,7 @@ public void useVersion(String version) {
targetPluginRequest.getLineNumber(),
targetPluginRequest.getScriptDisplayName(),
targetPluginRequest.getModule(),
- targetPluginRequest.getOriginalRequest(),
- targetPluginRequest.getAcceptanceHandler()
+ targetPluginRequest.getOriginalRequest()
);
}
diff --git a/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java b/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
index d09595738d1..2d4de30f20f 100644
--- a/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
+++ b/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
@@ -30,6 +30,7 @@
import org.gradle.api.plugins.UnknownPluginException;
import org.gradle.internal.classpath.CachedClasspathTransformer;
import org.gradle.internal.classpath.ClassPath;
+import org.gradle.internal.event.ListenerManager;
import org.gradle.internal.exceptions.LocationAwareException;
import org.gradle.plugin.management.internal.PluginRequestInternal;
import org.gradle.plugin.management.internal.PluginRequests;
@@ -66,8 +67,10 @@ public class DefaultPluginRequestApplicator implements PluginRequestApplicator {
private final PluginInspector pluginInspector;
private final CachedClasspathTransformer cachedClasspathTransformer;
private final PluginVersionTracker pluginVersionTracker;
+ private final Listener appliedListener;
public DefaultPluginRequestApplicator(
+ ListenerManager listenerManager,
PluginRegistry pluginRegistry,
PluginResolverFactory pluginResolverFactory,
PluginArtifactRepositoriesProvider pluginRepositoriesProvider,
@@ -83,6 +86,7 @@ public DefaultPluginRequestApplicator(
this.pluginInspector = pluginInspector;
this.cachedClasspathTransformer = cachedClasspathTransformer;
this.pluginVersionTracker = pluginVersionTracker;
+ this.appliedListener = listenerManager.getBroadcaster(Listener.class);
}
@Override
@@ -199,7 +203,7 @@ private void applyPlugin(PluginRequestInternal request, PluginId id, Runnable ap
try {
try {
applicator.run();
- request.getAcceptanceHandler().run();
+ appliedListener.pluginApplied(id);
} catch (UnknownPluginException e) {
throw couldNotApply(request, id, e);
} catch (Exception e) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment