Class PojoContainedTypeIndexingPlan<I,E>

java.lang.Object
org.hibernate.search.mapper.pojo.work.impl.PojoContainedTypeIndexingPlan<I,E>
Type Parameters:
I - The identifier type for the contained entity type.
E - The contained entity type.
All Implemented Interfaces:
PojoImplicitReindexingAssociationInverseSideResolverRootContext, ContainerExtractionContext, PojoTypeIndexingPlan

public class PojoContainedTypeIndexingPlan<I,E> extends Object
  • Constructor Details

  • Method Details

    • createState

      protected PojoContainedTypeIndexingPlan<I,E>.org.hibernate.search.mapper.pojo.work.impl.PojoContainedTypeIndexingPlan.ContainedEntityState createState(I identifier)
    • add

      public void add(Object providedId, DocumentRoutesDescriptor providedRoutes, Object entity)
      Description copied from interface: PojoTypeIndexingPlan
      Add an entity to the index, assuming that the entity is absent from the index.

      Note: depending on the backend, this may lead to errors or duplicate entries in the index if the entity was actually already present in the index before this call. When in doubt, you should rather use PojoTypeIndexingPlan.addOrUpdate(Object, DocumentRoutesDescriptor, Object, boolean, boolean, BitSet).

      Specified by:
      add in interface PojoTypeIndexingPlan
      Parameters:
      providedId - A value to extract the document ID from. Generally the expected value is the entity ID, but a different value may be expected depending on the mapping. If null, Hibernate Search will attempt to extract the ID from the entity.
      providedRoutes - The route to the current index shard. Only required if custom routing is enabled and the RoutingBridge is missing. If a RoutingBridge is assigned to the entity type, the routes will be computed using that bridge instead, and provided routes will be ignored.
      entity - The entity to add to the index.
    • addOrUpdate

      public void addOrUpdate(Object providedId, DocumentRoutesDescriptor providedRoutes, Object entity, boolean forceSelfDirty, boolean forceContainingDirty, BitSet dirtyPaths)
      Description copied from interface: PojoTypeIndexingPlan
      Consider an entity updated, and perform reindexing of this entity as well as containing entities as necessary, taking into account dirtyPaths, forceSelfDirty and forceContainingDirty.
      Specified by:
      addOrUpdate in interface PojoTypeIndexingPlan
      Parameters:
      providedId - A value to extract the document ID from. Generally the expected value is the entity ID, but a different value may be expected depending on the mapping. If null, Hibernate Search will attempt to extract the ID from the entity.
      providedRoutes - The routes to the current and previous index shards. Only required if custom routing is enabled and the RoutingBridge is missing or unable to provide all the correct previous routes. If a RoutingBridge is assigned to the entity type, the routes will be computed using that bridge instead, and provided routes (current and previous) will all be appended to the generated "previous routes".
      entity - The entity to update in the index.
      forceSelfDirty - If true, forces reindexing of this entity regardless of the dirty paths.
      forceContainingDirty - If true, forces the resolution of containing entities as dirty regardless of the dirty paths.
      dirtyPaths - The paths to consider dirty, as a BitSet. You can build such a BitSet by obtaining the dirty filter for the entity type and calling one of the filter methods.
    • delete

      public void delete(Object providedId, DocumentRoutesDescriptor providedRoutes, Object entity)
      Description copied from interface: PojoTypeIndexingPlan
      Delete an entity from the index.

      Entities to reindex as a result of this operation will not be resolved.

      No effect on the index if the entity is not in the index.

      Specified by:
      delete in interface PojoTypeIndexingPlan
      Parameters:
      providedId - A value to extract the document ID from. Generally the expected value is the entity ID, but a different value may be expected depending on the mapping. If the provided ID is null, Hibernate Search will attempt to extract the ID from the entity (which must be non-null in that case).
      providedRoutes - The routes to the current and previous index shards. Only required if custom routing is enabled and entity is null, or the RoutingBridge is missing or unable to provide all the correct previous routes. If a RoutingBridge is assigned to the entity type, and entity is non-null, the routes will be computed using that bridge instead, and provided routes (current and previous) will all be appended to the generated "previous routes".
      entity - The entity to delete from the index. May be null if providedId is non-null.
    • addOrUpdateOrDelete

      public void addOrUpdateOrDelete(Object providedId, DocumentRoutesDescriptor providedRoutes, boolean forceSelfDirty, boolean forceContainingDirty, BitSet dirtyPaths)
      Description copied from interface: PojoTypeIndexingPlan
      Consider an entity added, updated, or deleted, depending on the result of loading it by ID, and perform reindexing of this entity as well as containing entities as necessary, taking into account dirtyPaths, forceSelfDirty and forceContainingDirty.
      Specified by:
      addOrUpdateOrDelete in interface PojoTypeIndexingPlan
      Parameters:
      providedId - A value to extract the document ID from. Generally the expected value is the entity ID, but a different value may be expected depending on the mapping.
      providedRoutes - The routes to the current and previous index shards. Only required if custom routing is enabled and the RoutingBridge is missing or unable to provide all the correct previous routes. If a RoutingBridge is assigned to the entity type, the routes will be computed using that bridge instead, and provided routes (current and previous) will all be appended to the generated "previous routes".
      forceSelfDirty - If true, forces reindexing of this entity regardless of the dirty paths.
      forceContainingDirty - If true, forces the resolution of containing entities as dirty.
      dirtyPaths - The paths to consider dirty, as a BitSet. You can build such a BitSet by obtaining the dirty filter for the entity type and calling one of the filter methods.
    • updateAssociationInverseSide

      public void updateAssociationInverseSide(BitSet dirtyAssociationPaths, Object[] oldState, Object[] newState)
      Description copied from interface: PojoTypeIndexingPlan
      Consider an association updated with the given entities removed, and perform reindexing of the relevant entities on the inverse side of that association as necessary.

      This is mostly useful for cases where callers do not receive update events for associations on both sides, to have Hibernate Search act "as if" the inverse side of the association had been updated.

      WARNING: Getters returning the current state of the association on the removed entities are still expected to return the updated state of the association (for example through lazy-loading). Failing that, reindexing will index out-of-date information.

      Specified by:
      updateAssociationInverseSide in interface PojoTypeIndexingPlan
      Parameters:
      dirtyAssociationPaths - The association paths to consider dirty, as a BitSet. You can build such a BitSet by obtaining the dirty association filter for the entity type and calling one of the filter methods.
      oldState - The old state of the entity whose associations are dirty. May be null, in which case this state will not yield any reindexing.
      newState - The new state of the entity whose associations are dirty. May be null, in which case this state will not yield any reindexing.
    • runtimeIntrospector

      public PojoRuntimeIntrospector runtimeIntrospector()
      Specified by:
      runtimeIntrospector in interface PojoImplicitReindexingAssociationInverseSideResolverRootContext
    • detectContainingEntityType

      public PojoRawTypeIdentifier<?> detectContainingEntityType(Object containingEntity)
      Specified by:
      detectContainingEntityType in interface PojoImplicitReindexingAssociationInverseSideResolverRootContext
    • propagateOrIgnoreContainerExtractionException

      public void propagateOrIgnoreContainerExtractionException(RuntimeException exception)
      Description copied from interface: ContainerExtractionContext
      Propagates (rethrows) a RuntimeException thrown while extracting elements from a container, or ignores it so that the container is assumed empty.
      Specified by:
      propagateOrIgnoreContainerExtractionException in interface ContainerExtractionContext
      Parameters:
      exception - A RuntimeException thrown while extracting elements from a container.
    • propagateOrIgnorePropertyAccessException

      public void propagateOrIgnorePropertyAccessException(RuntimeException exception)
      Propagates (rethrows) a RuntimeException thrown while accessing a property (getter or field access), or ignores it so that the property is skipped.
      Specified by:
      propagateOrIgnorePropertyAccessException in interface PojoImplicitReindexingAssociationInverseSideResolverRootContext
      Parameters:
      exception - A RuntimeException thrown while accessing a property.
      See Also: