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 844d05c5e48..e2fe621770f 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 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 5965a64d48c..581e1243588 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(); + } }