From 5965955b92beac6145389ead26aa0b432b2a6462 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Mon, 25 Nov 2013 22:19:09 +0400 Subject: [PATCH] Add idea.log to exception report attachment --- .../intellij/diagnostic/AttachmentFactory.java | 16 ++++++++++++++++ .../designSurface/DesignerEditorPanel.java | 7 ++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/diagnostic/AttachmentFactory.java b/platform/platform-impl/src/com/intellij/diagnostic/AttachmentFactory.java index 0fb4baf1979b..9e107edcc140 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/AttachmentFactory.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/AttachmentFactory.java @@ -4,9 +4,11 @@ import com.intellij.openapi.diagnostic.Attachment; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.fileEditor.impl.LoadTextUtil; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import java.io.File; import java.io.IOException; import java.text.MessageFormat; @@ -26,6 +28,20 @@ public class AttachmentFactory { file.getFileType().isBinary() ? "File is binary" : LoadTextUtil.loadText(file).toString()); } + public static Attachment createAttachment(@NotNull File file, boolean isBinary) { + byte[] bytes = getBytes(file); + return new Attachment(file.getPath(), bytes, isBinary ? "File is binary" : new String(bytes)); + } + + private static byte[] getBytes(File file) { + try { + return FileUtil.loadFileBytes(file); + } + catch (IOException e) { + return Attachment.getBytes(MessageFormat.format(ERROR_MESSAGE_PATTERN, e.getMessage())); + } + } + private static byte[] getBytes(VirtualFile file) { try { return file.contentsToByteArray(); diff --git a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index dc12a18ce9ae..efffc93d1bd9 100644 --- a/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer-core/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -33,6 +33,7 @@ import com.intellij.diagnostic.LogMessageEx; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.diagnostic.Attachment; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtilCore; @@ -344,10 +345,14 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider if (info.myShowLog) { LOG.error(LogMessageEx.createEvent(info.myDisplayMessage, info.myMessage + "\n" + ExceptionUtil.getThrowableText(info.myThrowable), - AttachmentFactory.createAttachment(myFile))); + getErrorAttachments(info))); } } + protected Attachment[] getErrorAttachments(ErrorInfo info) { + return new Attachment[]{AttachmentFactory.createAttachment(myFile)}; + } + protected abstract void configureError(final @NotNull ErrorInfo info); protected void showErrorPage(final ErrorInfo info) {