/* * 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.deployment.model.api.artifact; import static java.lang.Thread.currentThread; import org.mule.runtime.core.api.config.ConfigurationException; import org.mule.runtime.core.registry.SpiServiceRegistry; /** * Implementation of this interface are responsible of processing the configuration files of a Mule artifact and create an * {@link ArtifactContext}. * * @since 4.0 */ public interface ArtifactConfigurationProcessor { /** * Discovers a {@link ArtifactConfigurationProcessor} using SPI. One and only one must be present in the classpath. * * @return an {@link ArtifactConfigurationProcessor} discovered using SPI. */ static ArtifactConfigurationProcessor discover() { return new SpiServiceRegistry().lookupProvider(ArtifactConfigurationProcessor.class, currentThread().getContextClassLoader()); } /** * Creates an {@link ArtifactContext} for an artifact based on the configuration files of the artifact. * * @param artifactContextConfiguration the configuration of the artifact. * @return an {@link ArtifactContext} * @throws ConfigurationException if there was a problem processing the configuration of the artifact. */ ArtifactContext createArtifactContext(ArtifactContextConfiguration artifactContextConfiguration) throws ConfigurationException; }