Known Indirect Subclasses |
Interface for user-specific implementation details of the connector.
Implementations must be thread-safe. Implementations are discouraged from keeping any state locally except perhaps soft-state such as a connection cache.
Public Method Summary
abstract void | |
abstract void |
traverse()
Implements a connector-specific traversal strategy.
|
Inherited Method Summary
Public Methods
public abstract void init (IndexingConnectorContext context)
Initializes the connector with the current context.
Initialization is the ideal time to start any threads to do extra behind-the-scenes work.
The context
allows access to other useful objects that can be used at any time such as
the IndexingService
.
If an unrecoverable fatal error occurs during initialization, throw a StartupException
to cancel the startup process. If a recoverable error occurs during
initialization, most Exception
instances other than StartupException
cause a
retry of initialization after a short delay.
Parameters
context | IndexingConnectorContext instance for accessing framework objects |
---|
Throws
Exception | if errors occur during connector initialization |
---|
public abstract void traverse ()
Implements a connector-specific traversal strategy.
Use the CloudSearch.Indexing.Datasources.Items.Push
method to push a list of PushItem
instances that are to be
indexed. Often, many of the sent items are unchanged since the last traversal and are thus
being re-pushed unnecessarily. However, the cost of pushing unchanged items is low and doing
so heals any synchronization errors or cache inconsistencies that might exist in the system.
For flat or full traversal strategies, push PushItem
instances for all items to be
indexed. For graph traversal strategies, push only the start node of each graph.
Alternatively, a Connector
implementation can issue an CloudSearch.Indexing.Datasources.Items.Index
for
each item in the repository instead of using CloudSearch.Indexing.Datasources.Items.Push
and CloudSearch.Indexing.Datasources.Items.Poll
. Such
implementations might be suitable for smaller repositories requiring only a periodic full sync.
This method may take a while and implementations may want to call sleep(long)
occasionally to reduce load.
If fatal errors occur, throw an IOException
or RuntimeException
.
In the case of an error, the ExceptionHandler
defined in IndexingConnectorContext
determines if and when to retry.
Throws
IOException | if getting data access errors |
---|---|
InterruptedException | if an IO operations throws it |