From db0cef9cc11324e5310480f1b4c7e9b210e7f7bc Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 10 Nov 2014 17:10:18 +0100 Subject: [PATCH] IDEA-131795 Attachment could be not shown while reporting exception --- .../intellij/diagnostic/AbstractMessage.java | 9 +++++++++ .../intellij/diagnostic/GroupedLogMessage.java | 17 +++++++++++++++++ .../com/intellij/diagnostic/ITNReporter.java | 4 +--- .../intellij/diagnostic/IdeErrorsDialog.java | 18 ++++++++---------- .../com/intellij/diagnostic/LogMessageEx.java | 2 ++ 5 files changed, 37 insertions(+), 13 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/diagnostic/AbstractMessage.java b/platform/platform-impl/src/com/intellij/diagnostic/AbstractMessage.java index 16725a6022cf..82f67b71c6cb 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/AbstractMessage.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/AbstractMessage.java @@ -16,10 +16,14 @@ package com.intellij.diagnostic; import com.intellij.notification.Notification; +import com.intellij.openapi.diagnostic.Attachment; import com.intellij.openapi.diagnostic.SubmittedReportInfo; +import org.jetbrains.annotations.NotNull; import java.util.Calendar; +import java.util.Collections; import java.util.Date; +import java.util.List; public abstract class AbstractMessage { @@ -98,4 +102,9 @@ public abstract class AbstractMessage { public void setAssigneeId(Integer assigneeId) { myAssigneeId = assigneeId; } + + @NotNull + public List getAttachments() { + return Collections.emptyList(); + } } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/GroupedLogMessage.java b/platform/platform-impl/src/com/intellij/diagnostic/GroupedLogMessage.java index 80ed37aade57..d2709d9bd164 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/GroupedLogMessage.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/GroupedLogMessage.java @@ -15,6 +15,12 @@ */ package com.intellij.diagnostic; +import com.intellij.openapi.diagnostic.Attachment; +import com.intellij.util.Function; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; import java.util.List; public class GroupedLogMessage extends AbstractMessage { @@ -60,4 +66,15 @@ public class GroupedLogMessage extends AbstractMessage { } super.setAssigneeId(assigneeId); } + + @NotNull + @Override + public List getAttachments() { + return ContainerUtil.concat(getMessages(), new Function>() { + @Override + public Collection fun(AbstractMessage message) { + return message.getAttachments(); + } + }); + } } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/ITNReporter.java b/platform/platform-impl/src/com/intellij/diagnostic/ITNReporter.java index b951b59ed9dd..92eb490fbb7c 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/ITNReporter.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/ITNReporter.java @@ -111,9 +111,7 @@ public class ITNReporter extends ErrorReportSubmitter { Object data = event.getData(); if (data instanceof AbstractMessage) { errorBean.setAssigneeId(((AbstractMessage)data).getAssigneeId()); - } - if (data instanceof LogMessageEx) { - errorBean.setAttachments(((LogMessageEx)data).getAttachments()); + errorBean.setAttachments(((AbstractMessage)data).getAttachments()); } String login = settings.ITN_LOGIN; diff --git a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java index 88201f6b1738..9b4d66357957 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java @@ -468,13 +468,12 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene } private void updateAttachmentWarning(final AbstractMessage message) { - final List includedAttachments; - if (message instanceof LogMessageEx && - !(includedAttachments = ContainerUtil.filter(((LogMessageEx)message).getAttachments(), new Condition() { - public boolean value(final Attachment attachment) { - return attachment.isIncluded(); - } - })).isEmpty()) { + final List includedAttachments = ContainerUtil.filter(message.getAttachments(), new Condition() { + public boolean value(final Attachment attachment) { + return attachment.isIncluded(); + } + }); + if (!includedAttachments.isEmpty()) { myAttachmentWarningPanel.setVisible(true); if (includedAttachments.size() == 1) { myAttachmentWarningLabel.setHtmlText( @@ -649,7 +648,7 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene boolean hasAttachment = false; for (ArrayList merged : myMergedMessages) { final AbstractMessage message = merged.get(0); - if (message instanceof LogMessageEx && !((LogMessageEx)message).getAttachments().isEmpty()) { + if (!message.getAttachments().isEmpty()) { hasAttachment = true; break; } @@ -693,8 +692,7 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene myDetailsTabForm.setAssigneeId(message == null ? null : message.getAssigneeId()); - List attachments = - message instanceof LogMessageEx ? ((LogMessageEx)message).getAttachments() : Collections.emptyList(); + List attachments = message != null ? message.getAttachments() : Collections.emptyList(); if (!attachments.isEmpty()) { if (myTabs.indexOfComponent(myAttachmentsTabForm.getContentPane()) == -1) { myTabs.addTab(DiagnosticBundle.message("error.attachments.tab.title"), myAttachmentsTabForm.getContentPane()); diff --git a/platform/platform-impl/src/com/intellij/diagnostic/LogMessageEx.java b/platform/platform-impl/src/com/intellij/diagnostic/LogMessageEx.java index ada03a4f3330..ad7f148b6947 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/LogMessageEx.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/LogMessageEx.java @@ -76,6 +76,8 @@ public class LogMessageEx extends LogMessage { myAttachments.add(attachment); } + @NotNull + @Override public List getAttachments() { return myAttachments != null ? myAttachments : Collections.emptyList(); }