public abstract class AbstractSession extends Object implements Session
This is primarly intended to make mocking easier.
Session.State
Constructor and Description |
---|
AbstractSession() |
Modifier and Type | Method and Description |
---|---|
void |
checkNotInEventLoop()
Checks that the current thread is not one of the Netty I/O threads used by the driver.
|
void |
close()
Initiates a shutdown of this session instance and blocks until
that shutdown completes.
|
ResultSet |
execute(Statement statement)
Executes the provided query.
|
ResultSet |
execute(String query)
Executes the provided query.
|
ResultSet |
execute(String query,
Map<String,Object> values)
Executes the provided query using the provided named values.
|
ResultSet |
execute(String query,
Object... values)
Executes the provided query using the provided values.
|
ResultSetFuture |
executeAsync(String query)
Executes the provided query asynchronously.
|
ResultSetFuture |
executeAsync(String query,
Map<String,Object> values)
Executes the provided query asynchronously using the provided values.
|
ResultSetFuture |
executeAsync(String query,
Object... values)
Executes the provided query asynchronously using the provided values.
|
PreparedStatement |
prepare(RegularStatement statement)
Prepares the provided query.
|
PreparedStatement |
prepare(String query)
Prepares the provided query string.
|
com.google.common.util.concurrent.ListenableFuture<PreparedStatement> |
prepareAsync(RegularStatement statement)
Prepares the provided query asynchronously.
|
com.google.common.util.concurrent.ListenableFuture<PreparedStatement> |
prepareAsync(String query)
Prepares the provided query string asynchronously.
|
protected abstract com.google.common.util.concurrent.ListenableFuture<PreparedStatement> |
prepareAsync(String query,
Map<String,ByteBuffer> customPayload)
Prepares the provided query string asynchronously,
sending along the provided custom payload, if any.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
closeAsync, executeAsync, getCluster, getLoggedKeyspace, getState, init, initAsync, isClosed
public ResultSet execute(String query)
This is a convenience method for execute(new SimpleStatement(query))
.
public ResultSet execute(String query, Object... values)
This is a convenience method for execute(new SimpleStatement(query, values))
.
execute
in interface Session
query
- the CQL query to execute.values
- values required for the execution of query
. See
SimpleStatement.SimpleStatement(String, Object...)
for more details.public ResultSet execute(String query, Map<String,Object> values)
This is a convenience method for execute(new SimpleStatement(query, values))
.
execute
in interface Session
query
- the CQL query to execute.values
- values required for the execution of query
. See
SimpleStatement.SimpleStatement(String, Map)
for more details.public ResultSet execute(Statement statement)
This method blocks until at least some result has been received from the database. However, for SELECT queries, it does not guarantee that the result has been received in full. But it does guarantee that some response has been received from the database, and in particular guarantees that if the request is invalid, an exception will be thrown by this method.
public ResultSetFuture executeAsync(String query)
This is a convenience method for executeAsync(new SimpleStatement(query))
.
executeAsync
in interface Session
query
- the CQL query to execute.public ResultSetFuture executeAsync(String query, Map<String,Object> values)
This is a convenience method for executeAsync(new SimpleStatement(query, values))
.
executeAsync
in interface Session
query
- the CQL query to execute.values
- values required for the execution of query
. See
SimpleStatement.SimpleStatement(String, Map)
for more details.public ResultSetFuture executeAsync(String query, Object... values)
This is a convenience method for executeAsync(new SimpleStatement(query, values))
.
executeAsync
in interface Session
query
- the CQL query to execute.values
- values required for the execution of query
. See
SimpleStatement.SimpleStatement(String, Object...)
for more details.public PreparedStatement prepare(String query)
public PreparedStatement prepare(RegularStatement statement)
This method behaves like Session.prepare(String)
,
but note that the resulting PreparedStatement
will inherit the query properties
set on statement
. Concretely, this means that in the following code:
RegularStatement toPrepare = new SimpleStatement("SELECT * FROM test WHERE k=?").setConsistencyLevel(ConsistencyLevel.QUORUM); PreparedStatement prepared = session.prepare(toPrepare); session.execute(prepared.bind("someValue"));the final execution will be performed with Quorum consistency.
Please note that if the same CQL statement is prepared more than once, all
calls to this method will return the same PreparedStatement
object
but the method will still apply the properties of the prepared
Statement
to this object.
public com.google.common.util.concurrent.ListenableFuture<PreparedStatement> prepareAsync(String query)
This method is equivalent to Session.prepare(String)
except that it
does not block but return a future instead. Any error during preparation will
be thrown when accessing the future, not by this method itself.
prepareAsync
in interface Session
query
- the CQL query string to preparequery
.public com.google.common.util.concurrent.ListenableFuture<PreparedStatement> prepareAsync(RegularStatement statement)
Session.prepareAsync(String)
,
but note that the resulting PreparedStatement
will inherit the query properties
set on statement
. Concretely, this means that in the following code:
RegularStatement toPrepare = new SimpleStatement("SELECT * FROM test WHERE k=?").setConsistencyLevel(ConsistencyLevel.QUORUM); PreparedStatement prepared = session.prepare(toPrepare); session.execute(prepared.bind("someValue"));the final execution will be performed with Quorum consistency.
Please note that if the same CQL statement is prepared more than once, all
calls to this method will return the same PreparedStatement
object
but the method will still apply the properties of the prepared
Statement
to this object.
prepareAsync
in interface Session
statement
- the statement to preparestatement
.Session.prepare(RegularStatement)
protected abstract com.google.common.util.concurrent.ListenableFuture<PreparedStatement> prepareAsync(String query, Map<String,ByteBuffer> customPayload)
query
- the CQL query string to preparecustomPayload
- the custom payload to send along the query, or null
if no payload is to be sentquery
.public void close()
This method is a shortcut for closeAsync().get()
.
Note that this method does not close the corresponding Cluster
instance (which holds additional resources, in particular internal
executors that must be shut down in order for the client program to
terminate).
If you want to do so, use Cluster.close()
, but note that it will
close all sessions created from that cluster.
public void checkNotInEventLoop()
This method is called from all the synchronous methods of this class to prevent deadlock issues.
User code extending this class can also call this method at any time to check if any code making blocking calls is being wrongly executed on a Netty I/O thread.
Note that the check performed by this method has a small overhead; if
that is an issue, checks can be disabled by setting the System property
com.datastax.driver.CHECK_IO_DEADLOCKS
to false
.
IllegalStateException
- if the current thread is one of the Netty I/O thread used by the driver.