Search in sources :

Example 1 with DefaultServiceLocator

use of org.gradle.internal.service.DefaultServiceLocator in project gradle by gradle.

the class GlobalScopeServices method configure.

void configure(ServiceRegistration registration, ClassLoaderRegistry classLoaderRegistry) {
    final List<PluginServiceRegistry> pluginServiceFactories = new DefaultServiceLocator(classLoaderRegistry.getRuntimeClassLoader(), classLoaderRegistry.getPluginsClassLoader()).getAll(PluginServiceRegistry.class);
    for (PluginServiceRegistry pluginServiceRegistry : pluginServiceFactories) {
        registration.add(PluginServiceRegistry.class, pluginServiceRegistry);
        pluginServiceRegistry.registerGlobalServices(registration);
    }
    registration.add(BuildLayoutFactory.class);
    registration.add(DefaultScriptFileResolver.class);
}
Also used : DefaultServiceLocator(org.gradle.internal.service.DefaultServiceLocator)

Example 2 with DefaultServiceLocator

use of org.gradle.internal.service.DefaultServiceLocator in project gradle by gradle.

the class DefaultToolingImplementationLoader method create.

@Override
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, cancellationToken);
    ServiceLocator serviceLocator = new DefaultServiceLocator(serviceClassLoader);
    try {
        Factory<ConnectionVersion4> factory = serviceLocator.findFactory(ConnectionVersion4.class);
        if (factory == null) {
            return new NoToolingApiConnection(distribution);
        }
        ConnectionVersion4 connection = factory.create();
        ProtocolToModelAdapter adapter = new ProtocolToModelAdapter(new ConsumerTargetTypeProvider());
        ModelMapping modelMapping = new ModelMapping();
        if (connection instanceof InternalStopWhenIdleConnection) {
            return createConnection(new StopWhenIdleConsumerConnection(connection, modelMapping, adapter), connectionParameters);
        } else if (connection instanceof InternalInvalidatableVirtualFileSystemConnection) {
            return createConnection(new NotifyDaemonsAboutChangedPathsConsumerConnection(connection, modelMapping, adapter), connectionParameters);
        } else if (connection instanceof InternalPhasedActionConnection) {
            return createConnection(new PhasedActionAwareConsumerConnection(connection, modelMapping, adapter), connectionParameters);
        } else if (connection instanceof InternalParameterAcceptingConnection) {
            return createConnection(new ParameterAcceptingConsumerConnection(connection, modelMapping, adapter), connectionParameters);
        } else if (connection instanceof InternalTestExecutionConnection) {
            return createConnection(new TestExecutionConsumerConnection(connection, modelMapping, adapter), connectionParameters);
        } else {
            return new UnsupportedOlderVersionConnection(connection, adapter);
        }
    } 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);
    }
}
Also used : NoToolingApiConnection(org.gradle.tooling.internal.consumer.connection.NoToolingApiConnection) InternalStopWhenIdleConnection(org.gradle.tooling.internal.protocol.InternalStopWhenIdleConnection) PhasedActionAwareConsumerConnection(org.gradle.tooling.internal.consumer.connection.PhasedActionAwareConsumerConnection) InternalTestExecutionConnection(org.gradle.tooling.internal.protocol.test.InternalTestExecutionConnection) UnsupportedOlderVersionConnection(org.gradle.tooling.internal.consumer.connection.UnsupportedOlderVersionConnection) TestExecutionConsumerConnection(org.gradle.tooling.internal.consumer.connection.TestExecutionConsumerConnection) ConsumerTargetTypeProvider(org.gradle.tooling.internal.consumer.converters.ConsumerTargetTypeProvider) GradleConnectionException(org.gradle.tooling.GradleConnectionException) DefaultServiceLocator(org.gradle.internal.service.DefaultServiceLocator) InternalParameterAcceptingConnection(org.gradle.tooling.internal.protocol.InternalParameterAcceptingConnection) ModelMapping(org.gradle.tooling.internal.consumer.versioning.ModelMapping) ParameterAcceptingConsumerConnection(org.gradle.tooling.internal.consumer.connection.ParameterAcceptingConsumerConnection) DefaultServiceLocator(org.gradle.internal.service.DefaultServiceLocator) ServiceLocator(org.gradle.internal.service.ServiceLocator) ConnectionVersion4(org.gradle.tooling.internal.protocol.ConnectionVersion4) StopWhenIdleConsumerConnection(org.gradle.tooling.internal.consumer.connection.StopWhenIdleConsumerConnection) ProtocolToModelAdapter(org.gradle.tooling.internal.adapter.ProtocolToModelAdapter) NotifyDaemonsAboutChangedPathsConsumerConnection(org.gradle.tooling.internal.consumer.connection.NotifyDaemonsAboutChangedPathsConsumerConnection) FilteringClassLoader(org.gradle.internal.classloader.FilteringClassLoader) VisitableURLClassLoader(org.gradle.internal.classloader.VisitableURLClassLoader) InternalInvalidatableVirtualFileSystemConnection(org.gradle.tooling.internal.protocol.InternalInvalidatableVirtualFileSystemConnection) InternalPhasedActionConnection(org.gradle.tooling.internal.protocol.InternalPhasedActionConnection) UnsupportedVersionException(org.gradle.tooling.UnsupportedVersionException)

Aggregations

DefaultServiceLocator (org.gradle.internal.service.DefaultServiceLocator)2 FilteringClassLoader (org.gradle.internal.classloader.FilteringClassLoader)1 VisitableURLClassLoader (org.gradle.internal.classloader.VisitableURLClassLoader)1 ServiceLocator (org.gradle.internal.service.ServiceLocator)1 GradleConnectionException (org.gradle.tooling.GradleConnectionException)1 UnsupportedVersionException (org.gradle.tooling.UnsupportedVersionException)1 ProtocolToModelAdapter (org.gradle.tooling.internal.adapter.ProtocolToModelAdapter)1 NoToolingApiConnection (org.gradle.tooling.internal.consumer.connection.NoToolingApiConnection)1 NotifyDaemonsAboutChangedPathsConsumerConnection (org.gradle.tooling.internal.consumer.connection.NotifyDaemonsAboutChangedPathsConsumerConnection)1 ParameterAcceptingConsumerConnection (org.gradle.tooling.internal.consumer.connection.ParameterAcceptingConsumerConnection)1 PhasedActionAwareConsumerConnection (org.gradle.tooling.internal.consumer.connection.PhasedActionAwareConsumerConnection)1 StopWhenIdleConsumerConnection (org.gradle.tooling.internal.consumer.connection.StopWhenIdleConsumerConnection)1 TestExecutionConsumerConnection (org.gradle.tooling.internal.consumer.connection.TestExecutionConsumerConnection)1 UnsupportedOlderVersionConnection (org.gradle.tooling.internal.consumer.connection.UnsupportedOlderVersionConnection)1 ConsumerTargetTypeProvider (org.gradle.tooling.internal.consumer.converters.ConsumerTargetTypeProvider)1 ModelMapping (org.gradle.tooling.internal.consumer.versioning.ModelMapping)1 ConnectionVersion4 (org.gradle.tooling.internal.protocol.ConnectionVersion4)1 InternalInvalidatableVirtualFileSystemConnection (org.gradle.tooling.internal.protocol.InternalInvalidatableVirtualFileSystemConnection)1 InternalParameterAcceptingConnection (org.gradle.tooling.internal.protocol.InternalParameterAcceptingConnection)1 InternalPhasedActionConnection (org.gradle.tooling.internal.protocol.InternalPhasedActionConnection)1