From f2e26105d1143ba48b09fd73bd125aff3a06a240 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Mon, 1 Apr 2019 08:05:35 +0300 Subject: [PATCH] Gradle: catch deserialization issue caused by fast serializer EA-140767 --- .../settings/GradleExtensionsSettings.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java index e0119b3d5b73..82572ee19923 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java @@ -9,6 +9,7 @@ import com.intellij.openapi.externalSystem.model.ProjectKeys; import com.intellij.openapi.externalSystem.model.project.ModuleData; import com.intellij.openapi.externalSystem.model.project.ProjectData; import com.intellij.openapi.externalSystem.service.project.ProjectDataManager; +import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjectsManager; import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; @@ -57,11 +58,19 @@ public class GradleExtensionsSettings { DataNode projectDataNode = projectInfo.getExternalProjectStructure(); if (projectDataNode == null) continue; - Collection> nodes = new SmartList<>(); - for (DataNode moduleNode : ExternalSystemApiUtil.findAll(projectDataNode, ProjectKeys.MODULE)) { - ContainerUtil.addIfNotNull(nodes, ExternalSystemApiUtil.find(moduleNode, GradleExtensionsDataService.KEY)); + String projectPath = projectInfo.getExternalProjectPath(); + try { + Collection> nodes = new SmartList<>(); + for (DataNode moduleNode : ExternalSystemApiUtil.findAll(projectDataNode, ProjectKeys.MODULE)) { + ContainerUtil.addIfNotNull(nodes, ExternalSystemApiUtil.find(moduleNode, GradleExtensionsDataService.KEY)); + } + getInstance(project).add(projectPath, nodes); + } + catch (ClassCastException e) { + // catch deserialization issue caused by fast serializer + LOG.debug(e); + ExternalProjectsManager.getInstance(project).getExternalProjectsWatcher().markDirty(projectPath); } - getInstance(project).add(projectInfo.getExternalProjectPath(), nodes); } }