Class VisibilityBaseFieldIndexer
java.lang.Object
com.atlassian.jira.search.issue.index.indexers.impl.VisibilityBaseFieldIndexer
- All Implemented Interfaces:
FieldIndexer
- Direct Known Subclasses:
AffectedVersionsIndexer,BaseLabelsIndexer,ComponentsIndexer,CreatorIndexer,CurrentEstimateIndexer,DescriptionIndexer,EnvironmentIndexer,FixForVersionsIndexer,OriginalEstimateIndexer,ParentIssueIndexer,PriorityIndexer,ProgressIndexer,ResolutionIndexer,StatusIndexer,TimeSpentIndexer,VoterIndexer,VotesIndexer,WatcherIndexer,WatchesIndexer,WorkRatioIndexer
Base class for field indexers that only perform indexing when the associated fields are visible and in scope.
This replaces com.atlassian.jira.issue.index.indexers.impl.BaseFieldIndexer
- Since:
- 10.4
-
Field Summary
FieldsFields inherited from interface com.atlassian.jira.search.issue.index.indexers.FieldIndexer
LABELS_NO_VALUE_INDEX_VALUE, NO_VALUE_INDEX_VALUE -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedVisibilityBaseFieldIndexer(FieldVisibilityManager fieldVisibilityManager) -
Method Summary
Modifier and TypeMethodDescriptionvoidindexFields(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData) This method allows an indexer the opportunity to add values to the provided collector that are relevant for searching and storage of the portion of the issue that the FieldIndexer handles.voidindexFieldsWithVisibility(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData, boolean visible) The same as indexField but accepts an additional parameter to indicate if the field is visible and in scope.protected abstract voidindexVisibleFields(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData) booleanisFieldVisibleAndInScope(Issue issue) This method is used to determine if the indexer is relevant for the provided issue.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.atlassian.jira.search.issue.index.indexers.FieldIndexer
getFields, getId, skipsIndexingNull
-
Field Details
-
fieldVisibilityManager
-
-
Constructor Details
-
VisibilityBaseFieldIndexer
-
-
Method Details
-
isFieldVisibleAndInScope
Description copied from interface:FieldIndexerThis method is used to determine if the indexer is relevant for the provided issue. This method must check the fields visibility, in relation to the field configuration scheme, must check any global flags that would enable or disable a field (such as enable votes flag), and must check, if the field is a custom field, if the custom field is relevant for this issue.All these checks should take into account the
IssueContextas defined by the passed in issue.The result of this method is used to determine the correct values that should be returned when performing an empty search.
- Specified by:
isFieldVisibleAndInScopein interfaceFieldIndexer- Parameters:
issue- that is having a document created from.- Returns:
- if true then this field is relevant for the issue, otherwise it is not.
-
indexFields
public void indexFields(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData) Description copied from interface:FieldIndexerThis method allows an indexer the opportunity to add values to the provided collector that are relevant for searching and storage of the portion of the issue that the FieldIndexer handles.If, for example, the indexer handles indexing an issues summary then this indexer will add a field value to the collector that represents the stored and searchable summary of the issue.
Note that trying to index very large (i.e. larger than ~32 kB) fields as
KeywordFieldwill result in them being removed to prevent the indexing operation from crashing. This is a limitation of how OpenSearch and Lucene store terms.- Specified by:
indexFieldsin interfaceFieldIndexer- Parameters:
collector- the collector for collecting indexed valuesissue- the issue that contains the data that will be indexed and which can be used to determine the project/issue type context that will allow you to determine if we should add the value as searchable or unsearchable.prefetchedData- if the custom field type implementedCustomFieldType.getNonNullCustomFieldProvider()this reference will hold the matching value returned fromNonNullCustomFieldProvider.getCustomFieldInfo(List <Issue>)
-
indexFieldsWithVisibility
public void indexFieldsWithVisibility(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData, boolean visible) Description copied from interface:FieldIndexerThe same as indexField but accepts an additional parameter to indicate if the field is visible and in scope. Thanks to that there is no need to callFieldIndexer.isFieldVisibleAndInScope(Issue)method inside. The default implementation is for backward compatibility. An indexer that wants to take advantage of performance gain should implement FieldWithVisibilityIndexer interface- Specified by:
indexFieldsWithVisibilityin interfaceFieldIndexer- Parameters:
collector- the collector for collecting indexed valuesissue- that is having a document created from.prefetchedData- if the custom field type implementedCustomFieldType.getNonNullCustomFieldProvider()this reference will hold the matching value returned fromNonNullCustomFieldProvider.getCustomFieldInfo(List <Issue>)*
-
indexVisibleFields
protected abstract void indexVisibleFields(FieldValueCollector collector, Issue issue, CustomFieldPrefetchedData prefetchedData)
-