Skip to content

Commit

Permalink
Add problem collection to org.gradle.internal.enterprise.GradleEnterp…
Browse files Browse the repository at this point in the history
…risePluginEndOfBuildListener.BuildResult
  • Loading branch information
reinsch82 committed Apr 17, 2024
1 parent 483bda2 commit b912930
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 9 deletions.
Expand Up @@ -16,7 +16,10 @@

package org.gradle.internal.enterprise;

import org.gradle.api.problems.internal.Problem;

import javax.annotation.Nullable;
import java.util.Collection;

/**
* Used to signal the end of build to the plugin.
Expand All @@ -31,6 +34,8 @@ public interface GradleEnterprisePluginEndOfBuildListener {
interface BuildResult {
@Nullable
Throwable getFailure();

Collection<Problem> getProblems();
}

void buildFinished(BuildResult buildResult);
Expand Down
Expand Up @@ -16,6 +16,8 @@

package org.gradle.internal.enterprise.impl;

import com.google.common.collect.Multimap;
import org.gradle.api.problems.internal.Problem;
import org.gradle.internal.enterprise.GradleEnterprisePluginBuildState;
import org.gradle.internal.enterprise.GradleEnterprisePluginConfig;
import org.gradle.internal.enterprise.GradleEnterprisePluginEndOfBuildListener;
Expand All @@ -26,6 +28,7 @@
import org.gradle.internal.operations.notify.BuildOperationNotificationListenerRegistrar;

import javax.annotation.Nullable;
import java.util.Collection;

/**
* Captures the state to recreate the {@link GradleEnterprisePluginService} instance.
Expand All @@ -48,6 +51,7 @@ public class DefaultGradleEnterprisePluginAdapter implements GradleEnterprisePlu
private final DefaultGradleEnterprisePluginServiceRef pluginServiceRef;

private final BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar;
private final Multimap<Throwable, Problem> problemsMapping;

private transient GradleEnterprisePluginService pluginService;

Expand All @@ -57,14 +61,16 @@ public DefaultGradleEnterprisePluginAdapter(
DefaultGradleEnterprisePluginRequiredServices requiredServices,
GradleEnterprisePluginBuildState buildState,
DefaultGradleEnterprisePluginServiceRef pluginServiceRef,
BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar
BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar,
Multimap<Throwable, Problem> problemsMapping
) {
this.pluginServiceFactory = pluginServiceFactory;
this.config = config;
this.requiredServices = requiredServices;
this.buildState = buildState;
this.pluginServiceRef = pluginServiceRef;
this.buildOperationNotificationListenerRegistrar = buildOperationNotificationListenerRegistrar;
this.problemsMapping = problemsMapping;

createPluginService();
}
Expand Down Expand Up @@ -95,6 +101,11 @@ public void buildFinished(@Nullable Throwable buildFailure) {
public Throwable getFailure() {
return buildFailure;
}

@Override
public Collection<Problem> getProblems() {
return problemsMapping.get(buildFailure);
}
});
}
}
Expand Down
Expand Up @@ -16,6 +16,9 @@

package org.gradle.internal.enterprise.impl;

import com.google.common.collect.Multimap;
import org.gradle.api.problems.internal.InternalProblems;
import org.gradle.api.problems.internal.Problem;
import org.gradle.internal.enterprise.GradleEnterprisePluginBuildState;
import org.gradle.internal.enterprise.GradleEnterprisePluginConfig;
import org.gradle.internal.enterprise.GradleEnterprisePluginServiceFactory;
Expand All @@ -31,19 +34,22 @@ public class DefaultGradleEnterprisePluginAdapterFactory {
private final GradleEnterprisePluginBuildState buildState;
private final DefaultGradleEnterprisePluginServiceRef pluginServiceRef;
private final BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar;
private final Multimap<Throwable, Problem> problemsMapping;

public DefaultGradleEnterprisePluginAdapterFactory(
GradleEnterprisePluginConfig config,
DefaultGradleEnterprisePluginRequiredServices requiredServices,
GradleEnterprisePluginBuildState buildState,
DefaultGradleEnterprisePluginServiceRef pluginServiceRef,
BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar
BuildOperationNotificationListenerRegistrar buildOperationNotificationListenerRegistrar,
InternalProblems problems
) {
this.config = config;
this.requiredServices = requiredServices;
this.buildState = buildState;
this.pluginServiceRef = pluginServiceRef;
this.buildOperationNotificationListenerRegistrar = buildOperationNotificationListenerRegistrar;
this.problemsMapping = problems.getProblems();
}

public DefaultGradleEnterprisePluginAdapter create(GradleEnterprisePluginServiceFactory pluginServiceFactory) {
Expand All @@ -53,7 +59,8 @@ public DefaultGradleEnterprisePluginAdapter create(GradleEnterprisePluginService
requiredServices,
buildState,
pluginServiceRef,
buildOperationNotificationListenerRegistrar
buildOperationNotificationListenerRegistrar,
problemsMapping
);
}
}
Expand Up @@ -16,6 +16,7 @@
package org.gradle.internal.build;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import org.gradle.BuildListener;
import org.gradle.BuildResult;
import org.gradle.api.NonNullApi;
Expand All @@ -26,7 +27,6 @@
import org.gradle.api.internal.project.HoldsProjectState;
import org.gradle.api.internal.project.ProjectInternal;
import org.gradle.api.internal.project.ProjectState;
import org.gradle.api.problems.internal.InternalProblems;
import org.gradle.api.problems.internal.Problem;
import org.gradle.api.specs.Spec;
import org.gradle.execution.BuildWorkExecutor;
Expand Down Expand Up @@ -79,7 +79,7 @@ private enum State implements StateTransitionController.State {
private final BuildToolingModelControllerFactory toolingModelControllerFactory;
private final BuildModelController modelController;
private final StateTransitionController<State> state;
private final InternalProblems problems;
private final Multimap<Throwable, Problem> problems;
private final GradleInternal gradle;
private boolean hasTasks;
private boolean hasFiredBeforeModelDiscarded;
Expand All @@ -94,7 +94,7 @@ public DefaultBuildLifecycleController(
BuildWorkExecutor workExecutor,
BuildToolingModelControllerFactory toolingModelControllerFactory,
StateTransitionControllerFactory controllerFactory,
InternalProblems problems
Multimap<Throwable, Problem> problems
) {
this.gradle = gradle;
this.modelController = buildModelController;
Expand Down Expand Up @@ -348,7 +348,7 @@ public ExecutionResult<Void> finishBuild(@Nullable Throwable failure) {
if (reportableFailure == null && !stageFailures.getFailures().isEmpty()) {
reportableFailure = exceptionAnalyser.transform(stageFailures.getFailures());
}
Collection<Problem> problemCollection = problems.getProblems().get(failure);
Collection<Problem> problemCollection = problems.get(failure);
BuildResult buildResult = new BuildResult(hasTasks ? "Build" : "Configure", gradle, reportableFailure, problemCollection);
return ExecutionResult.maybeFailing(() -> buildListener.buildFinished(buildResult));
});
Expand Down
Expand Up @@ -76,7 +76,7 @@ public BuildLifecycleController newInstance(BuildDefinition buildDefinition, Bui
gradle.getServices().get(BuildWorkExecutor.class),
buildToolingModelControllerFactory,
stateTransitionControllerFactory,
problems
problems.getProblems()
);
}

Expand Down
Expand Up @@ -16,6 +16,7 @@

package org.gradle.internal.build

import com.google.common.collect.HashMultimap
import org.gradle.BuildListener
import org.gradle.api.internal.GradleInternal
import org.gradle.api.internal.SettingsInternal
Expand Down Expand Up @@ -64,7 +65,7 @@ class DefaultBuildLifecycleControllerTest extends Specification {

DefaultBuildLifecycleController controller() {
return new DefaultBuildLifecycleController(gradleMock, buildModelController, exceptionAnalyser, buildListener,
buildModelLifecycleListener, workPreparer, workExecutor, toolingControllerFactory, TestUtil.stateTransitionControllerFactory(), problems)
buildModelLifecycleListener, workPreparer, workExecutor, toolingControllerFactory, TestUtil.stateTransitionControllerFactory(), HashMultimap.create())
}

void testCanFinishBuildWhenNothingHasBeenDone() {
Expand Down

0 comments on commit b912930

Please sign in to comment.