public interface IndexingContext
Indexer
implementations can store additional
items in the context to be shared with other indexers. For example, an
indexer might run a lexer on the file contents and store the tokens in the
context. Another indexer could then reuse these tokens without running
another lexer. This is done by calling the get(java.lang.String)
and put(java.lang.String, java.lang.Object)
methods.Modifier and Type | Method and Description |
---|---|
java.lang.Object |
get(java.lang.String key)
Get the context item with the given key.
|
java.lang.Object |
getFilterKey()
Get the key being used to filter results.
|
java.lang.Object |
getFilterValue()
Get the value used to filter results.
|
Node |
getNode()
Get the Node being indexed.
|
Project |
getProject()
Get the project being indexed.
|
TextBuffer |
getTextBuffer()
Get the text buffer containing the contents of the file being indexed.
|
long |
getTimestamp()
Get the time stamp of the file being indexed.
|
java.net.URL |
getURL()
Get the URL of the file being indexed.
|
Workspace |
getWorkspace()
Get the workspace being indexed.
|
void |
put(java.lang.String key,
java.lang.Object item)
Add a context item with the given key.
|
Workspace getWorkspace()
null
if there is no
workspace in the context being indexed. This typically only happens
in test environments where there the test runs without any workspace.null
if there is no
workspace associated with this contextProject getProject()
null
if there is no
project in the context being indexed. This can happen, for example,
when application level resources are being indexed.null
if there is no
project associated with this contextNode getNode()
Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
. The return value is undefined during
Indexer.startIndexing(oracle.ide.index.IndexingContext)
and Indexer.endIndexing(oracle.ide.index.IndexingContext)
.
Important Note: this method is provided only to provide contextual
information to the Indexer
. The Indexer
implementation must not take any locks on the
Node
. Doing so could lead to deadlock between the indexing
thread and threads waiting for an index query result while holding a lock.
The Indexer
must use the buffer returned by
getTextBuffer()
to access the contents of the Node
.
The only exception to this is when the Node
being indexed is
not a TextNode
. In that case, the Node
will be
read locked at the time the Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
method is called, so the
implementation can directly access the Node
contents.
java.net.URL getURL()
Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
. The return value is undefined during
Indexer.startIndexing(oracle.ide.index.IndexingContext)
and Indexer.endIndexing(oracle.ide.index.IndexingContext)
.TextBuffer getTextBuffer()
Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
is called.
This is only available during Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
. The return value
is undefined during Indexer.startIndexing(oracle.ide.index.IndexingContext)
and
Indexer.endIndexing(oracle.ide.index.IndexingContext)
. If the node being indexed is not a
TextNode
, this will return
null
.long getTimestamp()
Indexer.index(oracle.ide.index.IndexingContext, oracle.ide.index.DataCollector)
. The return value is
undefined during Indexer.startIndexing(oracle.ide.index.IndexingContext)
and
Indexer.endIndexing(oracle.ide.index.IndexingContext)
.java.lang.Object getFilterKey()
java.lang.Object getFilterValue()
getFilterKey()
and the
value returned by this method.java.lang.Object get(java.lang.String key)
key
- the keyvoid put(java.lang.String key, java.lang.Object item)
key
- the keyitem
- the context item to be added