public class ConnectionPluginManager extends java.lang.Object implements CanReleaseResources
ConnectionPlugin for each connection.
THIS CLASS IS NOT MULTI-THREADING SAFE IT'S EXPECTED TO HAVE ONE INSTANCE OF THIS MANAGER PER JDBC CONNECTION
| Modifier and Type | Field and Description |
|---|---|
protected ConnectionProvider |
connectionProvider |
protected ConnectionWrapper |
connectionWrapper |
protected static java.lang.String |
DEFAULT_PLUGINS |
protected java.util.Map<java.lang.String,software.amazon.jdbc.ConnectionPluginManager.PluginChainJdbcCallable> |
pluginChainFuncMap |
protected static java.util.Map<java.lang.String,java.lang.Class<? extends ConnectionPluginFactory>> |
pluginFactoriesByCode |
protected java.util.ArrayList<ConnectionPlugin> |
plugins |
protected java.util.Properties |
props |
| Constructor and Description |
|---|
ConnectionPluginManager(ConnectionProvider connectionProvider,
ConnectionWrapper connectionWrapper) |
| Modifier and Type | Method and Description |
|---|---|
java.sql.Connection |
connect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection) |
<T,E extends java.lang.Exception> |
execute(java.lang.Class<T> resultType,
java.lang.Class<E> exceptionClass,
java.lang.Object methodInvokeOn,
java.lang.String methodName,
JdbcCallable<T,E> jdbcMethodFunc,
java.lang.Object[] jdbcMethodArgs) |
protected <T,E extends java.lang.Exception> |
executeWithSubscribedPlugins(java.lang.String methodName,
software.amazon.jdbc.ConnectionPluginManager.PluginPipeline<T,E> pluginPipeline,
JdbcCallable<T,E> jdbcMethodFunc) |
ConnectionWrapper |
getConnectionWrapper() |
void |
init(PluginService pluginService,
java.util.Properties props,
PluginManagerService pluginManagerService)
Initialize a chain of
ConnectionPlugin using their corresponding ConnectionPluginFactory. |
void |
initHostProvider(java.lang.String driverProtocol,
java.lang.String initialUrl,
java.util.Properties props,
HostListProviderService hostListProviderService) |
void |
lock() |
protected <T,E extends java.lang.Exception> |
makePluginChainFunc(@NonNull java.lang.String methodName) |
java.util.EnumSet<OldConnectionSuggestedAction> |
notifyConnectionChanged(@NonNull java.util.EnumSet<NodeChangeOptions> changes,
@Nullable ConnectionPlugin skipNotificationForThisPlugin) |
void |
notifyNodeListChanged(@NonNull java.util.Map<java.lang.String,java.util.EnumSet<NodeChangeOptions>> changes) |
protected <E extends java.lang.Exception> |
notifySubscribedPlugins(java.lang.String methodName,
software.amazon.jdbc.ConnectionPluginManager.PluginPipeline<java.lang.Void,E> pluginPipeline,
ConnectionPlugin skipNotificationForThisPlugin) |
void |
releaseResources()
Release all dangling resources held by the connection plugins associated with a single
connection.
|
void |
unlock() |
protected static final java.util.Map<java.lang.String,java.lang.Class<? extends ConnectionPluginFactory>> pluginFactoriesByCode
protected static final java.lang.String DEFAULT_PLUGINS
protected java.util.Properties props
protected java.util.ArrayList<ConnectionPlugin> plugins
protected final ConnectionProvider connectionProvider
protected final ConnectionWrapper connectionWrapper
protected final java.util.Map<java.lang.String,software.amazon.jdbc.ConnectionPluginManager.PluginChainJdbcCallable> pluginChainFuncMap
public ConnectionPluginManager(ConnectionProvider connectionProvider, ConnectionWrapper connectionWrapper)
public void lock()
public void unlock()
public void init(PluginService pluginService, java.util.Properties props, PluginManagerService pluginManagerService) throws java.sql.SQLException
ConnectionPlugin using their corresponding ConnectionPluginFactory. If PropertyDefinition.PLUGINS is provided by the user,
initialize the chain with the given connection plugins in the order they are specified.
The DefaultConnectionPlugin will always be initialized and attached as the last
connection plugin in the chain.
pluginService - A reference to a plugin service that plugin can use.props - The configuration of the connection.pluginManagerService - A reference to a plugin manager service.java.sql.SQLException - if errors occurred during the execution.protected <T,E extends java.lang.Exception> T executeWithSubscribedPlugins(java.lang.String methodName,
software.amazon.jdbc.ConnectionPluginManager.PluginPipeline<T,E> pluginPipeline,
JdbcCallable<T,E> jdbcMethodFunc)
throws E extends java.lang.Exception
E extends java.lang.Exceptionprotected <T,E extends java.lang.Exception> @Nullable software.amazon.jdbc.ConnectionPluginManager.PluginChainJdbcCallable<T,E> makePluginChainFunc(@NonNull java.lang.String methodName)
protected <E extends java.lang.Exception> void notifySubscribedPlugins(java.lang.String methodName,
software.amazon.jdbc.ConnectionPluginManager.PluginPipeline<java.lang.Void,E> pluginPipeline,
ConnectionPlugin skipNotificationForThisPlugin)
throws E extends java.lang.Exception
E extends java.lang.Exceptionpublic ConnectionWrapper getConnectionWrapper()
public <T,E extends java.lang.Exception> T execute(java.lang.Class<T> resultType,
java.lang.Class<E> exceptionClass,
java.lang.Object methodInvokeOn,
java.lang.String methodName,
JdbcCallable<T,E> jdbcMethodFunc,
java.lang.Object[] jdbcMethodArgs)
throws E extends java.lang.Exception
E extends java.lang.Exceptionpublic java.sql.Connection connect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection)
throws java.sql.SQLException
java.sql.SQLExceptionpublic void initHostProvider(java.lang.String driverProtocol,
java.lang.String initialUrl,
java.util.Properties props,
HostListProviderService hostListProviderService)
throws java.sql.SQLException
java.sql.SQLExceptionpublic java.util.EnumSet<OldConnectionSuggestedAction> notifyConnectionChanged(@NonNull java.util.EnumSet<NodeChangeOptions> changes, @Nullable ConnectionPlugin skipNotificationForThisPlugin)
public void notifyNodeListChanged(@NonNull java.util.Map<java.lang.String,java.util.EnumSet<NodeChangeOptions>> changes)
public void releaseResources()
releaseResources in interface CanReleaseResources