protected void persistNode(final Object copy, final MultiTenantCopyContext context) {
if (!genericEntityService.sessionContains(copy) && !genericEntityService.idAssigned(copy)) {
final Object original = genericEntityService.readGenericEntity(copy.getClass().getName(), context.removeOriginalIdentifier(copy));
extensionManager.getProxy().transformCopy(context, original, copy);
extensionManager.getProxy().prepareForSave(context, original, copy);
IdentityExecutionUtils.runOperationByIdentifier(new IdentityOperation<Void, RuntimeException>() {
@Override
public Void execute() {
genericEntityService.persist(copy);
extensionManager.getProxy().postSave(context, original, copy);
return null;
}
}, context.getToSite(), context.getToSite(), context.getToCatalog());
context.storeEquivalentMapping(original.getClass().getName(), context.getIdentifier(original), context.getIdentifier(copy));
}
}