/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.config.builders; import static org.mule.runtime.core.api.lifecycle.LifecycleUtils.startIfNeeded; import org.mule.weave.v2.el.WeaveDefaultExpressionLanguageFactoryService; import org.mule.runtime.api.el.DefaultExpressionLanguageFactoryService; import org.mule.runtime.api.exception.MuleException; import org.mule.runtime.api.exception.MuleRuntimeException; import org.mule.runtime.api.service.Service; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.core.api.registry.MuleRegistry; import org.mule.runtime.core.config.builders.AbstractConfigurationBuilder; import org.mule.runtime.core.registry.SpiServiceRegistry; /** * Provides the basic {@link Service}s infrastructure required by the Mule runtime to start in embedded mode. * <p> * TODO MULE-9655 Remove this when embedded mode supports registering services from the zip file * * @since 4.0 */ public class BasicRuntimeServicesConfigurationBuilder extends AbstractConfigurationBuilder { @Override protected void doConfigure(MuleContext muleContext) throws Exception { MuleRegistry registry = muleContext.getRegistry(); new SpiServiceRegistry().lookupProviders(Service.class, BasicRuntimeServicesConfigurationBuilder.class.getClassLoader()) .forEach(service -> { try { startIfNeeded(service); registry.registerObject(service.getName(), service); } catch (MuleException e) { throw new MuleRuntimeException(e); } }); DefaultExpressionLanguageFactoryService weaveExpressionExecutor = new WeaveDefaultExpressionLanguageFactoryService(); registry.registerObject(weaveExpressionExecutor.getName(), weaveExpressionExecutor); } }