From 4ceb9c1b8c737b869a639939b86ca8f3ff78ce09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 26 Feb 2021 12:30:08 +0100 Subject: [PATCH] Wrap event --- .../scm/importexport/FromBundleImporter.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scm-webapp/src/main/java/sonia/scm/importexport/FromBundleImporter.java b/scm-webapp/src/main/java/sonia/scm/importexport/FromBundleImporter.java index eb6da2c213..b006168790 100644 --- a/scm-webapp/src/main/java/sonia/scm/importexport/FromBundleImporter.java +++ b/scm-webapp/src/main/java/sonia/scm/importexport/FromBundleImporter.java @@ -30,8 +30,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.Type; import sonia.scm.event.ScmEventBus; +import sonia.scm.repository.ImportRepositoryHookEvent; import sonia.scm.repository.InternalRepositoryException; import sonia.scm.repository.Repository; +import sonia.scm.repository.RepositoryHookEvent; import sonia.scm.repository.RepositoryImportEvent; import sonia.scm.repository.RepositoryManager; import sonia.scm.repository.RepositoryPermission; @@ -46,6 +48,7 @@ import javax.inject.Inject; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import static java.util.Collections.singletonList; @@ -106,7 +109,7 @@ public class FromBundleImporter { long length = Files.asByteSink(file).writeFrom(inputStream); LOG.info("copied {} bytes to temp, start bundle import", length); logger.step("importing repository data from dump file"); - service.getUnbundleCommand().setCompressed(compressed).unbundle(file); + runUnbundleCommand(compressed, service, file); logger.finished(); } catch (IOException e) { logger.failed(e); @@ -120,4 +123,16 @@ public class FromBundleImporter { } }; } + + private void runUnbundleCommand(boolean compressed, RepositoryService service, File file) throws IOException { + AtomicReference eventSink = new AtomicReference<>(); + service.getUnbundleCommand() + .setCompressed(compressed) + .setPostEventSink(eventSink::set) + .unbundle(file); + RepositoryHookEvent repositoryHookEvent = eventSink.get(); + if (repositoryHookEvent != null) { + eventBus.post(new ImportRepositoryHookEvent(repositoryHookEvent)); + } + } }