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
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Valid processing states. -
Constructor Summary
ConstructorDescriptionNestedRelationshipProcessingStateMachine
(Neo4jMappingContext mappingContext) NestedRelationshipProcessingStateMachine
(Neo4jMappingContext mappingContext, Object initialObject, Object elementId) -
Method Summary
Modifier and TypeMethodDescriptiongetObjectId
(Object object) This returns an id for the given object.getProcessedAs
(Object entity) getStateOf
(Object fromId, RelationshipDescription relationshipDescription, Collection<?> valuesToStore) boolean
hasProcessedRelationship
(Object fromId, RelationshipDescription relationshipDescription) Checks if the relationship has already been processed.boolean
hasProcessedValue
(Object value) Checks if the value has already been processed.void
markAsAliased
(Object aliasEntity, Object entityOrId) void
markEntityAsProcessed
(Object valueToStore, Object elementId) Marks the passed objects as processedvoid
markRelationshipAsProcessed
(Object fromId, RelationshipDescription relationshipDescription) Marks the passed objects as processed
-
Constructor Details
-
NestedRelationshipProcessingStateMachine
-
NestedRelationshipProcessingStateMachine
public NestedRelationshipProcessingStateMachine(Neo4jMappingContext mappingContext, Object initialObject, Object elementId)
-
-
Method Details
-
getStateOf
public NestedRelationshipProcessingStateMachine.ProcessState getStateOf(@Nullable Object fromId, RelationshipDescription relationshipDescription, @Nullable Collection<?> valuesToStore) - Parameters:
relationshipDescription
- Check whether this relationship description has been processedvaluesToStore
- 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
Marks the passed objects as processed- Parameters:
valueToStore
- If not null, all non-null values will be marked as processedelementId
- The internal id of the value processed
-
hasProcessedValue
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
-
getObjectId
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 modulestoString(id())
.- Parameters:
object
- The object for which an id is requested- Returns:
- The objects id
-
getProcessedAs
-