use of org.gradle.tooling.internal.consumer.versioning.ModelMapping in project gradle by gradle.
the class InternalBuildActionAdapter method execute.
public T execute(final InternalBuildController buildController) {
ProtocolToModelAdapter protocolToModelAdapter = new ProtocolToModelAdapter(new ConsumerTargetTypeProvider());
BuildController buildControllerAdapter = new BuildControllerAdapter(protocolToModelAdapter, buildController, new ModelMapping(), rootDir);
if (!versionDetails.maySupportModel(BuildInvocations.class)) {
buildControllerAdapter = new BuildInvocationsAdapterController(protocolToModelAdapter, buildControllerAdapter);
}
return action.execute(buildControllerAdapter);
}
use of org.gradle.tooling.internal.consumer.versioning.ModelMapping in project gradle by gradle.
the class DefaultToolingImplementationLoader method create.
public ConsumerConnection create(Distribution distribution, ProgressLoggerFactory progressLoggerFactory, InternalBuildProgressListener progressListener, ConnectionParameters connectionParameters, BuildCancellationToken cancellationToken) {
LOGGER.debug("Using tooling provider from {}", distribution.getDisplayName());
ClassLoader serviceClassLoader = createImplementationClassLoader(distribution, progressLoggerFactory, progressListener, connectionParameters.getGradleUserHomeDir(), cancellationToken);
ServiceLocator serviceLocator = new DefaultServiceLocator(serviceClassLoader);
try {
Factory<ConnectionVersion4> factory = serviceLocator.findFactory(ConnectionVersion4.class);
if (factory == null) {
return new NoToolingApiConnection(distribution);
}
// ConnectionVersion4 is a part of the protocol and cannot be easily changed.
ConnectionVersion4 connection = factory.create();
ProtocolToModelAdapter adapter = new ProtocolToModelAdapter(new ConsumerTargetTypeProvider());
ModelMapping modelMapping = new ModelMapping();
// Adopting the connection to a refactoring friendly type that the consumer owns
AbstractConsumerConnection adaptedConnection;
if (connection instanceof InternalTestExecutionConnection) {
adaptedConnection = new TestExecutionConsumerConnection(connection, modelMapping, adapter);
} else if (connection instanceof StoppableConnection) {
adaptedConnection = new ShutdownAwareConsumerConnection(connection, modelMapping, adapter);
} else if (connection instanceof InternalCancellableConnection) {
adaptedConnection = new CancellableConsumerConnection(connection, modelMapping, adapter);
} else if (connection instanceof ModelBuilder && connection instanceof InternalBuildActionExecutor) {
adaptedConnection = new ActionAwareConsumerConnection(connection, modelMapping, adapter);
} else if (connection instanceof ModelBuilder) {
adaptedConnection = new ModelBuilderBackedConsumerConnection(connection, modelMapping, adapter);
} else if (connection instanceof BuildActionRunner) {
adaptedConnection = new BuildActionRunnerBackedConsumerConnection(connection, modelMapping, adapter);
} else {
return new UnsupportedOlderVersionConnection(connection, adapter);
}
adaptedConnection.configure(connectionParameters);
if (!adaptedConnection.getVersionDetails().supportsCancellation()) {
return new ParameterValidatingConsumerConnection(adaptedConnection.getVersionDetails(), new NonCancellableConsumerConnectionAdapter(adaptedConnection));
}
return new ParameterValidatingConsumerConnection(adaptedConnection.getVersionDetails(), adaptedConnection);
} catch (UnsupportedVersionException e) {
throw e;
} catch (Throwable t) {
throw new GradleConnectionException(String.format("Could not create an instance of Tooling API implementation using the specified %s.", distribution.getDisplayName()), t);
}
}
use of org.gradle.tooling.internal.consumer.versioning.ModelMapping in project gradle by gradle.
the class Exceptions method unsupportedModel.
public static UnknownModelException unsupportedModel(Class<?> modelType, String targetVersion) {
ModelMapping modelMapping = new ModelMapping();
String versionAdded = modelMapping.getVersionAdded(modelType);
if (versionAdded != null) {
return new UnknownModelException(String.format("The version of Gradle you are using (%s) does not support building a model of type '%s'. Support for building '%s' models was added in Gradle %s and is available in all later versions.", targetVersion, modelType.getSimpleName(), modelType.getSimpleName(), versionAdded));
} else {
return new UnknownModelException(String.format("The version of Gradle you are using (%s) does not support building a model of type '%s'. Support for building custom tooling models was added in Gradle 1.6 and is available in all later versions.", targetVersion, modelType.getSimpleName()));
}
}
use of org.gradle.tooling.internal.consumer.versioning.ModelMapping in project gradle by gradle.
the class ProviderConnection method run.
public Object run(String modelName, BuildCancellationToken cancellationToken, ProviderOperationParameters providerParameters) {
List<String> tasks = providerParameters.getTasks();
if (modelName.equals(ModelIdentifier.NULL_MODEL) && tasks == null) {
throw new IllegalArgumentException("No model type or tasks specified.");
}
Parameters params = initParams(providerParameters);
Class<?> type = new ModelMapping().getProtocolTypeFromModelName(modelName);
if (type == InternalBuildEnvironment.class) {
//we don't really need to launch the daemon to acquire information needed for BuildEnvironment
if (tasks != null) {
throw new IllegalArgumentException("Cannot run tasks and fetch the build environment model.");
}
return new DefaultBuildEnvironment(new DefaultBuildIdentifier(providerParameters.getProjectDir()), params.gradleUserhome, GradleVersion.current().getVersion(), params.daemonParams.getEffectiveJvm().getJavaHome(), params.daemonParams.getEffectiveJvmArgs());
}
StartParameter startParameter = new ProviderStartParameterConverter().toStartParameter(providerParameters, params.properties);
ProgressListenerConfiguration listenerConfig = ProgressListenerConfiguration.from(providerParameters);
BuildAction action = new BuildModelAction(startParameter, modelName, tasks != null, listenerConfig.clientSubscriptions);
return run(action, cancellationToken, listenerConfig, providerParameters, params);
}
Aggregations