Class AbstractDocumentBuilder<T>

java.lang.Object
org.hibernate.search.engine.AbstractDocumentBuilder<T>
All Implemented Interfaces:
DocumentBuilder
Direct Known Subclasses:
DocumentBuilderContainedEntity, DocumentBuilderIndexedEntity

public abstract class AbstractDocumentBuilder<T> extends Object implements DocumentBuilder
Abstract base class for the document builders.
  • Field Details

    • beanXClassName

      protected final String beanXClassName
    • beanClass

      protected final Class<?> beanClass
    • fieldCollectionRoles

      protected final Set<String> fieldCollectionRoles
    • indexedEmbeddedCollectionRoles

      protected final Set<String> indexedEmbeddedCollectionRoles
    • containedInCollectionRoles

      protected final Set<String> containedInCollectionRoles
    • metadata

    • entityState

      protected EntityState entityState
    • reflectionManager

      protected ReflectionManager reflectionManager
  • Constructor Details

    • AbstractDocumentBuilder

      public AbstractDocumentBuilder(XClass xClass, ConfigContext context, Similarity similarity, ReflectionManager reflectionManager, Set<XClass> optimizationBlackList)
      Constructor used on contained entities not annotated with @Indexed themselves.
      Parameters:
      xClass - The class for which to build a DocumentBuilderContainedEntity}
      context - Handle to default configuration settings
      similarity - The index level similarity
      reflectionManager - Reflection manager to use for processing the annotations
  • Method Details

    • addWorkToQueue

      public abstract void addWorkToQueue(Class<T> entityClass, T entity, Serializable id, boolean delete, boolean add, boolean batch, List<LuceneWork> queue)
    • documentBuilderSpecificChecks

      protected abstract void documentBuilderSpecificChecks(XProperty member, AbstractDocumentBuilder.PropertiesMetadata propertiesMetadata, boolean isRoot, String prefix, ConfigContext context)
    • getId

      public abstract Serializable getId(Object entity)
      In case of an indexed entity, return the value of it's identifier: what is marked as @Id or @DocumentId; in case the entity uses @ProvidedId, it's illegal to call this method.
      Parameters:
      entity - the instance for which to retrieve the id
      Returns:
      the value, or null if it's not an indexed entity
      Throws:
      IllegalStateException - when used with a @ProvidedId annotated entity
    • isRoot

      public boolean isRoot()
    • getBeanClass

      public Class<?> getBeanClass()
    • getBeanXClass

      public XClass getBeanXClass()
    • getMetadata

    • getSimilarity

      public Similarity getSimilarity()
    • getAnalyzer

      public Analyzer getAnalyzer()
    • getEntityState

      public EntityState getEntityState()
    • getMappedSubclasses

      public Set<Class<?>> getMappedSubclasses()
    • postInitialize

      public void postInitialize(Set<Class<?>> indexedClasses)
    • getAnalyzer

      protected Analyzer getAnalyzer(XAnnotatedElement annotatedElement, ConfigContext context)
    • addToScopedAnalyzer

      protected void addToScopedAnalyzer(String fieldName, Analyzer analyzer, Index index)
    • getBoost

      protected Float getBoost(XProperty member, Field fieldAnn)
    • getDynamicBoost

      protected BoostStrategy getDynamicBoost(XProperty member)
    • getTermVector

      protected Field.TermVector getTermVector(TermVector vector)
    • getIndex

      protected Field.Index getIndex(Index index)
    • appendContainedInWorkForInstance

      public void appendContainedInWorkForInstance(Object instance, WorkPlan workplan)
      If we have a work instance we have to check whether the instance to be indexed is contained in any other indexed entities.
    • getPrecisionStep

      protected Integer getPrecisionStep(NumericField numericFieldAnn)
    • isDirty

      public boolean isDirty(String[] dirtyPropertyNames)
      Hibernate entities might be considered dirty, but still have only changes that don't affect indexing. So this isDirty() implementation will return true only if the proposed change is possibly affecting the index.
      Parameters:
      dirtyPropertyNames - Contains the property name of each value which changed, or null for everything.
      Returns:
      true if it can't make sure the index doesn't need an update
      Since:
      3.4
    • isCollectionRoleExcluded

      public boolean isCollectionRoleExcluded(String collectionRole)
      Returns true if the collection event is not going to affect the index state, so that the indexing event can be skipped.
      Parameters:
      collectionRole -
      Returns:
      true if the collection Role does not affect index state
      Since:
      3.4
    • forceStateInspectionOptimizationsDisabled

      public void forceStateInspectionOptimizationsDisabled()
      Makes sure isCollectionRoleExcluded will always return false, so that collection update events are always processed.
      See Also: