Interface QueryHandler

  • All Known Implementing Classes:
    AbstractQueryHandler, SearchIndex

    public interface QueryHandler
    Defines an interface for the actual node indexing and query execution. The goal is to allow different implementations based on the persistent manager in use. Some persistent model might allow to execute a query in an optimized manner, e.g. database persistence.
    • Method Detail

      • init

        void init​(FileSystem fs,
                  QueryHandlerContext context)
           throws IOException
        Initializes this query handler. This method is called after the QueryHandler is instantiated.

        If a file system has been configured (i.e. the fs argument is not null), then the query handler is expected to close the given file system when the close() method is called.

        Parameters:
        fs - the configured search index file system, or null
        context - the context for this query handler.
        Throws:
        IOException - if an error occurs during initialization.
      • deleteNode

        void deleteNode​(NodeId id)
                 throws IOException
        Deletes the Node with id from the search index.
        Parameters:
        id - the id of the node to delete.
        Throws:
        IOException - if an error occurs while deleting the node.
      • updateNodes

        void updateNodes​(Iterator<NodeId> remove,
                         Iterator<NodeState> add)
                  throws RepositoryException,
                         IOException
        Updates the index in an atomic operation. Some nodes may be removed and added again in the same updateNodes() call, which is equivalent to an node update.
        Parameters:
        remove - Iterator of NodeIds of nodes to delete
        add - Iterator of NodeState instance to add to the index.
        Throws:
        RepositoryException - if an error occurs while indexing a node.
        IOException - if an error occurs while updating the index.
      • close

        void close()
            throws IOException
        Closes this QueryHandler and frees resources attached to this handler.
        Throws:
        IOException
      • createExecutableQuery

        ExecutableQuery createExecutableQuery​(SessionContext sessionContext,
                                              String statement,
                                              String language)
                                       throws InvalidQueryException
        Creates a new query by specifying the query statement itself and the language in which the query is stated. If the query statement is syntactically invalid, given the language specified, an InvalidQueryException is thrown. language must specify a query language string from among those returned by QueryManager.getSupportedQueryLanguages(); if it is not then an InvalidQueryException is thrown.
        Parameters:
        sessionContext - component context of the current session
        statement - the query statement.
        language - the syntax of the query statement.
        Returns:
        A Query object.
        Throws:
        InvalidQueryException - if statement is invalid or language is unsupported.
      • getQueryClass

        String getQueryClass()
        Returns:
        the name of the query class to use.
      • getWeaklyReferringNodes

        Iterable<NodeId> getWeaklyReferringNodes​(NodeId id)
                                          throws RepositoryException,
                                                 IOException
        Returns the ids of the nodes that refer to the node with id by weak references.
        Parameters:
        id - the id of the target node.
        Returns:
        the ids of the referring nodes.
        Throws:
        RepositoryException - if an error occurs.
        IOException - if an error occurs while reading from the index.