/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.provider; import org.ldaptive.ConnectionConfig; /** * Provides access to a provider specific connection factory. * * @param <T> type of provider config for this provider * * @author Middleware Services */ public interface Provider<T extends ProviderConfig> { /** * Returns the provider configuration. * * @return provider configuration */ T getProviderConfig(); /** * Sets the provider configuration. * * @param pc provider configuration */ void setProviderConfig(T pc); /** * Returns the connection factory for this provider. * * @param cc connection configuration * * @return connection factory */ ProviderConnectionFactory<T> getConnectionFactory(ConnectionConfig cc); /** * Creates a new instance of this provider. * * @return new instance of this provider */ Provider<T> newInstance(); }