Created
November 14, 2022 14:19
-
-
Save lptr/109534c5efee416e721b317e34f18d86 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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..0508eb0af70 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,7 @@ public class DefaultPluginRequest implements PluginRequestInternal { | |
private final String scriptDisplayName; | |
private final ModuleVersionSelector artifact; | |
private final PluginRequest originalRequest; | |
- private final Runnable acceptanceHandler; | |
+ private final Origin origin; | |
public DefaultPluginRequest(PluginId id, String version, boolean apply, Integer lineNumber, ScriptSource scriptSource) { | |
this(id, version, apply, lineNumber, scriptSource.getDisplayName(), null); | |
@@ -46,18 +44,17 @@ 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, Origin.MANUAL, apply, lineNumber, scriptDisplayName, artifact, null); | |
} | |
public DefaultPluginRequest( | |
PluginId id, | |
String version, | |
- boolean apply, | |
+ Origin origin, boolean apply, | |
Integer lineNumber, | |
String scriptDisplayName, | |
ModuleVersionSelector artifact, | |
- PluginRequest originalRequest, | |
- Runnable acceptanceHandler | |
+ PluginRequest originalRequest | |
) { | |
this.id = id; | |
this.version = version; | |
@@ -66,7 +63,7 @@ public DefaultPluginRequest( | |
this.scriptDisplayName = scriptDisplayName; | |
this.artifact = artifact; | |
this.originalRequest = originalRequest != null ? originalRequest : this; | |
- this.acceptanceHandler = acceptanceHandler; | |
+ this.origin = origin; | |
} | |
@Override | |
@@ -100,6 +97,11 @@ public String getScriptDisplayName() { | |
return scriptDisplayName; | |
} | |
+ @Override | |
+ public Origin getOrigin() { | |
+ return origin; | |
+ } | |
+ | |
@Override | |
public String toString() { | |
StringBuilder b = new StringBuilder(); | |
@@ -127,9 +129,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..25540c8aed2 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 | |
@@ -30,5 +30,9 @@ public interface PluginRequestInternal extends PluginRequest { | |
PluginRequest getOriginalRequest(); | |
- Runnable getAcceptanceHandler(); | |
+ Origin getOrigin(); | |
+ | |
+ enum Origin { | |
+ MANUAL, AUTO_APPLIED | |
+ } | |
} | |
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..c05d8634d1b 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 | |
@@ -19,8 +19,10 @@ | |
import org.gradle.api.internal.initialization.ClassLoaderScope; | |
import org.gradle.api.internal.initialization.ScriptHandlerInternal; | |
import org.gradle.api.internal.plugins.PluginManagerInternal; | |
+import org.gradle.internal.service.scopes.EventScope; | |
import org.gradle.internal.service.scopes.Scopes; | |
import org.gradle.internal.service.scopes.ServiceScope; | |
+import org.gradle.plugin.management.internal.PluginRequestInternal; | |
import org.gradle.plugin.management.internal.PluginRequests; | |
import javax.annotation.Nullable; | |
@@ -37,4 +39,9 @@ public interface PluginRequestApplicator { | |
* {@link ClassLoaderScope}. | |
*/ | |
void applyPlugins(PluginRequests requests, ScriptHandlerInternal scriptHandler, @Nullable PluginManagerInternal target, ClassLoaderScope classLoaderScope); | |
+ | |
+ @EventScope(Scopes.Build.class) | |
+ interface PluginApplicationListener { | |
+ void pluginApplied(PluginRequestInternal request); | |
+ } | |
} | |
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..ec212143fb8 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; | |
@@ -67,12 +61,12 @@ private PluginRequestInternal createGradleEnterprisePluginRequest() { | |
return new DefaultPluginRequest( | |
AutoAppliedGradleEnterprisePlugin.ID, | |
AutoAppliedGradleEnterprisePlugin.VERSION, | |
+ PluginRequestInternal.Origin.AUTO_APPLIED, | |
true, | |
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..a841dcca552 | |
--- /dev/null | |
+++ b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterprisePluginAutoApplicationListener.java | |
@@ -0,0 +1,40 @@ | |
+/* | |
+ * 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.plugin.management.internal.PluginRequestInternal; | |
+import org.gradle.plugin.management.internal.autoapply.AutoAppliedGradleEnterprisePlugin; | |
+import org.gradle.plugin.use.internal.PluginRequestApplicator; | |
+ | |
+import static org.gradle.plugin.management.internal.PluginRequestInternal.Origin.AUTO_APPLIED; | |
+ | |
+public class GradleEnterprisePluginAutoApplicationListener implements PluginRequestApplicator.PluginApplicationListener{ | |
+ private final GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus; | |
+ | |
+ public GradleEnterprisePluginAutoApplicationListener( | |
+ GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus | |
+ ) { | |
+ this.autoAppliedStatus = autoAppliedStatus; | |
+ } | |
+ | |
+ @Override | |
+ public void pluginApplied(PluginRequestInternal request) { | |
+ if (request.getId().equals(AutoAppliedGradleEnterprisePlugin.ID) && request.getOrigin() == AUTO_APPLIED) { | |
+ autoAppliedStatus.markAsAutoApplied(); | |
+ } | |
+ } | |
+} | |
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..d99e2ce0f7e 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 | |
@@ -20,11 +20,32 @@ | |
import org.gradle.internal.enterprise.impl.legacy.DefaultBuildScanClock; | |
import org.gradle.internal.enterprise.impl.legacy.DefaultBuildScanScopeIds; | |
import org.gradle.internal.enterprise.impl.legacy.LegacyGradleEnterprisePluginCheckInService; | |
+import org.gradle.internal.event.ListenerManager; | |
import org.gradle.internal.service.ServiceRegistration; | |
import org.gradle.internal.service.scopes.AbstractPluginServiceRegistry; | |
+import org.gradle.internal.service.scopes.BuildScopeListenerManagerAction; | |
public class GradleEnterprisePluginServices extends AbstractPluginServiceRegistry { | |
+ @Override | |
+ public void registerBuildServices(ServiceRegistration registration) { | |
+ registration.add(GradleEnterprisePluginAutoApplicationListener.class); | |
+ registration.add(GradleEnterprisePluginAutoApplicationListenerRegistrationAction.class); | |
+ } | |
+ | |
+ public static class GradleEnterprisePluginAutoApplicationListenerRegistrationAction implements BuildScopeListenerManagerAction { | |
+ private final GradleEnterprisePluginAutoApplicationListener listener; | |
+ | |
+ public GradleEnterprisePluginAutoApplicationListenerRegistrationAction(GradleEnterprisePluginAutoApplicationListener listener) { | |
+ this.listener = listener; | |
+ } | |
+ | |
+ @Override | |
+ public void execute(ListenerManager listenerManager) { | |
+ listenerManager.addListener(listener); | |
+ } | |
+ } | |
+ | |
@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..528d5590ecf 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 | |
@@ -43,12 +43,12 @@ public void useModule(Object notation) { | |
targetPluginRequest = new DefaultPluginRequest( | |
targetPluginRequest.getId(), | |
targetPluginRequest.getVersion(), | |
+ targetPluginRequest.getOrigin(), | |
targetPluginRequest.isApply(), | |
targetPluginRequest.getLineNumber(), | |
targetPluginRequest.getScriptDisplayName(), | |
USE_MODULE_NOTATION_PARSER.parseNotation(notation), | |
- targetPluginRequest.getOriginalRequest(), | |
- targetPluginRequest.getAcceptanceHandler() | |
+ targetPluginRequest.getOriginalRequest() | |
); | |
} | |
@@ -57,12 +57,12 @@ public void useVersion(String version) { | |
targetPluginRequest = new DefaultPluginRequest( | |
targetPluginRequest.getId(), | |
version, | |
+ targetPluginRequest.getOrigin(), | |
targetPluginRequest.isApply(), | |
targetPluginRequest.getLineNumber(), | |
targetPluginRequest.getScriptDisplayName(), | |
targetPluginRequest.getModule(), | |
- targetPluginRequest.getOriginalRequest(), | |
- targetPluginRequest.getAcceptanceHandler() | |
+ targetPluginRequest.getOriginalRequest() | |
); | |
} | |
diff --git a/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/autoapply/DefaultAutoAppliedPluginRegistry.java b/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/autoapply/DefaultAutoAppliedPluginRegistry.java | |
index 17a81df4377..4d90e8b4c9d 100644 | |
--- a/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/autoapply/DefaultAutoAppliedPluginRegistry.java | |
+++ b/subprojects/plugin-use/src/main/java/org/gradle/plugin/management/internal/autoapply/DefaultAutoAppliedPluginRegistry.java | |
@@ -74,7 +74,16 @@ private boolean shouldApplyGradleEnterprisePlugin(Settings settings) { | |
private static PluginRequestInternal createGradleEnterprisePluginRequest() { | |
ModuleIdentifier moduleIdentifier = DefaultModuleIdentifier.newId(AutoAppliedGradleEnterprisePlugin.GROUP, AutoAppliedGradleEnterprisePlugin.NAME); | |
ModuleVersionSelector artifact = DefaultModuleVersionSelector.newSelector(moduleIdentifier, AutoAppliedGradleEnterprisePlugin.VERSION); | |
- return new DefaultPluginRequest(AutoAppliedGradleEnterprisePlugin.ID, AutoAppliedGradleEnterprisePlugin.VERSION, true, null, getScriptDisplayName(), artifact); | |
+ return new DefaultPluginRequest( | |
+ AutoAppliedGradleEnterprisePlugin.ID, | |
+ AutoAppliedGradleEnterprisePlugin.VERSION, | |
+ PluginRequestInternal.Origin.AUTO_APPLIED, | |
+ true, | |
+ null, | |
+ getScriptDisplayName(), | |
+ artifact, | |
+ null | |
+ ); | |
} | |
private static String getScriptDisplayName() { | |
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..45dc586215c 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 PluginApplicationListener applicationListener; | |
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.applicationListener = listenerManager.getBroadcaster(PluginApplicationListener.class); | |
} | |
@Override | |
@@ -199,7 +203,7 @@ private void applyPlugin(PluginRequestInternal request, PluginId id, Runnable ap | |
try { | |
try { | |
applicator.run(); | |
- request.getAcceptanceHandler().run(); | |
+ applicationListener.pluginApplied(request); | |
} 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