protected <TElement extends Element> void saveExistingElementMutation(ExistingElementMutationImpl<TElement> mutation, Authorizations authorizations) {
Iterable<Property> properties = mutation.getProperties();
Iterable<PropertyRemoveMutation> propertyRemoves = mutation.getPropertyRemoves();
updatePropertiesInternal(properties, propertyRemoves);
getGraph().saveProperties(mutation.getElement(), properties, propertyRemoves, mutation.getIndexHint(), authorizations);
if (mutation.getElement() instanceof Edge) {
if (mutation.getNewElementVisibility() != null) {
getGraph().alterEdgeVisibility(mutation.getElement().getId(), mutation.getNewElementVisibility());
}
getGraph().alterEdgePropertyVisibilities(mutation.getElement().getId(), mutation.getAlterPropertyVisibilities(), authorizations);
getGraph().alterEdgePropertyMetadata(mutation.getElement().getId(), mutation.getSetPropertyMetadatas());
if (mutation instanceof EdgeMutation) {
EdgeMutation edgeMutation = (EdgeMutation) mutation;
if (edgeMutation.getNewEdgeLabel() != null) {
getGraph().alterEdgeLabel(mutation.getElement().getId(), edgeMutation.getNewEdgeLabel());
}
}
} else if (mutation.getElement() instanceof Vertex) {
if (mutation.getNewElementVisibility() != null) {
getGraph().alterVertexVisibility(mutation.getElement().getId(), mutation.getNewElementVisibility());
}
getGraph().alterVertexPropertyVisibilities(mutation.getElement().getId(), mutation.getAlterPropertyVisibilities(), authorizations);
getGraph().alterVertexPropertyMetadata(mutation.getElement().getId(), mutation.getSetPropertyMetadatas());
} else {
throw new IllegalStateException("Unexpected element type: " + mutation.getElement());
}
}