public abstract class AbstractRoutingSessionFactory extends Object implements SessionFactory, InitializingBean
SessionFactory
implementation that routes getSession()
calls to one of various target
factories
based on a lookup key. The latter is usually (but not necessarily) determined
through some thread-bound transaction context.setTargetSessionFactories(Map)
,
setDefaultTargetSessionFactory(Object)
,
determineCurrentLookupKey()
,
SessionFactoryLookup
Constructor and Description |
---|
AbstractRoutingSessionFactory() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
protected abstract Object |
determineCurrentLookupKey()
Determine the current lookup key.
|
protected SessionFactory |
determineTargetSessionFactory()
Retrieve the current target
SessionFactory . |
com.datastax.driver.core.Session |
getSession()
Attempts to establish a
Session with the connection infrastructure that this SessionFactory object
represents. |
protected Object |
resolveSpecifiedLookupKey(Object lookupKey)
Resolve the given lookup key object, as specified in the
setTargetSessionFactories(Map) map, into the
actual lookup key to be used for matching with the current lookup key . |
protected SessionFactory |
resolveSpecifiedSessionFactory(Object sessionFactory)
Resolve the specified
sessionFactory object into a SessionFactory instance. |
void |
setDefaultTargetSessionFactory(Object defaultTargetSessionFactory)
Specify the default target
SessionFactory , if any. |
void |
setLenientFallback(boolean lenientFallback)
Specify whether to apply a lenient fallback to the default
SessionFactory if no specific
SessionFactory could be found for the current lookup key. |
void |
setSessionFactoryLookup(SessionFactoryLookup sessionFactoryLookup)
Set the
SessionFactoryLookup implementation to use for resolving session factory name Strings in the
setTargetSessionFactories(Map) map. |
void |
setTargetSessionFactories(Map<Object,Object> targetSessionFactories)
Specify the map of target session factories, with the lookup key as key.
|
public void setTargetSessionFactories(Map<Object,Object> targetSessionFactories)
The mapped value can either be a corresponding SessionFactory
instance or a data source name String (to be
resolved via a setSessionFactoryLookup(SessionFactoryLookup)
).
The key can be of arbitrary type; this class implements the generic lookup process only. The concrete key
representation will be handled by resolveSpecifiedLookupKey(Object)
and
determineCurrentLookupKey()
.
public void setDefaultTargetSessionFactory(Object defaultTargetSessionFactory)
SessionFactory
, if any.
The mapped value can either be a corresponding SessionFactory
instance or a data source name String (to be
resolved via a setSessionFactoryLookup(SessionFactoryLookup)
).
This SessionFactory
will be used as target if none of the keyed setTargetSessionFactories(Map)
match the determineCurrentLookupKey()
current lookup key.
public void setLenientFallback(boolean lenientFallback)
SessionFactory
if no specific
SessionFactory
could be found for the current lookup key.
Default is true, accepting lookup keys without a corresponding entry in the target
SessionFactory
map - simply falling back to the default SessionFactory
in that case.
Switch this flag to false if you would prefer the fallback to only apply if the lookup key was
null. Lookup keys without a SessionFactory
entry will then lead to an
IllegalStateException
.
lenientFallback
- true to accepting lookup keys without a corresponding entry in the target.setTargetSessionFactories(java.util.Map<java.lang.Object, java.lang.Object>)
,
setDefaultTargetSessionFactory(java.lang.Object)
,
determineCurrentLookupKey()
public void setSessionFactoryLookup(@Nullable SessionFactoryLookup sessionFactoryLookup)
SessionFactoryLookup
implementation to use for resolving session factory name Strings in the
setTargetSessionFactories(Map)
map.
Default is a MapSessionFactoryLookup
, allowing a string keyed map of session
factories
.
sessionFactoryLookup
- the SessionFactoryLookup
. Defaults to MapSessionFactoryLookup
if
null.public com.datastax.driver.core.Session getSession()
SessionFactory
Session
with the connection infrastructure that this SessionFactory
object
represents.getSession
in interface SessionFactory
Session
to Apache Cassandra.public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
protected Object resolveSpecifiedLookupKey(Object lookupKey)
setTargetSessionFactories(Map)
map, into the
actual lookup key to be used for matching with the current lookup key
.
The default implementation simply returns the given key as-is.
lookupKey
- the lookup key object as specified by the userprotected SessionFactory resolveSpecifiedSessionFactory(Object sessionFactory) throws IllegalArgumentException
sessionFactory
object into a SessionFactory
instance.
The default implementation handles SessionFactory
instances and session factory names (to be resolved via a
setSessionFactoryLookup(SessionFactoryLookup)
).
sessionFactory
- the session factory value object as specified in the setTargetSessionFactories(Map)
mapSessionFactory
IllegalArgumentException
- in case of an unsupported value type.SessionFactoryLookupFailureException
- if the lookup failed.protected SessionFactory determineTargetSessionFactory()
SessionFactory
. Determines the current
lookup key
, performs a lookup in the setTargetSessionFactories(Map)
map, falls back to the specified
default target SessionFactory
if necessary.determineCurrentLookupKey()
@Nullable protected abstract Object determineCurrentLookupKey()
Allows for arbitrary keys.
Copyright © 2011–2018 Pivotal Software, Inc.. All rights reserved.