diff --git a/platform/platform-api/src/com/intellij/openapi/diagnostic/ErrorReportSubmitter.java b/platform/platform-api/src/com/intellij/openapi/diagnostic/ErrorReportSubmitter.java index 099939366441..6308fc2b4c57 100644 --- a/platform/platform-api/src/com/intellij/openapi/diagnostic/ErrorReportSubmitter.java +++ b/platform/platform-api/src/com/intellij/openapi/diagnostic/ErrorReportSubmitter.java @@ -65,6 +65,8 @@ public abstract class ErrorReportSubmitter implements PluginAware { /** * This method is called whenever an exception in a plugin code had happened and a user decided to report a problem to the plugin vendor. + *

+ * Note: the method is not abstract because compatibility, but all implementations must override it. * * @param events a non-empty sequence of error descriptors. * @param additionalInfo additional information provided by a user. @@ -76,33 +78,24 @@ public abstract class ErrorReportSubmitter implements PluginAware { @Nullable String additionalInfo, @NotNull Component parentComponent, @NotNull Consumer consumer) { - return trySubmitAsync(events, additionalInfo, parentComponent, consumer); + try { + consumer.consume(submit(events, parentComponent)); + return true; + } + catch (UnsupportedOperationException e) { + Logger.getInstance(getClass()).warn(e); + consumer.consume(new SubmittedReportInfo(null, e.getMessage(), SubmittedReportInfo.SubmissionStatus.FAILED)); + return false; + } } // /** @deprecated do not override; implement {@link #submit(IdeaLoggingEvent[], String, Component, Consumer)} instead */ @Deprecated - @ApiStatus.ScheduledForRemoval(inVersion = "2020.3") - @SuppressWarnings("ALL") - public boolean trySubmitAsync(IdeaLoggingEvent[] events, String info, Component parent, Consumer consumer) { - submitAsync(events, info, parent, consumer); - return true; - } - - /** @deprecated do not override; implement {@link #submit(IdeaLoggingEvent[], String, Component, Consumer)} instead */ - @Deprecated - @ApiStatus.ScheduledForRemoval(inVersion = "2020.3") - @SuppressWarnings("ALL") - public void submitAsync(IdeaLoggingEvent[] events, String info, Component parent, Consumer consumer) { - consumer.consume(submit(events, parent)); - } - - /** @deprecated do not override; implement {@link #submit(IdeaLoggingEvent[], String, Component, Consumer)} instead */ - @Deprecated - @ApiStatus.ScheduledForRemoval(inVersion = "2020.3") + @ApiStatus.ScheduledForRemoval(inVersion = "2021.3") @SuppressWarnings("ALL") public SubmittedReportInfo submit(IdeaLoggingEvent[] events, Component parent) { - throw new UnsupportedOperationException("Deprecated API called"); + throw new UnsupportedOperationException("'" + getClass().getName() + "' doesn't implement exception submitter API"); } // -} \ No newline at end of file +} diff --git a/platform/platform-impl/resources/messages/DiagnosticBundle.properties b/platform/platform-impl/resources/messages/DiagnosticBundle.properties index 111ba49808ff..c5a72aeb108e 100644 --- a/platform/platform-impl/resources/messages/DiagnosticBundle.properties +++ b/platform/platform-impl/resources/messages/DiagnosticBundle.properties @@ -29,6 +29,7 @@ error.list.message.submitted=Submitted error.list.message.submitted.as.link=Submitted as {1} error.list.message.duplicate=[Duplicate] error.list.message.submission.failed=Submission failed +error.list.message.submission.failed.details=Submission failed ({0}) error.dialog.foreign.plugin.warning=This plugin is not a production of JetBrains. Please report the problem to {0}. error.dialog.foreign.plugin.warning.unnamed=This plugin is not a production of JetBrains. Please report the problem to the plugin vendor. error.dialog.foreign.plugin.warning.unknown=This plugin is not a production of JetBrains. Please report the problem to the plugin vendor. diff --git a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java index 05d44d711037..fbecc67c27ca 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java @@ -467,14 +467,14 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene .append(DiagnosticBundle.message("error.list.disable.plugin")).append(""); } - if (message.isSubmitted()) { + if (message.isSubmitting()) { + info.append(' ').append(DiagnosticBundle.message("error.list.message.submitting")); + } + else if (message.getSubmissionInfo() != null) { info.append(' ').append(""); appendSubmissionInformation(message.getSubmissionInfo(), info); info.append(""); } - else if (message.isSubmitting()) { - info.append(' ').append(DiagnosticBundle.message("error.list.message.submitting")); - } myInfoLabel.setText(info.toString()); @@ -949,7 +949,9 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene public static void appendSubmissionInformation(@NotNull SubmittedReportInfo info, @NotNull StringBuilder out) { if (info.getStatus() == SubmittedReportInfo.SubmissionStatus.FAILED) { - out.append(DiagnosticBundle.message("error.list.message.submission.failed")); + String details = info.getLinkText(); + out.append(details != null ? DiagnosticBundle.message("error.list.message.submission.failed.details", details) + : DiagnosticBundle.message("error.list.message.submission.failed")); } else if (info.getURL() != null && info.getLinkText() != null) { out.append(DiagnosticBundle.message("error.list.message.submitted.as.link", info.getURL(), info.getLinkText()));