From 6cd8742ee6761eb71e2b1ed23ab72427660ebda5 Mon Sep 17 00:00:00 2001 From: Elsa Zacharia Date: Thu, 11 Jun 2026 12:34:42 +0530 Subject: [PATCH] Improve console water mark error messages improved exception messages to show actual water mark values and added validation. Currently in propertyChange() the exception is ignored so log invalid preference changes with specific values for easier debugging. Fixes: https://github.com/eclipse-platform/eclipse.platform/issues/1262 --- .../debug/internal/ui/views/console/ConsoleMessages.java | 1 + .../internal/ui/views/console/ConsoleMessages.properties | 1 + .../debug/internal/ui/views/console/ProcessConsole.java | 6 ++++++ .../src/org/eclipse/ui/console/IOConsole.java | 3 ++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java index 67b75c5d8d8..849b7de274b 100644 --- a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java +++ b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.java @@ -23,6 +23,7 @@ public class ConsoleMessages extends NLS { public static String ConsoleTerminateAction_0; public static String ConsoleTerminateAction_1; + public static String ConsoleBufferConfigurationError; public static String ProcessConsole_0; diff --git a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.properties b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.properties index 5c36ce0747a..238026fcd9d 100644 --- a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.properties +++ b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ConsoleMessages.properties @@ -19,6 +19,7 @@ ConsoleRemoveTerminatedAction_1=Remove Launch ConsoleTerminateAction_0=&Terminate ConsoleTerminateAction_1=Terminate +ConsoleBufferConfigurationError=Console buffer configuration error: High water mark ({0}) must be greater than low water mark ({1}). ProcessConsole_0= {0} diff --git a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java index a95bbd8052f..b577268c14a 100644 --- a/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java +++ b/debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java @@ -91,6 +91,7 @@ import org.eclipse.jface.text.IRegion; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Color; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPersistableElement; @@ -527,6 +528,11 @@ public void propertyChange(PropertyChangeEvent evt) { int lowWater = store.getInt(IDebugPreferenceConstants.CONSOLE_LOW_WATER_MARK); if (highWater > lowWater) { setWaterMarks(lowWater, highWater); + } else { + String msg = NLS.bind( + ConsoleMessages.ConsoleBufferConfigurationError, + highWater, lowWater); + DebugUIPlugin.log(new Status(IStatus.WARNING, IDebugUIConstants.PLUGIN_ID, msg)); } } else { setWaterMarks(-1, -1); diff --git a/debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java b/debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java index 276fa0043b1..b3b83667f36 100644 --- a/debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java +++ b/debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java @@ -247,7 +247,8 @@ public int getLowWaterMark() { public void setWaterMarks(int low, int high) { if (low >= 0) { if (low >= high) { - throw new IllegalArgumentException("High water mark must be greater than low water mark"); //$NON-NLS-1$ + throw new IllegalArgumentException( + String.format("High water mark (%d) must be greater than low water mark (%d)", high, low)); //$NON-NLS-1$ } } partitioner.setWaterMarks(low, high);