public abstract class AbstractSailConnection extends Object implements SailConnection
Modifier and Type | Field and Description |
---|---|
protected ReentrantReadWriteLock |
connectionLock
Lock used to give the
close() method exclusive access to a connection. |
protected org.slf4j.Logger |
logger |
protected ReentrantLock |
updateLock
Lock used to prevent concurrent calls to update methods like addStatement, clear, commit, etc.
|
Constructor and Description |
---|
AbstractSailConnection(AbstractSail sailBase) |
Modifier and Type | Method and Description |
---|---|
void |
addStatement(Resource subj,
IRI pred,
Value obj,
Resource... contexts)
Adds a statement to the store.
|
void |
addStatement(UpdateContext op,
Resource subj,
IRI pred,
Value obj,
Resource... contexts)
The default implementation buffers added statements until the update operation is complete.
|
protected abstract void |
addStatementInternal(Resource subj,
IRI pred,
Value obj,
Resource... contexts) |
protected void |
autoStartTransaction()
Deprecated.
since 2.7.0. Use
verifyIsActive() instead. We should not automatically start a transaction
at the sail level. Instead, an exception should be thrown when an update is executed without first
starting a transaction. |
void |
begin()
Begins a transaction requiring
SailConnection.commit() or SailConnection.rollback() to be called to close the transaction. |
void |
begin(IsolationLevel level)
Begins a transaction with the specified
IsolationLevel level, requiring SailConnection.commit() or
SailConnection.rollback() to be called to close the transaction. |
void |
clear(Resource... contexts)
Removes all statements from the specified/all contexts.
|
protected abstract void |
clearInternal(Resource... contexts) |
void |
clearNamespaces()
Removes all namespace declarations from the repository.
|
protected abstract void |
clearNamespacesInternal() |
void |
close()
Closes the connection.
|
protected abstract void |
closeInternal() |
void |
commit()
Commits any updates that have been performed since the last time
SailConnection.commit() or SailConnection.rollback() was
called. |
protected abstract void |
commitInternal() |
void |
endUpdate(UpdateContext op)
Indicates that the given
op will not be used in any call again. |
protected void |
endUpdateInternal(UpdateContext op) |
CloseableIteration<? extends BindingSet,QueryEvaluationException> |
evaluate(TupleExpr tupleExpr,
Dataset dataset,
BindingSet bindings,
boolean includeInferred)
Evaluates the supplied TupleExpr on the data contained in this Sail object, using the (optional) dataset and
supplied bindings as input parameters.
|
protected abstract CloseableIteration<? extends BindingSet,QueryEvaluationException> |
evaluateInternal(TupleExpr tupleExpr,
Dataset dataset,
BindingSet bindings,
boolean includeInferred) |
void |
flush()
Flushes any pending updates and notify changes to listeners as appropriate.
|
CloseableIteration<? extends Resource,SailException> |
getContextIDs()
Returns the set of all unique context identifiers that are used to store statements.
|
protected abstract CloseableIteration<? extends Resource,SailException> |
getContextIDsInternal() |
protected Lock |
getExclusiveConnectionLock()
Deprecated.
Use
connectionLock directly instead. |
String |
getNamespace(String prefix)
Gets the namespace that is associated with the specified prefix, if any.
|
protected abstract String |
getNamespaceInternal(String prefix) |
CloseableIteration<? extends Namespace,SailException> |
getNamespaces()
Gets the namespaces relevant to the data contained in this Sail object.
|
protected abstract CloseableIteration<? extends Namespace,SailException> |
getNamespacesInternal() |
protected Lock |
getSharedConnectionLock()
Deprecated.
Use
connectionLock directly instead. |
CloseableIteration<? extends Statement,SailException> |
getStatements(Resource subj,
IRI pred,
Value obj,
boolean includeInferred,
Resource... contexts)
Gets all statements from the specified contexts that have a specific subject, predicate and/or object.
|
protected abstract CloseableIteration<? extends Statement,SailException> |
getStatementsInternal(Resource subj,
IRI pred,
Value obj,
boolean includeInferred,
Resource... contexts) |
protected IsolationLevel |
getTransactionIsolation()
Retrieve the currently set
IsolationLevel . |
protected Lock |
getTransactionLock()
Deprecated.
Use
updateLock directly instead. |
boolean |
isActive()
Indicates if a transaction is currently active on the connection.
|
protected boolean |
isActiveOperation() |
boolean |
isOpen()
Checks whether this SailConnection is open.
|
protected void |
iterationClosed(org.eclipse.rdf4j.sail.helpers.SailBaseIteration iter)
Called by
SailBaseIteration to indicate that it has been closed. |
protected boolean |
pendingAdds() |
boolean |
pendingRemovals()
Indicates if the Sail has any statement removal operations pending (not yet
flushed ) for the
current transaction. |
void |
prepare()
Checks for an error state in the active transaction that would force the transaction to be rolled back.
|
protected void |
prepareInternal() |
protected <T,E extends Exception> |
registerIteration(CloseableIteration<T,E> iter)
Registers an iteration as active by wrapping it in a
SailBaseIteration object and adding it to the list
of active iterations. |
void |
removeNamespace(String prefix)
Removes a namespace declaration by removing the association between a prefix and a namespace name.
|
protected abstract void |
removeNamespaceInternal(String prefix) |
void |
removeStatement(UpdateContext op,
Resource subj,
IRI pred,
Value obj,
Resource... contexts)
The default implementation buffers removed statements until the update operation is complete.
|
void |
removeStatements(Resource subj,
IRI pred,
Value obj,
Resource... contexts)
Removes all statements matching the specified subject, predicate and object from the repository.
|
protected abstract void |
removeStatementsInternal(Resource subj,
IRI pred,
Value obj,
Resource... contexts) |
void |
rollback()
Rolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.
|
protected abstract void |
rollbackInternal() |
void |
setNamespace(String prefix,
String name)
Sets the prefix for a namespace.
|
protected abstract void |
setNamespaceInternal(String prefix,
String name) |
long |
size(Resource... contexts)
Returns the number of (explicit) statements in the store, or in specific contexts.
|
protected abstract long |
sizeInternal(Resource... contexts) |
protected abstract void |
startTransactionInternal() |
void |
startUpdate(UpdateContext op)
Signals the start of an update operation.
|
protected boolean |
transactionActive() |
protected void |
verifyIsActive()
Verifies if a transaction is currently active.
|
protected void |
verifyIsOpen() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addStatement, addStatement, getStatements, hasStatement, removeStatement, removeStatements
protected final org.slf4j.Logger logger
protected final ReentrantReadWriteLock connectionLock
close()
method exclusive access to a connection.
protected final ReentrantLock updateLock
public AbstractSailConnection(AbstractSail sailBase)
public final boolean isOpen() throws SailException
SailConnection
isOpen
in interface SailConnection
SailException
SailConnection.close()
protected void verifyIsOpen() throws SailException
SailException
protected void verifyIsActive() throws SailException
SailException
if no transaction is active.SailException
- if no transaction is active.public void begin() throws SailException
SailConnection
SailConnection.commit()
or SailConnection.rollback()
to be called to close the transaction.
The transaction will use the default IsolationLevel
level for the SAIL, as returned by
Sail.getDefaultIsolationLevel()
.begin
in interface SailConnection
SailException
- If the connection could not start a transaction or if a transaction is already active on
this connection.public void begin(IsolationLevel level) throws SailException
SailConnection
IsolationLevel
level, requiring SailConnection.commit()
or
SailConnection.rollback()
to be called to close the transaction.begin
in interface SailConnection
level
- the transaction isolation level on which this transaction operates.UnknownSailTransactionStateException
- If the IsolationLevel is not supported by this implementationSailException
- If the connection could not start a transaction, if the supplied
transaction isolation level is not supported, or if a transaction is
already active on this connection.protected IsolationLevel getTransactionIsolation()
IsolationLevel
.IsolationLevel
. If no transaction is active, this may be null
.public boolean isActive() throws UnknownSailTransactionStateException
SailConnection
SailConnection.begin()
has
been called, and becomes inactive after SailConnection.commit()
or SailConnection.rollback()
has been called.isActive
in interface SailConnection
true
iff a transaction is active, false
iff no transaction is active.UnknownSailTransactionStateException
- if the transaction state can not be determined (this can happen for
instance when communication between client and server fails or times
out).public final void close() throws SailException
SailConnection
close
in interface AutoCloseable
close
in interface SailConnection
SailException
public final CloseableIteration<? extends BindingSet,QueryEvaluationException> evaluate(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred) throws SailException
SailConnection
evaluate
in interface SailConnection
tupleExpr
- The tuple expression to evaluate.dataset
- The dataset to use for evaluating the query, null to use the Sail's default
dataset.bindings
- A set of input parameters for the query evaluation. The keys reference variable names that
should be bound to the value they map to.includeInferred
- Indicates whether inferred triples are to be considered in the query result. If false, no
inferred statements are returned; if true, inferred statements are returned if availableSailException
- If the Sail object encountered an error or unexpected situation internally.public final CloseableIteration<? extends Resource,SailException> getContextIDs() throws SailException
SailConnection
getContextIDs
in interface SailConnection
SailException
public final CloseableIteration<? extends Statement,SailException> getStatements(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) throws SailException
SailConnection
getStatements
in interface SailConnection
subj
- A Resource specifying the subject, or null for a wildcard.pred
- A URI specifying the predicate, or null for a wildcard.obj
- A Value specifying the object, or null for a wildcard.includeInferred
- if false, no inferred statements are returned; if true, inferred statements are returned
if availablecontexts
- The context(s) to get the data from. Note that this parameter is a vararg and as such is
optional. If no contexts are specified the method operates on the entire repository. A
null value can be used to match context-less statements.SailException
- If the Sail object encountered an error or unexpected situation internally.public final long size(Resource... contexts) throws SailException
SailConnection
size
in interface SailConnection
contexts
- The context(s) to determine the size of. Note that this parameter is a vararg and as such is
optional. If no contexts are specified the method operates on the entire repository. A
null value can be used to match context-less statements.SailException
protected final boolean transactionActive()
@Deprecated protected void autoStartTransaction() throws SailException
verifyIsActive()
instead. We should not automatically start a transaction
at the sail level. Instead, an exception should be thrown when an update is executed without first
starting a transaction.SailConnection.isActive()
and throw a SailException if not. Implementors
can use verifyIsActive()
as a convenience method for this check.SailException
- if no transaction is active.public void flush() throws SailException
SailConnection
SailConnection.prepare()
. This method may be called multiple times
within the same transaction.flush
in interface SailConnection
SailException
- If the updates could not be processed, for example because no transaction is
active.public final void prepare() throws SailException
SailConnection
SailConnection.commit()
or
SailConnection.rollback()
. A call to this method must be followed by (in the same thread) with a call to
SailConnection.prepare()
, SailConnection.commit()
, SailConnection.rollback()
, or SailConnection.close()
. This method may be called
multiple times within the same transaction by the same thread. If this method returns normally, the caller can
reasonably expect that a subsequent call to SailConnection.commit()
will also return normally. If this method returns
with an exception the caller should treat the exception as if it came from a call to SailConnection.commit()
.prepare
in interface SailConnection
UnknownSailTransactionStateException
- If the transaction state can not be determined (this can happen for
instance when communication between client and server fails or
times-out). It does not indicate a problem with the integrity of the
store.SailException
- If there is an active transaction and it cannot be committed.public final void commit() throws SailException
SailConnection
SailConnection.commit()
or SailConnection.rollback()
was
called.commit
in interface SailConnection
UnknownSailTransactionStateException
- If the transaction state can not be determined (this can happen for
instance when communication between client and server fails or
times-out). It does not indicate a problem with the integrity of the
store.SailException
- If the SailConnection could not be committed.public final void rollback() throws SailException
SailConnection
rollback
in interface SailConnection
UnknownSailTransactionStateException
- If the transaction state can not be determined (this can happen for
instance when communication between client and server fails or
times-out). It does not indicate a problem with the integrity of the
store.SailException
- If the SailConnection could not be rolled back.public final void addStatement(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
SailConnection
addStatement
in interface SailConnection
subj
- The subject of the statement to add.pred
- The predicate of the statement to add.obj
- The object of the statement to add.contexts
- The context(s) to add the statement to. Note that this parameter is a vararg and as such is
optional. If no contexts are specified, a context-less statement will be added.SailException
- If the statement could not be added, for example because no transaction is active.public final void removeStatements(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
SailConnection
removeStatements
in interface SailConnection
subj
- The subject of the statement that should be removed, or null to indicate a wildcard.pred
- The predicate of the statement that should be removed, or null to indicate a wildcard.obj
- The object of the statement that should be removed , or null to indicate a wildcard. *contexts
- The context(s) from which to remove the statement. Note that this parameter is a vararg and as
such is optional. If no contexts are specified the method operates on the entire repository. A
null value can be used to match context-less statements.SailException
- If the statement could not be removed, for example because no transaction is
active.public void startUpdate(UpdateContext op) throws SailException
SailConnection
op
maybe passed to subsequent
SailConnection.addStatement(UpdateContext, Resource, IRI, Value, Resource...)
or
SailConnection.removeStatement(UpdateContext, Resource, IRI, Value, Resource...)
calls before
SailConnection.endUpdate(UpdateContext)
is called.startUpdate
in interface SailConnection
SailException
public void addStatement(UpdateContext op, Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
addStatement
in interface SailConnection
op
- operation properties of the UpdateExpr
operation producing these statements.subj
- The subject of the statement to add.pred
- The predicate of the statement to add.obj
- The object of the statement to add.contexts
- The context(s) to add the statement to. Note that this parameter is a vararg and as such is
optional. If no contexts are specified, a context-less statement will be added.SailException
- If the statement could not be added, for example because no transaction is active.public void removeStatement(UpdateContext op, Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
removeStatement
in interface SailConnection
op
- operation properties of the UpdateExpr
operation removing these statements.subj
- The subject of the statement that should be removed.pred
- The predicate of the statement that should be removed.obj
- The object of the statement that should be removed.contexts
- The context(s) from which to remove the statement. Note that this parameter is a vararg and as
such is optional. If no contexts are specified the method operates on the entire repository. A
null value can be used to match context-less statements.SailException
- If the statement could not be removed, for example because no transaction is
active.public final void endUpdate(UpdateContext op) throws SailException
SailConnection
op
will not be used in any call again. Implementations should use this to
flush of any temporary operation states that may have occurred.endUpdate
in interface SailConnection
SailException
protected void endUpdateInternal(UpdateContext op) throws SailException
SailException
public final void clear(Resource... contexts) throws SailException
SailConnection
clear
in interface SailConnection
contexts
- The context(s) from which to remove the statements. Note that this parameter is a vararg and as
such is optional. If no contexts are specified the method operates on the entire repository. A
null value can be used to match context-less statements.SailException
- If the statements could not be removed.public final CloseableIteration<? extends Namespace,SailException> getNamespaces() throws SailException
SailConnection
getNamespaces
in interface SailConnection
SailException
- If the Sail object encountered an error or unexpected situation internally.public final String getNamespace(String prefix) throws SailException
SailConnection
getNamespace
in interface SailConnection
prefix
- A namespace prefix, or an empty string in case of the default namespace.SailException
- If the Sail object encountered an error or unexpected situation internally.public final void setNamespace(String prefix, String name) throws SailException
SailConnection
setNamespace
in interface SailConnection
prefix
- The new prefix, or an empty string in case of the default namespace.name
- The namespace name that the prefix maps to.SailException
- If the Sail object encountered an error or unexpected situation internally.public final void removeNamespace(String prefix) throws SailException
SailConnection
removeNamespace
in interface SailConnection
prefix
- The namespace prefix, or an empty string in case of the default namespace.SailException
- If the Sail object encountered an error or unexpected situation internally.public final void clearNamespaces() throws SailException
SailConnection
clearNamespaces
in interface SailConnection
SailException
- If the Sail object encountered an error or unexpected situation internally.public boolean pendingRemovals()
SailConnection
flushed
) for the
current transaction.pendingRemovals
in interface SailConnection
SailConnection.flush()
protected boolean pendingAdds()
protected Lock getSharedConnectionLock() throws SailException
connectionLock
directly instead.SailException
protected Lock getExclusiveConnectionLock() throws SailException
connectionLock
directly instead.SailException
@Deprecated protected Lock getTransactionLock() throws SailException
updateLock
directly instead.SailException
protected <T,E extends Exception> CloseableIteration<T,E> registerIteration(CloseableIteration<T,E> iter)
SailBaseIteration
object and adding it to the list
of active iterations.protected void iterationClosed(org.eclipse.rdf4j.sail.helpers.SailBaseIteration iter)
SailBaseIteration
to indicate that it has been closed.protected abstract void closeInternal() throws SailException
SailException
protected abstract CloseableIteration<? extends BindingSet,QueryEvaluationException> evaluateInternal(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings, boolean includeInferred) throws SailException
SailException
protected abstract CloseableIteration<? extends Resource,SailException> getContextIDsInternal() throws SailException
SailException
protected abstract CloseableIteration<? extends Statement,SailException> getStatementsInternal(Resource subj, IRI pred, Value obj, boolean includeInferred, Resource... contexts) throws SailException
SailException
protected abstract long sizeInternal(Resource... contexts) throws SailException
SailException
protected abstract void startTransactionInternal() throws SailException
SailException
protected void prepareInternal() throws SailException
SailException
protected abstract void commitInternal() throws SailException
SailException
protected abstract void rollbackInternal() throws SailException
SailException
protected abstract void addStatementInternal(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
SailException
protected abstract void removeStatementsInternal(Resource subj, IRI pred, Value obj, Resource... contexts) throws SailException
SailException
protected abstract void clearInternal(Resource... contexts) throws SailException
SailException
protected abstract CloseableIteration<? extends Namespace,SailException> getNamespacesInternal() throws SailException
SailException
protected abstract String getNamespaceInternal(String prefix) throws SailException
SailException
protected abstract void setNamespaceInternal(String prefix, String name) throws SailException
SailException
protected abstract void removeNamespaceInternal(String prefix) throws SailException
SailException
protected abstract void clearNamespacesInternal() throws SailException
SailException
protected boolean isActiveOperation()
Copyright © 2015-2019 Eclipse Foundation. All Rights Reserved.