public FactoryUpdateLog<R> updateCurrentFactory(DataAndNewMetadata<R> update, String user, String comment, Function<String,Boolean> permissionChecker) { R commonVersion = dataStorage.getHistoryFactory(update.metadata.baseVersionId); FactoryUpdateLog<R> factoryLog = factoryManager.update(commonVersion,update.root, permissionChecker); if (!factoryLog.failedUpdate()&& factoryLog.successfullyMerged()){ DataAndNewMetadata<R> copy = new DataAndNewMetadata<>(factoryManager.getCurrentFactory().internal().copy(),update.metadata); dataStorage.updateCurrentFactory(copy,user,comment,factoryLog.mergeDiffInfo); } return factoryLog; }