/*
* 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.module.extension.internal.runtime.config;
import org.mule.runtime.api.connection.ConnectionProvider;
import org.mule.runtime.api.meta.model.ExtensionModel;
import org.mule.runtime.api.meta.model.config.ConfigurationModel;
import org.mule.runtime.core.api.MuleContext;
import org.mule.runtime.extension.api.runtime.ConfigurationProvider;
import org.mule.runtime.module.extension.internal.runtime.DynamicConfigPolicy;
import org.mule.runtime.module.extension.internal.runtime.resolver.ConnectionProviderValueResolver;
import org.mule.runtime.module.extension.internal.runtime.resolver.ResolverSet;
import org.mule.runtime.module.extension.internal.runtime.resolver.ValueResolver;
/**
* A factory which creates instances of {@link ConfigurationProvider}
*
* @since 4.0
*/
public interface ConfigurationProviderFactory {
/**
* Creates a new {@link ConfigurationProvider} which servers instances of a dynamic configuration
*
* @param name the provider's name
* @param extensionModel the {@link ExtensionModel} which owns the {@code configurationModel}
* @param configurationModel the {@link ConfigurationModel} that describes the configuration instances to be returned
* @param resolverSet a {@link ResolverSet} for the configuration's attributes
* @param connectionProviderResolver A {@link ValueResolver} to obtain a {@link ConnectionProvider}
* @param dynamicConfigPolicy a {@link DynamicConfigPolicy} in case the configuration is dynamic
* @return a {@link ConfigurationProvider}
* @throws Exception if anything goes wrong
*/
ConfigurationProvider createDynamicConfigurationProvider(String name,
ExtensionModel extensionModel,
ConfigurationModel configurationModel,
ResolverSet resolverSet,
ConnectionProviderValueResolver connectionProviderResolver,
DynamicConfigPolicy dynamicConfigPolicy,
MuleContext muleContext)
throws Exception;
/**
* Creates a new {@link ConfigurationProvider} which servers a static configuration instance
*
* @param name the provider's name
* @param extensionModel the {@link ExtensionModel} which owns the {@code configurationModel}
* @param configurationModel the {@link ConfigurationModel} that describes the configuration instances to be returned
* @param resolverSet a {@link ResolverSet} for the configuration's attributes
* @param connectionProviderResolver A {@link ValueResolver} to obtain a {@link ConnectionProvider}
* @param muleContext the {@link MuleContext} that will own the configuration instances
* @return a {@link ConfigurationProvider}
* @throws Exception if anything goes wrong
*/
ConfigurationProvider createStaticConfigurationProvider(String name,
ExtensionModel extensionModel,
ConfigurationModel configurationModel,
ResolverSet resolverSet,
ConnectionProviderValueResolver connectionProviderResolver,
MuleContext muleContext)
throws Exception;
}