From fd39ce3de984d0a3ec4536990dbba572bb8b0cad Mon Sep 17 00:00:00 2001 From: Lars Vogel Date: Fri, 26 Jun 2026 09:07:49 +0200 Subject: [PATCH] Fix CSS Spy for the e4 engine's SAC removal The scratch pad caught org.w3c.css.sac.CSSParseException, which the e4 CSS engine no longer throws and which is no longer shipped after the SAC removal. A syntax error now throws the engine's unchecked CssParseException, so the catch was dead code and the error propagated instead of being shown. Catch it generically; the line and column are still shown because they are part of the exception message. Also fix the spy's matched-rule lookup, which tested the engine with instanceof DocumentCSS. The engine only implements CSSEngine now, so that test was always false; use getDocumentCSS() instead. --- .../src/org/eclipse/pde/spy/css/CSSScratchPadPart.java | 6 ++---- .../src/org/eclipse/pde/spy/css/CssSpyPart.java | 3 ++- .../src/org/eclipse/pde/spy/css/Messages.java | 1 - .../src/org/eclipse/pde/spy/css/messages.properties | 1 - 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CSSScratchPadPart.java b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CSSScratchPadPart.java index a00dc4ae50b..bc90cb40551 100644 --- a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CSSScratchPadPart.java +++ b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CSSScratchPadPart.java @@ -36,7 +36,6 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; -import org.w3c.css.sac.CSSParseException; import org.w3c.dom.stylesheets.StyleSheet; import org.w3c.dom.stylesheets.StyleSheetList; @@ -153,9 +152,8 @@ private void applyCSS() { long nanoDiff = System.nanoTime() - start; sb.append(MessageFormat.format("\n{0}", MessageFormat.format(Messages.CSSScratchPadPart_Time_ms, nanoDiff / 1000000))); //$NON-NLS-1$ - } catch (CSSParseException e) { - sb.append(MessageFormat.format("\n{0}", MessageFormat.format(Messages.CSSScratchPadPart_Error_line_col, e.getLineNumber(), e.getColumnNumber(), e.getLocalizedMessage()))); //$NON-NLS-1$ - } catch (IOException e) { + } catch (IOException | RuntimeException e) { + // e4's parser throws an unchecked CssParseException whose message already carries line and column. sb.append(MessageFormat.format("\n{0}", MessageFormat.format(Messages.CSSScratchPadPart_Error, e.getLocalizedMessage()))); //$NON-NLS-1$ } } diff --git a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CssSpyPart.java b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CssSpyPart.java index a2794885203..58b50da04c3 100644 --- a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CssSpyPart.java +++ b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/CssSpyPart.java @@ -1180,7 +1180,8 @@ private void appendWidgetSubtree(Widget widget, StringBuilder sb, int depth) { */ private Map getCSSRuleSources(CSSEngine engine, CSSStylableElement element) { Map sources = new HashMap<>(); - if (!(engine instanceof DocumentCSS docCSS)) { + DocumentCSS docCSS = engine.getDocumentCSS(); + if (docCSS == null) { return sources; } StyleSheetList sheets = docCSS.getStyleSheets(); diff --git a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/Messages.java b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/Messages.java index d05cbe21025..5f39e23c470 100644 --- a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/Messages.java +++ b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/Messages.java @@ -16,7 +16,6 @@ private Messages() { public static String CSSScratchPadPart_Close; public static String CSSScratchPadPart_Engine; public static String CSSScratchPadPart_Error; - public static String CSSScratchPadPart_Error_line_col; public static String CSSScratchPadPart_No_theme_engine_available; public static String CSSScratchPadPart_Time_ms; public static String CssSpyPart_actual_values; diff --git a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/messages.properties b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/messages.properties index a1c063f5fe3..7478f5129a0 100644 --- a/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/messages.properties +++ b/ui/org.eclipse.pde.spy.css/src/org/eclipse/pde/spy/css/messages.properties @@ -2,7 +2,6 @@ CSSScratchPadPart_Apply=Apply CSSScratchPadPart_Close=Close CSSScratchPadPart_Engine=Engine[{0}] CSSScratchPadPart_Error=Error: {0} -CSSScratchPadPart_Error_line_col=Error: line {0} col {1}: {2} CSSScratchPadPart_No_theme_engine_available=No theme engine available! CSSScratchPadPart_Time_ms=Time: {0}ms CssSpyPart_actual_values=actual values