Class AnnotatedIndexDefinitionProcessor
java.lang.Object
io.jmix.search.index.mapping.processor.impl.AnnotatedIndexDefinitionProcessor
@Component("search_AnnotatedIndexDefinitionProcessor")
public class AnnotatedIndexDefinitionProcessor
extends Object
Provides functionality to process index definition interfaces marked with
JmixEntitySearchIndex-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final List<AttributesGroupProcessor<? extends AttributesGroupConfiguration>> protected final InstanceNameRelatedPropertiesResolverprotected final MappingFieldAnnotationProcessorsRegistryprotected final Metadataprotected final MethodArgumentsProviderprotected final PropertyValueExtractorProviderprotected final SearchProperties -
Constructor Summary
ConstructorsConstructorDescriptionAnnotatedIndexDefinitionProcessor(Metadata metadata, MappingFieldAnnotationProcessorsRegistry mappingFieldAnnotationProcessorsRegistry, PropertyValueExtractorProvider propertyValueExtractorProvider, SearchProperties searchProperties, ContextArgumentResolverComposite resolvers, List<AttributesGroupProcessor<?>> attributesGroupProcessors, InstanceNameRelatedPropertiesResolver instanceNameRelatedPropertiesResolver) -
Method Summary
Modifier and TypeMethodDescriptionappendContributedFields(IndexConfiguration base, ContributedIndexDefinition definition) Adds the fields of a contributed definition to an existing configuration.protected <T> TcallMethod(Class<?> ownerClass, Method method) protected ObjectcreateClassProxyInstance(Class<?> ownerClass) protected DisplayedNameDescriptorcreateDisplayedNameDescriptor(MetaClass metaClass) protected ExtendedSearchSettingscreateExtendedSearchSettings(Class<?> indexDefinitionClass) createIndexablePredicate(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) createIndexConfiguration(ContributedIndexDefinition definition) Creates an index configuration for an entity that has no annotated Java definition.createIndexConfiguration(String className) Processes index definition interface marked withJmixEntitySearchIndexannotation and createsIndexConfigurationbased on it.protected IndexMappingConfigurationcreateIndexMappingConfig(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) protected StringcreateIndexName(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) protected StringcreateIndexName(@Nullable String explicitIndexName, MetaClass metaClass) protected ObjectcreateInterfaceProxyInstance(Class<?> ownerClass) protected ObjectcreateProxy(Class<?> ownerClass) getAffectedEntityClasses(IndexMappingConfiguration indexMappingConfiguration) protected @Nullable ObjectinvokeProxyMethod(Class<?> ownerClass, Object proxy, Method method, Object[] args) protected booleanisFieldMappingAnnotation(Annotation annotation) protected booleanisIndexablePredicateMethod(Method method) protected booleanparseIndexDefinition(Class<?> indexDefinitionClass) protected voidprocessAnnotation(MappingDefinition.MappingDefinitionBuilder builder, Annotation annotation, MetaClass entityMetaClass) protected Map<String, MappingFieldDescriptor> processMappingDefinition(MetaClass metaClass, MappingDefinition mappingDefinition, ExtendedSearchSettings extendedSearchSettings) protected Class<?> resolveClass(String className)
-
Field Details
-
metadata
-
mappingFieldAnnotationProcessorsRegistry
-
propertyValueExtractorProvider
-
searchProperties
-
methodArgumentsProvider
-
attributesGroupProcessors
protected final List<AttributesGroupProcessor<? extends AttributesGroupConfiguration>> attributesGroupProcessors -
instanceNameRelatedPropertiesResolver
-
-
Constructor Details
-
AnnotatedIndexDefinitionProcessor
@Autowired public AnnotatedIndexDefinitionProcessor(Metadata metadata, MappingFieldAnnotationProcessorsRegistry mappingFieldAnnotationProcessorsRegistry, PropertyValueExtractorProvider propertyValueExtractorProvider, SearchProperties searchProperties, ContextArgumentResolverComposite resolvers, List<AttributesGroupProcessor<?>> attributesGroupProcessors, InstanceNameRelatedPropertiesResolver instanceNameRelatedPropertiesResolver)
-
-
Method Details
-
createIndexConfiguration
Processes index definition interface marked withJmixEntitySearchIndexannotation and createsIndexConfigurationbased on it.- Parameters:
className- full name of index definition interface- Returns:
IndexConfiguration
-
createIndexConfiguration
Creates an index configuration for an entity that has no annotated Java definition.- Parameters:
definition- contributed definition- Returns:
- index configuration
-
appendContributedFields
public IndexConfiguration appendContributedFields(IndexConfiguration base, ContributedIndexDefinition definition) Adds the fields of a contributed definition to an existing configuration. Fields already present in the existing configuration win over contributed ones with the same name. The index name, the extended search settings and the indexable predicate of the existing configuration are kept.- Parameters:
base- configuration built from the annotated Java definitiondefinition- contributed definition for the same entity- Returns:
- a new index configuration with the merged fields
-
resolveClass
-
parseIndexDefinition
protected AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parseIndexDefinition(Class<?> indexDefinitionClass) -
createIndexName
protected String createIndexName(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) -
createIndexName
-
createExtendedSearchSettings
-
createIndexMappingConfig
protected IndexMappingConfiguration createIndexMappingConfig(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) -
isIndexablePredicateMethod
-
isMappingDefinitionImplementationMethod
-
isFieldMappingAnnotation
-
createIndexablePredicate
protected Predicate<Object> createIndexablePredicate(AnnotatedIndexDefinitionProcessor.ParsedIndexDefinition parsedIndexDefinition) -
callMethod
- Throws:
Exception
-
createProxy
-
createInterfaceProxyInstance
-
createClassProxyInstance
-
invokeProxyMethod
-
processAnnotation
protected void processAnnotation(MappingDefinition.MappingDefinitionBuilder builder, Annotation annotation, MetaClass entityMetaClass) -
getAffectedEntityClasses
protected Set<Class<?>> getAffectedEntityClasses(IndexMappingConfiguration indexMappingConfiguration) -
processMappingDefinition
protected Map<String,MappingFieldDescriptor> processMappingDefinition(MetaClass metaClass, MappingDefinition mappingDefinition, ExtendedSearchSettings extendedSearchSettings) -
createDisplayedNameDescriptor
-