use of org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction in project gradle by gradle.
the class ClientProvidedPhasedActionRunner method run.
@Override
public Result run(BuildAction action, BuildTreeLifecycleController buildController) {
if (!(action instanceof ClientProvidedPhasedAction)) {
return Result.nothing();
}
ClientProvidedPhasedAction clientProvidedPhasedAction = (ClientProvidedPhasedAction) action;
InternalPhasedAction phasedAction = (InternalPhasedAction) payloadSerializer.deserialize(clientProvidedPhasedAction.getPhasedAction());
return runClientAction(new ClientActionImpl(phasedAction, action), buildController);
}
use of org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction in project gradle by gradle.
the class BuildTreeLifecycleBuildActionExecutor method execute.
@Override
public BuildActionRunner.Result execute(BuildAction action, BuildSessionContext buildSession) {
BuildActionRunner.Result result = null;
try {
buildLayoutValidator.validate(action.getStartParameter());
BuildActionModelRequirements actionRequirements;
if (action instanceof BuildModelAction && action.isCreateModel()) {
BuildModelAction buildModelAction = (BuildModelAction) action;
actionRequirements = new QueryModelRequirements(action.getStartParameter(), action.isRunTasks(), buildModelAction.getModelName());
} else if (action instanceof ClientProvidedBuildAction) {
actionRequirements = new RunActionRequirements(action.getStartParameter(), action.isRunTasks());
} else if (action instanceof ClientProvidedPhasedAction) {
actionRequirements = new RunPhasedActionRequirements(action.getStartParameter(), action.isRunTasks());
} else {
actionRequirements = new RunTasksRequirements(action.getStartParameter());
}
BuildTreeModelControllerServices.Supplier modelServices = buildTreeModelControllerServices.servicesForBuildTree(actionRequirements);
BuildTreeState buildTree = new BuildTreeState(buildSession.getServices(), modelServices);
try {
result = buildTree.run(context -> context.execute(action));
} finally {
buildTree.close();
}
} catch (Throwable t) {
if (result == null) {
// whereas console failure logging based on the _thrown exception_ happens up outside session scope. It would be better to refactor so that a result can be returned from here
throw UncheckedException.throwAsUncheckedException(t);
} else {
// whereas console failure logging based on the _thrown exception_ happens up outside session scope. It would be better to refactor so that a result can be returned from here
throw UncheckedException.throwAsUncheckedException(result.addFailure(t).getBuildFailure());
}
}
return result;
}
use of org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction in project gradle by gradle.
the class ProviderConnection method runPhasedAction.
public Object runPhasedAction(InternalPhasedAction clientPhasedAction, PhasedActionResultListener resultListener, BuildCancellationToken cancellationToken, ProviderOperationParameters providerParameters) {
List<String> tasks = providerParameters.getTasks();
SerializedPayload serializedAction = payloadSerializer.serialize(clientPhasedAction);
Parameters params = initParams(providerParameters);
StartParameterInternal startParameter = new ProviderStartParameterConverter().toStartParameter(providerParameters, params.buildLayout, params.properties);
FailsafePhasedActionResultListener failsafePhasedActionResultListener = new FailsafePhasedActionResultListener(resultListener);
ProgressListenerConfiguration listenerConfig = ProgressListenerConfiguration.from(providerParameters, consumerVersion);
BuildAction action = new ClientProvidedPhasedAction(startParameter, serializedAction, tasks != null, listenerConfig.clientSubscriptions);
try {
return run(action, cancellationToken, listenerConfig, new PhasedActionEventConsumer(failsafePhasedActionResultListener, payloadSerializer, listenerConfig.buildEventConsumer), providerParameters, params);
} finally {
failsafePhasedActionResultListener.rethrowErrors();
}
}
Aggregations