Class ChangeQueryProcessor
- java.lang.Object
-
- com.google.gerrit.index.query.QueryProcessor<ChangeData>
-
- com.google.gerrit.server.query.change.ChangeQueryProcessor
-
- All Implemented Interfaces:
PluginDefinedInfosFactory,DynamicOptions.BeanProvider,DynamicOptions.BeanReceiver
public class ChangeQueryProcessor extends QueryProcessor<ChangeData> implements DynamicOptions.BeanReceiver, DynamicOptions.BeanProvider, PluginDefinedInfosFactory
Query processor for the change index.Instances are one-time-use. Other singleton classes should inject a Provider rather than holding on to a single instance.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.google.gerrit.index.query.QueryProcessor
QueryProcessor.Metrics
-
-
Field Summary
-
Fields inherited from class com.google.gerrit.index.query.QueryProcessor
start
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected QueryOptionscreateOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, Set<String> requestedFields)com.google.common.collect.ImmutableListMultimap<Change.Id,PluginDefinedInfo>createPluginDefinedInfos(Collection<ChangeData> cds)Create a plugin-provided info field from all the plugins for each of the providedChangeDatas.ChangeQueryProcessorenforceVisibility(boolean enforce)Specify whether to enforce visibility by filtering out results that are not visible to the user.protected Predicate<ChangeData>enforceVisibility(Predicate<ChangeData> pred)Invoked after the query was rewritten.protected StringformatForLogging(ChangeData changeData)protected intgetBatchSize()DynamicOptions.DynamicBeangetDynamicBean(String plugin)protected intgetIndexSize()PluginDefinedInfosFactorygetInfosFactory()protected intgetInitialPageSize(int limit)voidsetDynamicBean(String plugin, DynamicOptions.DynamicBean dynamicBean)-
Methods inherited from class com.google.gerrit.index.query.QueryProcessor
getEffectiveLimit, getUserQueryLimit, isDisabled, query, query, setNoLimit, setRequestedFields, setStart, setUserProvidedLimit
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.google.gerrit.server.DynamicOptions.BeanReceiver
getExportedBeanReceiver
-
-
-
-
Method Detail
-
enforceVisibility
public ChangeQueryProcessor enforceVisibility(boolean enforce)
Description copied from class:QueryProcessorSpecify whether to enforce visibility by filtering out results that are not visible to the user.Enforcing visibility may have performance consequences, as the index system may need to post-filter a large number of results to fill even a modest limit.
If visibility is enforced, the user's
queryLimitglobal capability is also used to bound the total number of results. If this capability is non-positive, this results in the entire query processor beingdisabled.- Overrides:
enforceVisibilityin classQueryProcessor<ChangeData>- Parameters:
enforce- whether to enforce visibility.- Returns:
- this.
-
createOptions
protected QueryOptions createOptions(IndexConfig indexConfig, int start, int pageSize, int pageSizeMultiplier, int limit, Set<String> requestedFields)
- Overrides:
createOptionsin classQueryProcessor<ChangeData>
-
setDynamicBean
public void setDynamicBean(String plugin, DynamicOptions.DynamicBean dynamicBean)
- Specified by:
setDynamicBeanin interfaceDynamicOptions.BeanReceiver
-
getDynamicBean
public DynamicOptions.DynamicBean getDynamicBean(String plugin)
- Specified by:
getDynamicBeanin interfaceDynamicOptions.BeanProvider
-
getInfosFactory
public PluginDefinedInfosFactory getInfosFactory()
-
createPluginDefinedInfos
public com.google.common.collect.ImmutableListMultimap<Change.Id,PluginDefinedInfo> createPluginDefinedInfos(Collection<ChangeData> cds)
Description copied from interface:PluginDefinedInfosFactoryCreate a plugin-provided info field from all the plugins for each of the providedChangeDatas.- Specified by:
createPluginDefinedInfosin interfacePluginDefinedInfosFactory- Parameters:
cds- changes.- Returns:
- map of the all plugin's special infos for each change.
-
enforceVisibility
protected Predicate<ChangeData> enforceVisibility(Predicate<ChangeData> pred)
Description copied from class:QueryProcessorInvoked after the query was rewritten. Subclasses must overwrite this method to filter out results that are not visible to the calling user.- Specified by:
enforceVisibilityin classQueryProcessor<ChangeData>- Parameters:
pred- the query- Returns:
- the modified query
-
formatForLogging
protected String formatForLogging(ChangeData changeData)
- Specified by:
formatForLoggingin classQueryProcessor<ChangeData>
-
getIndexSize
protected int getIndexSize()
- Specified by:
getIndexSizein classQueryProcessor<ChangeData>
-
getBatchSize
protected int getBatchSize()
- Specified by:
getBatchSizein classQueryProcessor<ChangeData>
-
getInitialPageSize
protected int getInitialPageSize(int limit)
- Overrides:
getInitialPageSizein classQueryProcessor<ChangeData>
-
-