Search in sources :

Example 1 with AbstractMessage

use of com.intellij.diagnostic.AbstractMessage in project intellij-community by JetBrains.

the class GuiTestUtil method failIfIdeHasFatalErrors.

// Called by MethodInvoker via reflection
@SuppressWarnings("unused")
public static void failIfIdeHasFatalErrors() {
    final MessagePool messagePool = MessagePool.getInstance();
    List<AbstractMessage> fatalErrors = messagePool.getFatalErrors(true, true);
    int fatalErrorCount = fatalErrors.size();
    for (int i = 0; i < fatalErrorCount; i++) {
        LOG.error("** Fatal Error " + (i + 1) + " of " + fatalErrorCount);
        AbstractMessage error = fatalErrors.get(i);
        LOG.error("* Message: ");
        LOG.error(error.getMessage());
        String additionalInfo = error.getAdditionalInfo();
        if (isNotEmpty(additionalInfo)) {
            LOG.error("* Additional Info: ");
            LOG.error(additionalInfo);
        }
        String throwableText = error.getThrowableText();
        if (isNotEmpty(throwableText)) {
            LOG.error("* Throwable: ");
            LOG.error(throwableText);
        }
    }
    if (fatalErrorCount > 0) {
        throw new AssertionError(fatalErrorCount + " fatal errors found. Stopping test execution.");
    }
}
Also used : AbstractMessage(com.intellij.diagnostic.AbstractMessage) MessagePool(com.intellij.diagnostic.MessagePool)

Example 2 with AbstractMessage

use of com.intellij.diagnostic.AbstractMessage in project intellij-community by JetBrains.

the class GuiTestUtil method doesIdeHaveFatalErrors.

// Called by MethodInvoker via reflection
@SuppressWarnings("unused")
public static boolean doesIdeHaveFatalErrors() {
    final MessagePool messagePool = MessagePool.getInstance();
    List<AbstractMessage> fatalErrors = messagePool.getFatalErrors(true, true);
    return !fatalErrors.isEmpty();
}
Also used : AbstractMessage(com.intellij.diagnostic.AbstractMessage) MessagePool(com.intellij.diagnostic.MessagePool)

Example 3 with AbstractMessage

use of com.intellij.diagnostic.AbstractMessage in project android by JetBrains.

the class ErrorReporter method submit.

@Override
public boolean submit(@NotNull IdeaLoggingEvent[] events, @Nullable String description, @Nullable Component parentComponent, @NotNull Consumer<SubmittedReportInfo> callback) {
    IdeaLoggingEvent event = events[0];
    ErrorBean bean = new ErrorBean(event.getThrowable(), IdeaLogger.ourLastActionId);
    final DataContext dataContext = DataManager.getInstance().getDataContext(parentComponent);
    bean.setDescription(description);
    bean.setMessage(event.getMessage());
    Throwable t = event.getThrowable();
    if (t != null) {
        final PluginId pluginId = IdeErrorsDialog.findPluginId(t);
        if (pluginId != null) {
            final IdeaPluginDescriptor ideaPluginDescriptor = PluginManager.getPlugin(pluginId);
            if (ideaPluginDescriptor != null && (!ideaPluginDescriptor.isBundled() || ideaPluginDescriptor.allowBundledUpdate())) {
                bean.setPluginName(ideaPluginDescriptor.getName());
                bean.setPluginVersion(ideaPluginDescriptor.getVersion());
            }
        }
    }
    Object data = event.getData();
    // Early escape (and no UI impact) if these are analytics events being pushed from the platform
    if (handleAnalyticsReports(t, data)) {
        return true;
    }
    if (data instanceof AbstractMessage) {
        bean.setAttachments(((AbstractMessage) data).getIncludedAttachments());
    }
    final Project project = CommonDataKeys.PROJECT.getData(dataContext);
    Consumer<String> successCallback = token -> {
        final SubmittedReportInfo reportInfo = new SubmittedReportInfo(null, "Issue " + token, SubmittedReportInfo.SubmissionStatus.NEW_ISSUE);
        callback.consume(reportInfo);
        ReportMessages.GROUP.createNotification(ReportMessages.ERROR_REPORT, "Submitted", NotificationType.INFORMATION, null).setImportant(false).notify(project);
    };
    Consumer<Exception> errorCallback = e -> {
        String message = AndroidBundle.message("error.report.at.b.android", e.getMessage());
        ReportMessages.GROUP.createNotification(ReportMessages.ERROR_REPORT, message, NotificationType.ERROR, NotificationListener.URL_OPENING_LISTENER).setImportant(false).notify(project);
    };
    Task.Backgroundable feedbackTask;
    if (data instanceof ErrorReportCustomizer) {
        feedbackTask = ((ErrorReportCustomizer) data).makeReportingTask(project, FEEDBACK_TASK_TITLE, true, bean, successCallback, errorCallback);
    } else {
        List<Pair<String, String>> kv = IdeaITNProxy.getKeyValuePairs(null, null, bean, IdeaLogger.getOurCompilationTimestamp(), ApplicationManager.getApplication(), (ApplicationInfoEx) ApplicationInfo.getInstance(), ApplicationNamesInfo.getInstance(), UpdateSettings.getInstance());
        feedbackTask = new SubmitCrashReportTask(project, FEEDBACK_TASK_TITLE, true, t, pair2map(kv), successCallback, errorCallback);
    }
    if (project == null) {
        feedbackTask.run(new EmptyProgressIndicator());
    } else {
        ProgressManager.getInstance().run(feedbackTask);
    }
    return true;
}
Also used : SubmittedReportInfo(com.intellij.openapi.diagnostic.SubmittedReportInfo) DataContext(com.intellij.openapi.actionSystem.DataContext) IdeErrorsDialog(com.intellij.diagnostic.IdeErrorsDialog) ReportMessages(com.intellij.diagnostic.ReportMessages) Task(com.intellij.openapi.progress.Task) CrashReport(com.android.tools.idea.diagnostics.crash.CrashReport) ApplicationInfo(com.intellij.openapi.application.ApplicationInfo) Map(java.util.Map) ApplicationNamesInfo(com.intellij.openapi.application.ApplicationNamesInfo) Project(com.intellij.openapi.project.Project) CommonDataKeys(com.intellij.openapi.actionSystem.CommonDataKeys) ApplicationInfoEx(com.intellij.openapi.application.ex.ApplicationInfoEx) ErrorReportSubmitter(com.intellij.openapi.diagnostic.ErrorReportSubmitter) DataManager(com.intellij.ide.DataManager) IdeaPluginDescriptor(com.intellij.ide.plugins.IdeaPluginDescriptor) PluginManager(com.intellij.ide.plugins.PluginManager) ProgressManager(com.intellij.openapi.progress.ProgressManager) AndroidBundle(org.jetbrains.android.util.AndroidBundle) IdeaLogger(com.intellij.idea.IdeaLogger) IdeaLoggingEvent(com.intellij.openapi.diagnostic.IdeaLoggingEvent) Nullable(com.android.annotations.Nullable) Maps(com.google.common.collect.Maps) NotificationListener(com.intellij.notification.NotificationListener) NotificationType(com.intellij.notification.NotificationType) java.awt(java.awt) EmptyProgressIndicator(com.intellij.openapi.progress.EmptyProgressIndicator) ErrorBean(com.intellij.errorreport.bean.ErrorBean) List(java.util.List) AbstractMessage(com.intellij.diagnostic.AbstractMessage) CrashReporter(com.android.tools.idea.diagnostics.crash.CrashReporter) UpdateSettings(com.intellij.openapi.updateSettings.impl.UpdateSettings) Pair(com.intellij.openapi.util.Pair) ApplicationManager(com.intellij.openapi.application.ApplicationManager) IdeaITNProxy(org.jetbrains.android.diagnostics.error.IdeaITNProxy) NotNull(org.jetbrains.annotations.NotNull) PluginId(com.intellij.openapi.extensions.PluginId) Consumer(com.intellij.util.Consumer) Task(com.intellij.openapi.progress.Task) AbstractMessage(com.intellij.diagnostic.AbstractMessage) EmptyProgressIndicator(com.intellij.openapi.progress.EmptyProgressIndicator) IdeaPluginDescriptor(com.intellij.ide.plugins.IdeaPluginDescriptor) PluginId(com.intellij.openapi.extensions.PluginId) IdeaLoggingEvent(com.intellij.openapi.diagnostic.IdeaLoggingEvent) Project(com.intellij.openapi.project.Project) DataContext(com.intellij.openapi.actionSystem.DataContext) ErrorBean(com.intellij.errorreport.bean.ErrorBean) SubmittedReportInfo(com.intellij.openapi.diagnostic.SubmittedReportInfo) Pair(com.intellij.openapi.util.Pair)

Example 4 with AbstractMessage

use of com.intellij.diagnostic.AbstractMessage in project android by JetBrains.

the class GuiTests method fatalErrorsFromIde.

@NotNull
public static List<Error> fatalErrorsFromIde() {
    List<AbstractMessage> errorMessages = MessagePool.getInstance().getFatalErrors(true, true);
    List<Error> errors = new ArrayList<>(errorMessages.size());
    for (AbstractMessage errorMessage : errorMessages) {
        StringBuilder messageBuilder = new StringBuilder(errorMessage.getMessage());
        String additionalInfo = errorMessage.getAdditionalInfo();
        if (isNotEmpty(additionalInfo)) {
            messageBuilder.append(System.getProperty("line.separator")).append("Additional Info: ").append(additionalInfo);
        }
        Error error = new Error(messageBuilder.toString(), errorMessage.getThrowable());
        errors.add(error);
    }
    return Collections.unmodifiableList(errors);
}
Also used : AbstractMessage(com.intellij.diagnostic.AbstractMessage) ArrayList(java.util.ArrayList) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

AbstractMessage (com.intellij.diagnostic.AbstractMessage)4 MessagePool (com.intellij.diagnostic.MessagePool)2 NotNull (org.jetbrains.annotations.NotNull)2 Nullable (com.android.annotations.Nullable)1 CrashReport (com.android.tools.idea.diagnostics.crash.CrashReport)1 CrashReporter (com.android.tools.idea.diagnostics.crash.CrashReporter)1 Maps (com.google.common.collect.Maps)1 IdeErrorsDialog (com.intellij.diagnostic.IdeErrorsDialog)1 ReportMessages (com.intellij.diagnostic.ReportMessages)1 ErrorBean (com.intellij.errorreport.bean.ErrorBean)1 DataManager (com.intellij.ide.DataManager)1 IdeaPluginDescriptor (com.intellij.ide.plugins.IdeaPluginDescriptor)1 PluginManager (com.intellij.ide.plugins.PluginManager)1 IdeaLogger (com.intellij.idea.IdeaLogger)1 NotificationListener (com.intellij.notification.NotificationListener)1 NotificationType (com.intellij.notification.NotificationType)1 CommonDataKeys (com.intellij.openapi.actionSystem.CommonDataKeys)1 DataContext (com.intellij.openapi.actionSystem.DataContext)1 ApplicationInfo (com.intellij.openapi.application.ApplicationInfo)1 ApplicationManager (com.intellij.openapi.application.ApplicationManager)1