Class ShaclSailConnection

    • Field Detail

      • logger

        private static final org.slf4j.Logger logger
      • previousStateConnection

        private final SailConnection previousStateConnection
      • serializableConnection

        private final SailConnection serializableConnection
      • useDefaultShapesGraph

        private final boolean useDefaultShapesGraph
      • shapesGraphs

        private IRI[] shapesGraphs
      • addedStatements

        Sail addedStatements
      • removedStatements

        Sail removedStatements
      • addedStatementsSet

        private final java.util.HashSet<Statement> addedStatementsSet
      • removedStatementsSet

        private final java.util.HashSet<Statement> removedStatementsSet
      • shapeRefreshNeeded

        private boolean shapeRefreshNeeded
      • shapesModifiedInCurrentTransaction

        private boolean shapesModifiedInCurrentTransaction
      • stats

        private Stats stats
      • prepareHasBeenCalled

        private boolean prepareHasBeenCalled
      • exclusiveSerializableValidationLock

        private Lock exclusiveSerializableValidationLock
      • nonExclusiveSerializableValidationLock

        private Lock nonExclusiveSerializableValidationLock
      • connectionListenerActive

        private boolean connectionListenerActive
      • closed

        private volatile boolean closed
    • Method Detail

      • setTransactionSettings

        public void setTransactionSettings​(TransactionSetting... settings)
        Description copied from interface: SailConnection
        Pass any transaction-specific settings to the SailConnection. This method needs to be called before the transaction is started .

        Sail implementations can override this method to receive the transaction settings (to inspect and/or pass them along to any wrapped sail objects). Remember to call super.setTransactionSettings(settings) if you override this method.

        Specified by:
        setTransactionSettings in interface SailConnection
        Overrides:
        setTransactionSettings in class SailConnectionWrapper
        Parameters:
        settings - the transaction settings on which the next transaction operates. It may or may not contain the isolation level.
      • getLocalTransactionSettings

        private ShaclSailConnection.Settings getLocalTransactionSettings()
        Returns:
        the transaction settings that are based purely on the settings based down through the begin(...) method without considering any sail level settings for things like caching or parallel validation.
      • isValidationEnabled

        boolean isValidationEnabled()
      • getNewMemorySail

        private Sail getNewMemorySail()
      • addStatement

        public void addStatement​(UpdateContext modify,
                                 Resource subj,
                                 IRI pred,
                                 Value obj,
                                 Resource... contexts)
                          throws SailException
        Description copied from interface: SailConnection
        Adds a statement to the store. Called when adding statements through a UpdateExpr operation.
        Specified by:
        addStatement in interface SailConnection
        Overrides:
        addStatement in class SailConnectionWrapper
        Parameters:
        modify - 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.
        Throws:
        SailException - If the statement could not be added, for example because no transaction is active.
      • removeStatement

        public void removeStatement​(UpdateContext modify,
                                    Resource subj,
                                    IRI pred,
                                    Value obj,
                                    Resource... contexts)
                             throws SailException
        Description copied from interface: SailConnection
        Removes all statements matching the specified subject, predicate and object from the repository. All three parameters may be null to indicate wildcards. Called when removing statements through a UpdateExpr operation.
        Specified by:
        removeStatement in interface SailConnection
        Overrides:
        removeStatement in class SailConnectionWrapper
        Parameters:
        modify - 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.
        Throws:
        SailException - If the statement could not be removed, for example because no transaction is active.
      • addStatement

        public void addStatement​(Resource subj,
                                 IRI pred,
                                 Value obj,
                                 Resource... contexts)
                          throws SailException
        Description copied from interface: SailConnection
        Adds a statement to the store.
        Specified by:
        addStatement in interface SailConnection
        Overrides:
        addStatement in class SailConnectionWrapper
        Parameters:
        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.
        Throws:
        SailException - If the statement could not be added, for example because no transaction is active.
      • removeStatements

        public void removeStatements​(Resource subj,
                                     IRI pred,
                                     Value obj,
                                     Resource... contexts)
                              throws SailException
        Description copied from interface: SailConnection
        Removes all statements matching the specified subject, predicate and object from the repository. All three parameters may be null to indicate wildcards.
        Specified by:
        removeStatements in interface SailConnection
        Overrides:
        removeStatements in class SailConnectionWrapper
        Parameters:
        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.
        Throws:
        SailException - If the statement could not be removed, for example because no transaction is active.
      • clear

        public void clear​(Resource... contexts)
                   throws SailException
        Description copied from interface: SailConnection
        Removes all statements from the specified/all contexts. If no contexts are specified the method operates on the entire repository.
        Specified by:
        clear in interface SailConnection
        Overrides:
        clear in class SailConnectionWrapper
        Parameters:
        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.
        Throws:
        SailException - If the statements could not be removed.
      • rollback

        public void rollback()
                      throws SailException
        Description copied from interface: SailConnection
        Rolls back the transaction, discarding any uncommitted changes that have been made in this SailConnection.
        Specified by:
        rollback in interface SailConnection
        Overrides:
        rollback in class SailConnectionWrapper
        Throws:
        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.
      • cleanup

        private void cleanup()
      • cleanupShapesReadWriteLock

        private void cleanupShapesReadWriteLock()
      • cleanupReadWriteLock

        private void cleanupReadWriteLock()
      • validate

        private ValidationReport validate​(java.util.List<ContextWithShape> shapes,
                                          boolean validateEntireBaseSail)
                                   throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • prepareValidation

        void prepareValidation​(ValidationSettings validationSettings)
                        throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • performValidation

        private ValidationReport performValidation​(java.util.List<ContextWithShape> shapes,
                                                   boolean validateEntireBaseSail,
                                                   ConnectionsGroup connectionsGroup)
                                            throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • isParallelValidation

        private boolean isParallelValidation()
      • fillAddedAndRemovedStatementRepositories

        void fillAddedAndRemovedStatementRepositories()
                                               throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • close

        public void close()
                   throws SailException
        Description copied from interface: SailConnection
        Closes the connection. Any updates that haven't been committed yet will be rolled back. The connection can no longer be used once it is closed.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface SailConnection
        Overrides:
        close in class SailConnectionWrapper
        Throws:
        SailException
      • isEmpty

        private boolean isEmpty​(java.util.List<ContextWithShape> shapesList)
      • shouldUseSerializableValidation

        private boolean shouldUseSerializableValidation()
      • isBulkValidation

        private boolean isBulkValidation()
      • serializableValidation

        private ValidationReport serializableValidation​(java.util.List<ContextWithShape> shapesAfterRefresh)
                                                 throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • statementAdded

        public void statementAdded​(Statement statement)
        Description copied from interface: SailConnectionListener
        Notifies the listener that a statement has been added in a transaction that it has registered itself with.
        Specified by:
        statementAdded in interface SailConnectionListener
        Parameters:
        statement - The statement that was added.
      • statementRemoved

        public void statementRemoved​(Statement statement)
        Description copied from interface: SailConnectionListener
        Notifies the listener that a statement has been removed in a transaction that it has registered itself with.
        Specified by:
        statementRemoved in interface SailConnectionListener
        Parameters:
        statement - The statement that was removed.
      • checkIfShapesRefreshIsNeeded

        private void checkIfShapesRefreshIsNeeded​(Statement statement)
      • checkTransactionalValidationLimit

        private void checkTransactionalValidationLimit()
      • getStatements

        public CloseableIteration<? extends Statement,​SailException> getStatements​(Resource subj,
                                                                                         IRI pred,
                                                                                         Value obj,
                                                                                         boolean includeInferred,
                                                                                         Resource... contexts)
                                                                                  throws SailException
        Description copied from interface: SailConnection
        Gets all statements from the specified contexts that have a specific subject, predicate and/or object. All three parameters may be null to indicate wildcards. The includeInferred parameter can be used to control which statements are fetched: all statements or only the statements that have been added explicitly.
        Specified by:
        getStatements in interface SailConnection
        Overrides:
        getStatements in class SailConnectionWrapper
        Parameters:
        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 available
        contexts - 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.
        Returns:
        The statements matching the specified pattern.
        Throws:
        SailException - If the Sail object encountered an error or unexpected situation internally.
      • hasStatement

        public boolean hasStatement​(Resource subj,
                                    IRI pred,
                                    Value obj,
                                    boolean includeInferred,
                                    Resource... contexts)
                             throws SailException
        Description copied from interface: SailConnection
        Determines if the store contains any statements from the specified contexts that have a specific subject, predicate and/or object. All three parameters may be null to indicate wildcards. The includeInferred parameter can be used to control which statements are checked: all statements or only the statements that have been added explicitly.
        Specified by:
        hasStatement in interface SailConnection
        Overrides:
        hasStatement in class SailConnectionWrapper
        Parameters:
        subj - A Resource specifying the subject, or null for a wildcard.
        pred - An IRI 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 available
        contexts - 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.
        Returns:
        true iff the store contains any statements matching the supplied criteria, false otherwise.
        Throws:
        SailException - If the Sail object encountered an error or unexpected situation internally.
      • getTimeStamp

        private long getTimeStamp()