org.apache.jackrabbit.core.query
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 Summary
 void addNode(NodeState node)
          Adds a Node to the search index.
 void close()
          Closes this QueryHandler and frees resources attached to this handler.
 ExecutableQuery createExecutableQuery(SessionContext sessionContext, String statement, String language)
          Creates a new query by specifying the query statement itself and the language in which the query is stated.
 void deleteNode(NodeId id)
          Deletes the Node with id from the search index.
 QueryHandlerContext getContext()
          Returns the query handler context that passed in #init(QueryHandlerContext).
 String getQueryClass()
           
 Iterable<NodeId> getWeaklyReferringNodes(NodeId id)
          Returns the ids of the nodes that refer to the node with id by weak references.
 void init(FileSystem fs, QueryHandlerContext context)
          Initializes this query handler.
 void updateNodes(Iterator<NodeId> remove, Iterator<NodeState> add)
          Updates the index in an atomic operation.
 

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.

getContext

QueryHandlerContext getContext()
Returns the query handler context that passed in #init(QueryHandlerContext).

Returns:
the query handler context.

addNode

void addNode(NodeState node)
             throws RepositoryException,
                    IOException
Adds a Node to the search index.

Parameters:
node - the NodeState to add.
Throws:
RepositoryException - if an error occurs while indexing the node.
IOException - if an error occurs while adding the node to the index.

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.


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.