Search in sources :

Example 1 with ClientProvidedPhasedAction

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);
}
Also used : ClientProvidedPhasedAction(org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction) InternalPhasedAction(org.gradle.tooling.internal.protocol.InternalPhasedAction)

Example 2 with ClientProvidedPhasedAction

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;
}
Also used : BuildActionRunner(org.gradle.internal.buildtree.BuildActionRunner) BuildTreeState(org.gradle.internal.buildtree.BuildTreeState) BuildActionModelRequirements(org.gradle.internal.buildtree.BuildActionModelRequirements) ClientProvidedBuildAction(org.gradle.tooling.internal.provider.action.ClientProvidedBuildAction) BuildTreeModelControllerServices(org.gradle.internal.buildtree.BuildTreeModelControllerServices) ClientProvidedPhasedAction(org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction) BuildSessionActionExecutor(org.gradle.internal.session.BuildSessionActionExecutor) UncheckedException(org.gradle.internal.UncheckedException) RunTasksRequirements(org.gradle.internal.buildtree.RunTasksRequirements) BuildAction(org.gradle.internal.invocation.BuildAction) BuildSessionContext(org.gradle.internal.session.BuildSessionContext) BuildModelAction(org.gradle.tooling.internal.provider.action.BuildModelAction) BuildLayoutValidator(org.gradle.internal.build.BuildLayoutValidator) ClientProvidedPhasedAction(org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction) BuildActionModelRequirements(org.gradle.internal.buildtree.BuildActionModelRequirements) BuildTreeState(org.gradle.internal.buildtree.BuildTreeState) BuildActionRunner(org.gradle.internal.buildtree.BuildActionRunner) ClientProvidedBuildAction(org.gradle.tooling.internal.provider.action.ClientProvidedBuildAction) BuildTreeModelControllerServices(org.gradle.internal.buildtree.BuildTreeModelControllerServices) RunTasksRequirements(org.gradle.internal.buildtree.RunTasksRequirements) BuildModelAction(org.gradle.tooling.internal.provider.action.BuildModelAction)

Example 3 with ClientProvidedPhasedAction

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();
    }
}
Also used : SerializedPayload(org.gradle.tooling.internal.provider.serialization.SerializedPayload) ClientProvidedPhasedAction(org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction) ProviderConnectionParameters(org.gradle.tooling.internal.provider.connection.ProviderConnectionParameters) ProviderOperationParameters(org.gradle.tooling.internal.provider.connection.ProviderOperationParameters) DaemonParameters(org.gradle.launcher.daemon.configuration.DaemonParameters) BuildActionParameters(org.gradle.launcher.exec.BuildActionParameters) StartParameterInternal(org.gradle.api.internal.StartParameterInternal) ClientProvidedBuildAction(org.gradle.tooling.internal.provider.action.ClientProvidedBuildAction) BuildAction(org.gradle.internal.invocation.BuildAction)

Aggregations

ClientProvidedPhasedAction (org.gradle.tooling.internal.provider.action.ClientProvidedPhasedAction)3 BuildAction (org.gradle.internal.invocation.BuildAction)2 ClientProvidedBuildAction (org.gradle.tooling.internal.provider.action.ClientProvidedBuildAction)2 StartParameterInternal (org.gradle.api.internal.StartParameterInternal)1 UncheckedException (org.gradle.internal.UncheckedException)1 BuildLayoutValidator (org.gradle.internal.build.BuildLayoutValidator)1 BuildActionModelRequirements (org.gradle.internal.buildtree.BuildActionModelRequirements)1 BuildActionRunner (org.gradle.internal.buildtree.BuildActionRunner)1 BuildTreeModelControllerServices (org.gradle.internal.buildtree.BuildTreeModelControllerServices)1 BuildTreeState (org.gradle.internal.buildtree.BuildTreeState)1 RunTasksRequirements (org.gradle.internal.buildtree.RunTasksRequirements)1 BuildSessionActionExecutor (org.gradle.internal.session.BuildSessionActionExecutor)1 BuildSessionContext (org.gradle.internal.session.BuildSessionContext)1 DaemonParameters (org.gradle.launcher.daemon.configuration.DaemonParameters)1 BuildActionParameters (org.gradle.launcher.exec.BuildActionParameters)1 InternalPhasedAction (org.gradle.tooling.internal.protocol.InternalPhasedAction)1 BuildModelAction (org.gradle.tooling.internal.provider.action.BuildModelAction)1 ProviderConnectionParameters (org.gradle.tooling.internal.provider.connection.ProviderConnectionParameters)1 ProviderOperationParameters (org.gradle.tooling.internal.provider.connection.ProviderOperationParameters)1 SerializedPayload (org.gradle.tooling.internal.provider.serialization.SerializedPayload)1