From ca6055d78ba42bd5949f2ab5880c48736e5d16fd Mon Sep 17 00:00:00 2001 From: Simeon Andreev Date: Wed, 8 Apr 2026 17:49:00 +0300 Subject: [PATCH 1/2] Add missing indices to message format in ModelAssembler The fallback logging mechanism in ModelAssembler uses: java.text.MessageFormat.format(String, Object...) Supplied message formats bind arguments without an index, i.e. message formats use "{}" instead of "{n}". This causes a NFE in MessageFormat.format(), resulting in no log output in the fallback case. In the usual case with an available logger, the indices are added by: com.sun.org.slf4j.internal.Logger.addIndex(String) This change likewise adds indices to the message format, for the fallback case. Fixes: https://github.com/eclipse-platform/eclipse.platform.ui/issues/3873 --- .../ui/internal/workbench/ModelAssembler.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java index 5965a64d48c6..581e12435880 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelAssembler.java @@ -39,6 +39,8 @@ import java.util.TreeSet; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicReference; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; @@ -209,6 +211,8 @@ public void removedBundle(Bundle bundle, BundleEvent event, List> processorContributions = new CopyOnWriteArrayList<>(); + private static final Pattern MESSAGE_FORMAT_BRACKETS_PATTERN = Pattern.compile("\\{\\}"); //$NON-NLS-1$ + private BundleContext bundleContext; private BundleTracker> tracker; @@ -820,7 +824,7 @@ private void log(LogMethod logMethod, PrintStream stream, String message, Object logMethod.invoke(log, message, args); } else { // fallback if no LogService is available - stream.println(MessageFormat.format(message, args)); + stream.println(MessageFormat.format(addIndex(message), args)); } } @@ -845,4 +849,20 @@ public void unsetLogger(LoggerFactory loggerFactory) { this.logger = null; } } + + /** + * Adds missing indices to {@code {}} sequences in {@code format}. See: + * {@link com.sun.org.slf4j.internal.Logger#addIndex(String)} + */ + private static String addIndex(String format) { + Matcher matcher = MESSAGE_FORMAT_BRACKETS_PATTERN.matcher(format); + StringBuilder sb = new StringBuilder(); + int index = 0; + while (matcher.find()) { + String r = "{" + Integer.toString(index++) + "}"; //$NON-NLS-1$ //$NON-NLS-2$ + matcher.appendReplacement(sb, r); + } + matcher.appendTail(sb); + return sb.toString(); + } } From 10937f5abae7c67437b79af3a9868490ec0095ba Mon Sep 17 00:00:00 2001 From: Eclipse Platform Bot Date: Thu, 9 Apr 2026 07:34:33 +0000 Subject: [PATCH 2/2] Version bump(s) for 4.40 stream --- bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF index 844d05c5e486..e2fe621770f0 100644 --- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.e4.ui.workbench;singleton:=true -Bundle-Version: 1.18.200.qualifier +Bundle-Version: 1.18.300.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin