@Override public void updateCurrentFactory(DataAndNewMetadata<R> update, String user, String comment, MergeDiffInfo<R> mergeDiff) { S changeSummary = null; if (mergeDiff!=null){ changeSummary=changeSummaryCreator.createChangeSummary(mergeDiff); } final StoredDataMetadata<S> storedDataMetadata = new StoredDataMetadata<>( LocalDateTime.now(), UUID.randomUUID().toString(), user, comment, update.metadata.baseVersionId, update.metadata.dataModelVersion, changeSummary ); final DataAndStoredMetadata<R,S> updateData = new DataAndStoredMetadata<>(update.root, storedDataMetadata); writeFile(currentFactoryPath, dataSerialisationManager.write(updateData.root)); writeFile(currentFactoryPathMetadata, dataSerialisationManager.writeStorageMetadata(updateData.metadata)); fileSystemFactoryStorageHistory.updateHistory(updateData.metadata,updateData.root); }