Module spring.data.neo4j
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
Nested ClassesModifier and TypeClassDescriptionstatic enumValid processing states.static interfaceReactive Supplier for arbitrary relationship idsstatic interfaceSupplier for arbitrary relationship ids -
Constructor Summary
ConstructorsConstructorDescriptionNestedRelationshipProcessingStateMachine(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) Collection<org.springframework.data.neo4j.core.mapping.NestedRelationshipProcessingStateMachine.RelationshipIdUpdateContext>getStateOf(Object fromId, RelationshipDescription relationshipDescription, Collection<?> valuesToStore) booleanhasProcessedRelationship(Object fromId, RelationshipDescription relationshipDescription) Checks if the relationship has already been processed.booleanhasProcessedRelationshipEntity(Object source, Object target, RelationshipDescription type) booleanhasProcessedValue(Object value) Checks if the value has already been processed.voidmarkAsAliased(Object aliasEntity, Object entityOrId) voidmarkAsUpdated(org.springframework.data.neo4j.core.mapping.NestedRelationshipProcessingStateMachine.RelationshipIdUpdateContext context) voidmarkEntityAsProcessed(Object valueToStore, Object elementId) Marks the passed objects as processedvoidmarkRelationshipAsProcessed(Object fromId, RelationshipDescription relationshipDescription) Marks the passed objects as processedvoidregisterInitialObject(Object initialObject, Object elementId) voidrequireIdUpdate(Neo4jPersistentEntity<?> sourceEntity, RelationshipDescription relationshipDescription, boolean canUseElementId, Object fromId, Object toId, NestedRelationshipContext relationshipContext, Object relatedValueToStore, Neo4jPersistentProperty idProperty) voidstoreProcessRelationshipEntity(MappingSupport.RelationshipPropertiesWithEntityHolder id, Object source, Object target, RelationshipDescription type) reactor.core.publisher.Mono<Void>updateRelationshipIds(NestedRelationshipProcessingStateMachine.ReactiveRelationshipIdSupplier idSupplier) void
-
Constructor Details
-
NestedRelationshipProcessingStateMachine
-
NestedRelationshipProcessingStateMachine
public NestedRelationshipProcessingStateMachine(Neo4jMappingContext mappingContext, @Nullable Object initialObject, @Nullable Object elementId)
-
-
Method Details
-
registerInitialObject
-
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)
-
storeProcessRelationshipEntity
public void storeProcessRelationshipEntity(MappingSupport.RelationshipPropertiesWithEntityHolder id, Object source, Object target, RelationshipDescription type) -
hasProcessedRelationshipEntity
public boolean hasProcessedRelationshipEntity(Object source, Object target, RelationshipDescription type) -
requireIdUpdate
public void requireIdUpdate(Neo4jPersistentEntity<?> sourceEntity, RelationshipDescription relationshipDescription, boolean canUseElementId, Object fromId, Object toId, NestedRelationshipContext relationshipContext, Object relatedValueToStore, Neo4jPersistentProperty idProperty) -
getRequiresIdUpdate
public Collection<org.springframework.data.neo4j.core.mapping.NestedRelationshipProcessingStateMachine.RelationshipIdUpdateContext> getRequiresIdUpdate() -
markAsUpdated
public void markAsUpdated(org.springframework.data.neo4j.core.mapping.NestedRelationshipProcessingStateMachine.RelationshipIdUpdateContext context) -
updateRelationshipIds
public void updateRelationshipIds(NestedRelationshipProcessingStateMachine.RelationshipIdSupplier idSupplier) -
updateRelationshipIds
public reactor.core.publisher.Mono<Void> updateRelationshipIds(NestedRelationshipProcessingStateMachine.ReactiveRelationshipIdSupplier idSupplier) -
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
-