From 04569c656d1001bd7f8716f66494d0d6c1339919 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Tue, 6 Mar 2018 13:33:38 +0300 Subject: [PATCH] External system: use failure message for missing sync finish event --- .../util/ExternalSystemUtil.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java index 876cbacef4f7..4d3b69850ff7 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/util/ExternalSystemUtil.java @@ -575,15 +575,35 @@ public class ExternalSystemUtil { } } finally { - Supplier finishBuildEventSupplier = finishSyncEventSupplier.get(); - assert finishBuildEventSupplier != null; - FinishBuildEvent finishBuildEvent = finishBuildEventSupplier.get(); - assert finishBuildEvent != null; - ServiceManager.getService(project, SyncViewManager.class).onEvent(finishBuildEvent); if (!isPreviewMode) { project.putUserData(ExternalSystemDataKeys.NEWLY_CREATED_PROJECT, null); project.putUserData(ExternalSystemDataKeys.NEWLY_IMPORTED_PROJECT, null); } + sendSyncFinishEvent(finishSyncEventSupplier); + } + } + + private void sendSyncFinishEvent(@NotNull Ref> finishSyncEventSupplier) { + Exception exception = null; + FinishBuildEvent finishBuildEvent = null; + Supplier finishBuildEventSupplier = finishSyncEventSupplier.get(); + if (finishBuildEventSupplier != null) { + try { + finishBuildEvent = finishBuildEventSupplier.get(); + } + catch (Exception e) { + exception = e; + } + } + if (finishBuildEvent != null) { + ServiceManager.getService(project, SyncViewManager.class).onEvent(finishBuildEvent); + } + else { + String message = "Sync finish event has not been received"; + LOG.warn(message, exception); + ServiceManager.getService(project, SyncViewManager.class).onEvent( + new FinishBuildEventImpl(myTask.getId(), null, System.currentTimeMillis(), "sync failed", + new FailureResultImpl(new Exception(message, exception)))); } }