Class InterceptingRepositoryConnectionWrapper
- java.lang.Object
-
- org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection
-
- org.eclipse.rdf4j.repository.base.RepositoryConnectionWrapper
-
- org.eclipse.rdf4j.repository.event.base.InterceptingRepositoryConnectionWrapper
-
- All Implemented Interfaces:
AutoCloseable
,DelegatingRepositoryConnection
,InterceptingRepositoryConnection
,RepositoryConnection
public class InterceptingRepositoryConnectionWrapper extends RepositoryConnectionWrapper implements InterceptingRepositoryConnection
Wrapper that notifies interceptors of events on RepositoryConnections before they happen. Any interceptor can block the operation by returning true from the relevant notification method. To do so will also cause the notification process to stop, i.e. no other interceptors will be notified. The order in which interceptors are notified is unspecified.- Author:
- Herko ter Horst
- See Also:
InterceptingRepositoryWrapper
-
-
Field Summary
-
Fields inherited from class org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection
logger
-
-
Constructor Summary
Constructors Constructor Description InterceptingRepositoryConnectionWrapper(Repository repository, RepositoryConnection connection)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addRepositoryConnectionInterceptor(RepositoryConnectionInterceptor interceptor)
Registers a RepositoryConnectionInterceptor that will receive notifications of operations that are performed on this connection.void
addWithoutCommit(Resource subject, IRI predicate, Value object, Resource... contexts)
void
begin()
Begins a new transaction, requiringRepositoryConnection.commit()
orRepositoryConnection.rollback()
to be called to end the transaction.void
clear(Resource... contexts)
Removes all statements from a specific contexts in the repository.void
clearNamespaces()
Removes all namespace declarations from the repository.void
close()
Closes the connection, freeing resources.void
commit()
Commits the active transaction.protected boolean
isDelegatingAdd()
If false then the following add methods will callRepositoryConnectionWrapper.addWithoutCommit(Resource, IRI, Value, Resource[])
.protected boolean
isDelegatingRemove()
If false then the following remove methods will callRepositoryConnectionWrapper.removeWithoutCommit(Resource, IRI, Value, Resource[])
.Update
prepareUpdate(QueryLanguage ql, String update, String baseURI)
Prepares an Update operation.void
removeNamespace(String prefix)
Removes a namespace declaration by removing the association between a prefix and a namespace name.void
removeRepositoryConnectionInterceptor(RepositoryConnectionInterceptor interceptor)
Removes a registered RepositoryConnectionInterceptor from this connection.void
removeWithoutCommit(Resource subject, IRI predicate, Value object, Resource... contexts)
void
rollback()
Rolls back all updates in the active transaction.void
setAutoCommit(boolean autoCommit)
Deprecated.void
setNamespace(String prefix, String name)
Sets the prefix for a namespace.-
Methods inherited from class org.eclipse.rdf4j.repository.base.RepositoryConnectionWrapper
add, add, add, add, add, add, add, add, begin, begin, exportStatements, exportStatements, getContextIDs, getDelegate, getIsolationLevel, getNamespace, getNamespaces, getStatements, hasStatement, hasStatement, isActive, isAutoCommit, isDelegatingRead, isEmpty, isOpen, prepare, prepareBooleanQuery, prepareGraphQuery, prepareQuery, prepareTupleQuery, remove, remove, remove, remove, setDelegate, setIsolationLevel, setParserConfig, size
-
Methods inherited from class org.eclipse.rdf4j.repository.base.AbstractRepositoryConnection
addWithoutCommit, conditionalCommit, conditionalRollback, export, getParserConfig, getRepository, getValueFactory, prepareBooleanQuery, prepareGraphQuery, prepareQuery, prepareTupleQuery, prepareUpdate, removeWithoutCommit, startLocalTransaction
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.repository.RepositoryConnection
add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, add, begin, begin, export, exportStatements, getContextIDs, getIsolationLevel, getNamespace, getNamespaces, getParserConfig, getRepository, getStatements, getStatements, getValueFactory, hasStatement, hasStatement, isActive, isAutoCommit, isEmpty, isOpen, prepare, prepareBooleanQuery, prepareBooleanQuery, prepareBooleanQuery, prepareGraphQuery, prepareGraphQuery, prepareGraphQuery, prepareQuery, prepareQuery, prepareQuery, prepareTupleQuery, prepareTupleQuery, prepareTupleQuery, prepareUpdate, prepareUpdate, remove, remove, remove, remove, remove, remove, setIsolationLevel, setParserConfig, size
-
-
-
-
Constructor Detail
-
InterceptingRepositoryConnectionWrapper
public InterceptingRepositoryConnectionWrapper(Repository repository, RepositoryConnection connection)
-
-
Method Detail
-
addRepositoryConnectionInterceptor
public void addRepositoryConnectionInterceptor(RepositoryConnectionInterceptor interceptor)
Registers a RepositoryConnectionInterceptor that will receive notifications of operations that are performed on this connection.- Specified by:
addRepositoryConnectionInterceptor
in interfaceInterceptingRepositoryConnection
-
removeRepositoryConnectionInterceptor
public void removeRepositoryConnectionInterceptor(RepositoryConnectionInterceptor interceptor)
Removes a registered RepositoryConnectionInterceptor from this connection.- Specified by:
removeRepositoryConnectionInterceptor
in interfaceInterceptingRepositoryConnection
-
isDelegatingAdd
protected boolean isDelegatingAdd()
Description copied from class:RepositoryConnectionWrapper
If false then the following add methods will callRepositoryConnectionWrapper.addWithoutCommit(Resource, IRI, Value, Resource[])
.- Overrides:
isDelegatingAdd
in classRepositoryConnectionWrapper
- Returns:
true
to delegate add methods,false
to callRepositoryConnectionWrapper.addWithoutCommit(Resource, IRI, Value, Resource[])
- See Also:
RepositoryConnectionWrapper.add(Iterable, Resource...)
,RepositoryConnectionWrapper.add(Iteration, Resource...)
,RepositoryConnectionWrapper.add(Statement, Resource...)
,RepositoryConnectionWrapper.add(File, String, RDFFormat, Resource...)
,RepositoryConnectionWrapper.add(InputStream, String, RDFFormat, Resource...)
,RepositoryConnectionWrapper.add(Reader, String, RDFFormat, Resource...)
,RepositoryConnectionWrapper.add(Resource, IRI, Value, Resource...)
,RepositoryConnectionWrapper.add(URL, String, RDFFormat, Resource...)
-
isDelegatingRemove
protected boolean isDelegatingRemove()
Description copied from class:RepositoryConnectionWrapper
If false then the following remove methods will callRepositoryConnectionWrapper.removeWithoutCommit(Resource, IRI, Value, Resource[])
.- Overrides:
isDelegatingRemove
in classRepositoryConnectionWrapper
- Returns:
true
to delegate remove methods,false
to callRepositoryConnectionWrapper.removeWithoutCommit(Resource, IRI, Value, Resource...)
- See Also:
RepositoryConnectionWrapper.clear(Resource...)
,RepositoryConnectionWrapper.remove(Iterable, Resource...)
,RepositoryConnectionWrapper.remove(Iteration, Resource...)
,RepositoryConnectionWrapper.remove(Statement, Resource...)
,RepositoryConnectionWrapper.remove(Resource, IRI, Value, Resource...)
-
addWithoutCommit
public void addWithoutCommit(Resource subject, IRI predicate, Value object, Resource... contexts) throws RepositoryException
- Overrides:
addWithoutCommit
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
-
clear
public void clear(Resource... contexts) throws RepositoryException
Description copied from interface:RepositoryConnection
Removes all statements from a specific contexts in the repository.- Specified by:
clear
in interfaceRepositoryConnection
- Overrides:
clear
in classRepositoryConnectionWrapper
- Parameters:
contexts
- The context(s) to remove the data from. Note that this parameter is a vararg and as such is optional. If no contexts are supplied the method operates on the entire repository.- Throws:
RepositoryException
- If the statements could not be removed from the repository, for example because the repository is not writable.
-
begin
public void begin() throws RepositoryException
Description copied from interface:RepositoryConnection
Begins a new transaction, requiringRepositoryConnection.commit()
orRepositoryConnection.rollback()
to be called to end the transaction. The transaction will use the currently setisolation level
for this connection.- Specified by:
begin
in interfaceRepositoryConnection
- Overrides:
begin
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
- If the connection could not start the transaction. One possible reason this may happen is if a transaction is alreadyactive
on the current connection.- See Also:
RepositoryConnection.begin(IsolationLevel)
,RepositoryConnection.isActive()
,RepositoryConnection.commit()
,RepositoryConnection.rollback()
,RepositoryConnection.setIsolationLevel(IsolationLevel)
-
close
public void close() throws RepositoryException
Description copied from interface:RepositoryConnection
Closes the connection, freeing resources. If atransaction
isactive
on the connection, all non-committed operations will be lost by actively callingRepositoryConnection.rollback()
on any active transactions.Implementation note: All implementations must override this method if they have any resources that they need to free.
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceRepositoryConnection
- Overrides:
close
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
- If the connection could not be closed.
-
commit
public void commit() throws RepositoryException
Description copied from interface:RepositoryConnection
Commits the active transaction. This operation ends the active transaction.- Specified by:
commit
in interfaceRepositoryConnection
- Overrides:
commit
in classRepositoryConnectionWrapper
- Throws:
UnknownTransactionStateException
- if the transaction state can not be determined. This can happen for instance when communication with a repository fails or times out.RepositoryException
- If the connection could not be committed, or if the connection does not have an active transaction.- See Also:
RepositoryConnection.isActive()
,RepositoryConnection.begin()
,RepositoryConnection.rollback()
,RepositoryConnection.prepare()
-
removeWithoutCommit
public void removeWithoutCommit(Resource subject, IRI predicate, Value object, Resource... contexts) throws RepositoryException
- Overrides:
removeWithoutCommit
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
-
removeNamespace
public void removeNamespace(String prefix) throws RepositoryException
Description copied from interface:RepositoryConnection
Removes a namespace declaration by removing the association between a prefix and a namespace name.- Specified by:
removeNamespace
in interfaceRepositoryConnection
- Overrides:
removeNamespace
in classRepositoryConnectionWrapper
- Parameters:
prefix
- The namespace prefix, or an empty string in case of the default namespace.- Throws:
RepositoryException
- If the namespace prefix could not be removed.
-
clearNamespaces
public void clearNamespaces() throws RepositoryException
Description copied from interface:RepositoryConnection
Removes all namespace declarations from the repository.- Specified by:
clearNamespaces
in interfaceRepositoryConnection
- Overrides:
clearNamespaces
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
- If the namespace declarations could not be removed.
-
rollback
public void rollback() throws RepositoryException
Description copied from interface:RepositoryConnection
Rolls back all updates in the active transaction. This operation ends the active transaction.- Specified by:
rollback
in interfaceRepositoryConnection
- Overrides:
rollback
in classRepositoryConnectionWrapper
- Throws:
UnknownTransactionStateException
- if the transaction state can not be determined. This can happen for instance when communication with a repository fails or times out.RepositoryException
- If the transaction could not be rolled back, or if the connection does not have an active transaction.- See Also:
RepositoryConnection.isActive()
,RepositoryConnection.begin()
,RepositoryConnection.commit()
-
setAutoCommit
@Deprecated public void setAutoCommit(boolean autoCommit) throws RepositoryException
Deprecated.Description copied from interface:RepositoryConnection
Enables or disables auto-commit mode for the connection. If a connection is in auto-commit mode, then all updates will be executed and committed as individual transactions. Otherwise, the updates are grouped into transactions that are terminated by a call to eitherRepositoryConnection.commit()
orRepositoryConnection.rollback()
. By default, new connections are in auto-commit mode.NOTE: If this connection is switched to auto-commit mode during a transaction, the transaction is committed.
- Specified by:
setAutoCommit
in interfaceRepositoryConnection
- Overrides:
setAutoCommit
in classRepositoryConnectionWrapper
- Throws:
RepositoryException
- In case the mode switch failed, for example because a currently active transaction failed to commit.- See Also:
RepositoryConnection.commit()
-
setNamespace
public void setNamespace(String prefix, String name) throws RepositoryException
Description copied from interface:RepositoryConnection
Sets the prefix for a namespace.- Specified by:
setNamespace
in interfaceRepositoryConnection
- Overrides:
setNamespace
in classRepositoryConnectionWrapper
- Parameters:
prefix
- The new prefix, or an empty string in case of the default namespace.name
- The namespace name that the prefix maps to.- Throws:
RepositoryException
- If the namespace could not be set in the repository, for example because the repository is not writable.
-
prepareUpdate
public Update prepareUpdate(QueryLanguage ql, String update, String baseURI) throws MalformedQueryException, RepositoryException
Description copied from interface:RepositoryConnection
Prepares an Update operation.- Specified by:
prepareUpdate
in interfaceRepositoryConnection
- Overrides:
prepareUpdate
in classRepositoryConnectionWrapper
- Parameters:
ql
- Thequery language
in which the update operation is formulated.update
- The update operation string.baseURI
- The base URI to resolve any relative URIs that are in the update against, can be null if the update does not contain any relative URIs.- Returns:
- a
Update
ready to be executed on thisRepositoryConnection
. - Throws:
MalformedQueryException
- If the supplied update operation string is malformed.RepositoryException
-
-