Gradle: catch deserialization issue caused by fast serializer EA-140767

This commit is contained in:
Vladislav.Soroka
2019-04-01 08:05:35 +03:00
parent 2ae462b07e
commit f2e26105d1
@@ -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<ProjectData> projectDataNode = projectInfo.getExternalProjectStructure();
if (projectDataNode == null) continue;
Collection<DataNode<GradleExtensions>> nodes = new SmartList<>();
for (DataNode<ModuleData> moduleNode : ExternalSystemApiUtil.findAll(projectDataNode, ProjectKeys.MODULE)) {
ContainerUtil.addIfNotNull(nodes, ExternalSystemApiUtil.find(moduleNode, GradleExtensionsDataService.KEY));
String projectPath = projectInfo.getExternalProjectPath();
try {
Collection<DataNode<GradleExtensions>> nodes = new SmartList<>();
for (DataNode<ModuleData> 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);
}
}