Search in sources :

Example 1 with ServiceRepository

use of org.mule.runtime.api.service.ServiceRepository in project mule by mulesoft.

the class DefaultMuleCoreExtensionManagerTestCase method injectsServiceOnExtension.

@Test
public void injectsServiceOnExtension() throws Exception {
    List<MuleCoreExtension> extensions = new LinkedList<>();
    InjectedTestServiceExtension extension = mock(InjectedTestServiceExtension.class);
    extensions.add(extension);
    TestService service = mock(TestService.class);
    when(service.getName()).thenReturn("testService");
    ServiceRepository serviceRepository = mock(ServiceRepository.class);
    when(serviceRepository.getServices()).thenReturn(Collections.singletonList(service));
    when(coreExtensionDiscoverer.discover()).thenReturn(extensions);
    when(coreExtensionDependencyResolver.resolveDependencies(extensions)).thenReturn(extensions);
    coreExtensionManager.setServiceRepository(serviceRepository);
    coreExtensionManager.initialise();
    verify(extension).setService(service);
}
Also used : MuleCoreExtension(org.mule.runtime.container.api.MuleCoreExtension) ServiceRepository(org.mule.runtime.api.service.ServiceRepository) LinkedList(java.util.LinkedList) SmallTest(org.mule.tck.size.SmallTest) Test(org.junit.Test)

Example 2 with ServiceRepository

use of org.mule.runtime.api.service.ServiceRepository in project mule by mulesoft.

the class ArtifactContextBuilder method build.

/**
 * @return the {@code MuleContext} created with the provided configuration
 * @throws ConfigurationException when there's a problem creating the {@code MuleContext}
 * @throws InitialisationException when a certain configuration component failed during initialisation phase
 */
public ArtifactContext build() throws InitialisationException, ConfigurationException {
    checkState(executionClassLoader != null, EXECUTION_CLASSLOADER_WAS_NOT_SET);
    checkState(classLoaderRepository != null, CLASS_LOADER_REPOSITORY_WAS_NOT_SET);
    checkState(POLICY.equals(artifactType) || APP.equals(artifactType) || parentArtifact == null, ONLY_APPLICATIONS_OR_POLICIES_ARE_ALLOWED_TO_HAVE_A_PARENT_ARTIFACT);
    try {
        return withContextClassLoader(executionClassLoader, () -> {
            List<ConfigurationBuilder> builders = new LinkedList<>();
            builders.addAll(additionalBuilders);
            builders.add(new ArtifactBootstrapServiceDiscovererConfigurationBuilder(artifactPlugins));
            if (extensionManagerFactory == null) {
                if (parentArtifact == null) {
                    extensionManagerFactory = new ArtifactExtensionManagerFactory(artifactPlugins, extensionModelLoaderRepository, new DefaultExtensionManagerFactory());
                } else {
                    extensionManagerFactory = new CompositeArtifactExtensionManagerFactory(parentArtifact, extensionModelLoaderRepository, artifactPlugins, new DefaultExtensionManagerFactory());
                }
            }
            builders.add(new ArtifactExtensionManagerConfigurationBuilder(artifactPlugins, extensionManagerFactory));
            builders.add(createConfigurationBuilderFromApplicationProperties());
            // TODO MULE-14289 (elrodro83) pass this object to the builder instead of looking it up here
            ArtifactConfigurationProcessor artifactConfigurationProcessor = ArtifactConfigurationProcessor.discover();
            AtomicReference<ArtifactContext> artifactContext = new AtomicReference<>();
            builders.add(new ConfigurationBuilder() {

                @Override
                public void configure(MuleContext muleContext) throws ConfigurationException {
                    if (serviceRepository != null) {
                        serviceConfigurators.add(new ContainerServicesMuleContextConfigurator(serviceRepository));
                    }
                    if (classLoaderRepository != null) {
                        serviceConfigurators.add(customizationService -> customizationService.registerCustomServiceImpl(OBJECT_CLASSLOADER_REPOSITORY, classLoaderRepository));
                    }
                    if (policyProvider != null) {
                        serviceConfigurators.add(customizationService -> customizationService.registerCustomServiceImpl(OBJECT_POLICY_PROVIDER, policyProvider));
                    }
                    ArtifactContextConfiguration.ArtifactContextConfigurationBuilder artifactContextConfigurationBuilder = ArtifactContextConfiguration.builder().setMuleContext(muleContext).setConfigResources(configurationFiles).setArtifactDeclaration(artifactDeclaration).setArtifactProperties(merge(artifactProperties, muleContext.getDeploymentProperties())).setArtifactType(artifactType).setEnableLazyInitialization(enableLazyInit).setDisableXmlValidations(disableXmlValidations).setServiceConfigurators(serviceConfigurators);
                    if (parentArtifact != null) {
                        artifactContextConfigurationBuilder.setParentContext(parentArtifact.getRegistry().lookupByType(MuleContext.class).get());
                    }
                    artifactContext.set(artifactConfigurationProcessor.createArtifactContext(artifactContextConfigurationBuilder.build()));
                    ((DefaultMuleConfiguration) muleContext.getConfiguration()).setDataFolderName(dataFolderName);
                }

                @Override
                public void addServiceConfigurator(ServiceConfigurator serviceConfigurator) {
                // Nothing to do
                }
            });
            DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
            if (muleContextListener != null) {
                muleContextFactory.addListener(muleContextListener);
            }
            if (APP.equals(artifactType)) {
                muleContextBuilder = new ApplicationMuleContextBuilder(artifactName, artifactProperties, defaultEncoding);
            } else if (POLICY.equals(artifactType)) {
                muleContextBuilder = new PolicyMuleContextBuilder(artifactName, artifactProperties, defaultEncoding);
            } else {
                muleContextBuilder = new DomainMuleContextBuilder(artifactName);
            }
            muleContextBuilder.setExecutionClassLoader(this.executionClassLoader);
            ArtifactObjectSerializer objectSerializer = new ArtifactObjectSerializer(classLoaderRepository);
            muleContextBuilder.setObjectSerializer(objectSerializer);
            muleContextBuilder.setDeploymentProperties(properties);
            if (parentArtifact != null) {
                builders.add(new ConnectionManagerConfigurationBuilder(parentArtifact));
                muleContextBuilder.setErrorTypeRepository(createCompositeErrorTypeRepository(parentArtifact.getRegistry().lookupByType(MuleContext.class).get().getErrorTypeRepository()));
            } else {
                builders.add(new ConnectionManagerConfigurationBuilder());
            }
            try {
                muleContextFactory.createMuleContext(builders, muleContextBuilder);
                return artifactContext.get();
            } catch (InitialisationException e) {
                throw new ConfigurationException(e);
            }
        });
    } catch (MuleRuntimeException e) {
        // We need this exception to be thrown as they are since the are possible causes of connectivity errors
        if (e.getCause() instanceof InitialisationException) {
            throw (InitialisationException) e.getCause();
        }
        if (e.getCause() instanceof ConfigurationException) {
            throw (ConfigurationException) e.getCause();
        }
        throw e;
    }
}
Also used : ServiceConfigurator(org.mule.runtime.api.config.custom.ServiceConfigurator) APP_HOME_DIRECTORY_PROPERTY(org.mule.runtime.core.api.config.MuleProperties.APP_HOME_DIRECTORY_PROPERTY) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) DomainMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.domain.DomainMuleContextBuilder) ArtifactContextConfiguration(org.mule.runtime.deployment.model.api.artifact.ArtifactContextConfiguration) OBJECT_CLASSLOADER_REPOSITORY(org.mule.runtime.core.api.config.MuleProperties.OBJECT_CLASSLOADER_REPOSITORY) Arrays.asList(java.util.Arrays.asList) Map(java.util.Map) DefaultExtensionManagerFactory(org.mule.runtime.module.extension.api.manager.DefaultExtensionManagerFactory) Preconditions.checkState(org.mule.runtime.api.util.Preconditions.checkState) ErrorTypeRepositoryFactory.createCompositeErrorTypeRepository(org.mule.runtime.core.internal.exception.ErrorTypeRepositoryFactory.createCompositeErrorTypeRepository) ApplicationMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.application.ApplicationMuleContextBuilder) POLICY(org.mule.runtime.core.api.config.bootstrap.ArtifactType.POLICY) Collections.emptyList(java.util.Collections.emptyList) ArtifactPlugin(org.mule.runtime.deployment.model.api.plugin.ArtifactPlugin) PolicyMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.application.PolicyMuleContextBuilder) DefaultMuleConfiguration(org.mule.runtime.core.api.config.DefaultMuleConfiguration) DefaultMuleContextFactory(org.mule.runtime.core.api.context.DefaultMuleContextFactory) MuleRuntimeException(org.mule.runtime.api.exception.MuleRuntimeException) List(java.util.List) Domain(org.mule.runtime.deployment.model.api.domain.Domain) ArtifactConfigurationProcessor(org.mule.runtime.deployment.model.api.artifact.ArtifactConfigurationProcessor) APP(org.mule.runtime.core.api.config.bootstrap.ArtifactType.APP) Optional(java.util.Optional) OBJECT_POLICY_PROVIDER(org.mule.runtime.core.api.config.MuleProperties.OBJECT_POLICY_PROVIDER) ArtifactExtensionManagerFactory(org.mule.runtime.module.deployment.impl.internal.policy.ArtifactExtensionManagerFactory) ServiceRepository(org.mule.runtime.api.service.ServiceRepository) SimpleConfigurationBuilder(org.mule.runtime.core.api.config.builders.SimpleConfigurationBuilder) Optional.empty(java.util.Optional.empty) ClassLoaderRepository(org.mule.runtime.module.artifact.api.classloader.ClassLoaderRepository) ExtensionModelLoaderRepository(org.mule.runtime.module.extension.internal.loader.ExtensionModelLoaderRepository) ArtifactContext(org.mule.runtime.deployment.model.api.artifact.ArtifactContext) MuleContextListener(org.mule.runtime.core.api.context.notification.MuleContextListener) Preconditions.checkArgument(org.mule.runtime.api.util.Preconditions.checkArgument) HashMap(java.util.HashMap) APP_NAME_PROPERTY(org.mule.runtime.core.api.config.MuleProperties.APP_NAME_PROPERTY) Location(org.mule.runtime.api.component.location.Location) AtomicReference(java.util.concurrent.atomic.AtomicReference) ArrayList(java.util.ArrayList) UUID.getUUID(org.mule.runtime.core.api.util.UUID.getUUID) ArtifactObjectSerializer(org.mule.runtime.module.artifact.api.serializer.ArtifactObjectSerializer) MuleContext(org.mule.runtime.core.api.MuleContext) ArtifactDeclaration(org.mule.runtime.app.declaration.api.ArtifactDeclaration) ConfigurationBuilder(org.mule.runtime.core.api.config.ConfigurationBuilder) ClassUtils.withContextClassLoader(org.mule.runtime.core.api.util.ClassUtils.withContextClassLoader) LinkedList(java.util.LinkedList) Properties(java.util.Properties) ConfigurationException(org.mule.runtime.core.api.config.ConfigurationException) File(java.io.File) MuleContextBuilder(org.mule.runtime.core.api.context.MuleContextBuilder) ConnectivityTestingService(org.mule.runtime.api.connectivity.ConnectivityTestingService) PolicyProvider(org.mule.runtime.core.api.policy.PolicyProvider) DeployableArtifact(org.mule.runtime.deployment.model.api.DeployableArtifact) ArtifactType(org.mule.runtime.core.api.config.bootstrap.ArtifactType) ExtensionManagerFactory(org.mule.runtime.module.extension.api.manager.ExtensionManagerFactory) Collections(java.util.Collections) SimpleConfigurationBuilder(org.mule.runtime.core.api.config.builders.SimpleConfigurationBuilder) ConfigurationBuilder(org.mule.runtime.core.api.config.ConfigurationBuilder) ArtifactExtensionManagerFactory(org.mule.runtime.module.deployment.impl.internal.policy.ArtifactExtensionManagerFactory) ArtifactContext(org.mule.runtime.deployment.model.api.artifact.ArtifactContext) ArtifactObjectSerializer(org.mule.runtime.module.artifact.api.serializer.ArtifactObjectSerializer) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) MuleContext(org.mule.runtime.core.api.MuleContext) ConfigurationException(org.mule.runtime.core.api.config.ConfigurationException) ArtifactConfigurationProcessor(org.mule.runtime.deployment.model.api.artifact.ArtifactConfigurationProcessor) DomainMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.domain.DomainMuleContextBuilder) DefaultExtensionManagerFactory(org.mule.runtime.module.extension.api.manager.DefaultExtensionManagerFactory) PolicyMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.application.PolicyMuleContextBuilder) ServiceConfigurator(org.mule.runtime.api.config.custom.ServiceConfigurator) AtomicReference(java.util.concurrent.atomic.AtomicReference) ApplicationMuleContextBuilder(org.mule.runtime.module.deployment.impl.internal.application.ApplicationMuleContextBuilder) LinkedList(java.util.LinkedList) DefaultMuleContextFactory(org.mule.runtime.core.api.context.DefaultMuleContextFactory) MuleRuntimeException(org.mule.runtime.api.exception.MuleRuntimeException)

Aggregations

LinkedList (java.util.LinkedList)2 ServiceRepository (org.mule.runtime.api.service.ServiceRepository)2 File (java.io.File)1 ArrayList (java.util.ArrayList)1 Arrays.asList (java.util.Arrays.asList)1 Collections (java.util.Collections)1 Collections.emptyList (java.util.Collections.emptyList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Optional.empty (java.util.Optional.empty)1 Properties (java.util.Properties)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Test (org.junit.Test)1 Location (org.mule.runtime.api.component.location.Location)1 ServiceConfigurator (org.mule.runtime.api.config.custom.ServiceConfigurator)1 ConnectivityTestingService (org.mule.runtime.api.connectivity.ConnectivityTestingService)1 MuleRuntimeException (org.mule.runtime.api.exception.MuleRuntimeException)1 InitialisationException (org.mule.runtime.api.lifecycle.InitialisationException)1