Class NestedRelationshipProcessingStateMachine

java.lang.Object
org.springframework.data.neo4j.core.mapping.NestedRelationshipProcessingStateMachine

@API(status=INTERNAL, since="6.0") public final class NestedRelationshipProcessingStateMachine extends Object
This stores all processed nested relations and objects during save of objects so that the recursive descent can be stopped accordingly.
Author:
Michael J. Simons
  • Constructor Details

  • Method Details

    • registerInitialObject

      public void registerInitialObject(Object initialObject, Object elementId)
    • getStateOf

      public NestedRelationshipProcessingStateMachine.ProcessState getStateOf(@Nullable Object fromId, RelationshipDescription relationshipDescription, @Nullable Collection<?> valuesToStore)
      Parameters:
      relationshipDescription - Check whether this relationship description has been processed
      valuesToStore - Check whether all the values in the collection have been processed
      Returns:
      The state of things processed
    • markRelationshipAsProcessed

      public void markRelationshipAsProcessed(Object fromId, @Nullable RelationshipDescription relationshipDescription)
      Marks the passed objects as processed
      Parameters:
      relationshipDescription - To be marked as processed
    • markEntityAsProcessed

      public void markEntityAsProcessed(Object valueToStore, Object elementId)
      Marks the passed objects as processed
      Parameters:
      valueToStore - If not null, all non-null values will be marked as processed
      elementId - The internal id of the value processed
    • hasProcessedValue

      public boolean hasProcessedValue(Object value)
      Checks if the value has already been processed.
      Parameters:
      value - the object that should be looked for in the registry.
      Returns:
      processed yes (true) / no (false)
    • hasProcessedRelationship

      public boolean hasProcessedRelationship(Object fromId, @Nullable RelationshipDescription relationshipDescription)
      Checks if the relationship has already been processed.
      Parameters:
      relationshipDescription - the relationship that should be looked for in the registry.
      Returns:
      processed yes (true) / no (false)
    • markAsAliased

      public void markAsAliased(Object aliasEntity, Object entityOrId)
    • getObjectId

      @Nullable public Object getObjectId(Object object)
      This returns an id for the given object. We deliberate use the wording of a generic object id as that might either be the Neo4j 5+ elementId() or on older Neo4j versions or with older data modules toString(id()).
      Parameters:
      object - The object for which an id is requested
      Returns:
      The objects id
    • getProcessedAs

      public Object getProcessedAs(Object entity)