CVE-2023-4218: Improper Restriction of XML External Entity Reference (CWE-611)
value: In Eclipse IDE versions < 2023-09 (4.29) some files with xml content are parsed vulnerable against all sorts of XXE attacks. The user just needs to open any evil project or update an open project with a vulnerable file (for example for review a foreign repository or patch).

CWE description: The product processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output.
CVSS v3 base score: 5
Published: 2023-11-09T09:15Z
Repository: https://github.com/eclipse-platform/eclipse.platform.ui
Language: Other
Files changed: bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.emf.xpath/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.css.core/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.ide/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.model.workbench/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF, bundles/org.eclipse.e4.ui.workbench3/META-INF/MANIFEST.MF, bundles/org.eclipse.jface.notifications/META-INF/MANIFEST.MF, bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF, bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java, bundles/org.eclipse.jface/src/org/eclipse/jface/internal/XmlProcessorFactoryJFace.java, bundles/org.eclipse.search/META-INF/MANIFEST.MF, bundles/org.eclipse.text/.settings/org.eclipse.jdt.core.prefs, bundles/org.eclipse.text/META-INF/MANIFEST.MF, bundles/org.eclipse.text/src/org/eclipse/text/templates/TemplateReaderWriter.java, bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/widgets/FormTextModel.java, bundles/org.eclipse.ui.genericeditor/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeEditor.java, bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeParser.java, bundles/org.eclipse.ui.monitoring/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF, bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java	, bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF, bundles/org.eclipse.ui/META-INF/MANIFEST.MF, bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF, bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/registration/PlistFileWriter.java, examples/org.eclipse.ui.examples.adapterservice/META-INF/MANIFEST.MF, examples/org.eclipse.ui.examples.navigator/META-INF/MANIFEST.MF, examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF, examples/org.eclipse.ui.genericeditor.examples/META-INF/MANIFEST.MF, tests/org.eclipse.core.filebuffers.tests/META-INF/MANIFEST.MF, tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF, tests/org.eclipse.jface.tests.notifications/META-INF/MANIFEST.MF, tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF, tests/org.eclipse.search.tests/META-INF/MANIFEST.MF, tests/org.eclipse.text.tests/META-INF/MANIFEST.MF, tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF, tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF, tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF, tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF, tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java, tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.compat/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.compatibility.migration/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.emf.editor3x/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/DocUtil.java, tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/ListTab.java, tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java, tools/bundles/org.eclipse.e4.tools.jdt.templates/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools.persistence/META-INF/MANIFEST.MF, tools/bundles/org.eclipse.e4.tools/META-INF/MANIFEST.MF, tools/tests/org.eclipse.e4.tools.compatibility.migration.tests/META-INF/MANIFEST.MF, tools/tests/org.eclipse.e4.tools.persistence.tests/META-INF/MANIFEST.MF
Commit date: 2023-07-27 08:04:31 +0200
Commit message: Refactor XML handling
Diff: diff --git a/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF b/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
index c140e20f23..f5f53e0940 100644
--- a/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.core.filebuffers/META-INF/MANIFEST.MF
@@ -8,11 +8,11 @@ Bundle-Localization: plugin
 Export-Package: 
  org.eclipse.core.filebuffers,
  org.eclipse.core.filebuffers.manipulation,
  org.eclipse.core.internal.filebuffers;x-internal:=true
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
  org.eclipse.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Automatic-Module-Name: org.eclipse.core.filebuffers
diff --git a/bundles/org.eclipse.e4.emf.xpath/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.emf.xpath/META-INF/MANIFEST.MF
index 6adc5a235d..c5a12e57c0 100644
--- a/bundles/org.eclipse.e4.emf.xpath/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.emf.xpath/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@ Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.e4.emf.xpath
 Bundle-Version: 0.4.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.apache.commons.jxpath;bundle-version="1.2.0",
  org.eclipse.emf.ecore;bundle-version="2.6.0",
- org.eclipse.core.runtime;bundle-version="3.16.100"
+ org.eclipse.core.runtime;bundle-version="3.29.0"
 Export-Package: org.eclipse.e4.emf.internal.xpath;x-internal:=true,
  org.eclipse.e4.emf.internal.xpath.helper;x-friends:="org.eclipse.e4.emf.xpath.test,org.eclipse.e4.ui.model.workbench,org.eclipse.e4.ui.workbench",
  org.eclipse.e4.emf.xpath
 Bundle-Vendor: %Bundle-Vendor
 Automatic-Module-Name: org.eclipse.e4.emf.xpath
diff --git a/bundles/org.eclipse.e4.ui.css.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.css.core/META-INF/MANIFEST.MF
index 07593e3f98..3040c71807 100644
--- a/bundles/org.eclipse.e4.ui.css.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.css.core/META-INF/MANIFEST.MF
@@ -39,8 +39,8 @@ Export-Package: org.eclipse.e4.ui.css.core;x-internal:=true,
  org.eclipse.e4.ui.css.core.util.resources;x-friends:="org.eclipse.e4.ui.css.swt,org.eclipse.e4.ui.css.swt.theme,org.eclipse.e4.ui.workbench.swt",
  org.eclipse.e4.ui.css.core.utils;x-friends:="org.eclipse.e4.ui.css.swt"
 Require-Bundle: org.w3c.css.sac;bundle-version="1.3.0",
  org.apache.batik.css;bundle-version="[1.9.1,2.0.0)",
  org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Automatic-Module-Name: org.eclipse.e4.ui.css.core
diff --git a/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
index 305aaefc5b..3c6446e11e 100644
--- a/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.css.swt.theme/META-INF/MANIFEST.MF
@@ -8,11 +8,11 @@ Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.swt;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.e4.ui.css.swt;bundle-version="0.13.100",
  org.eclipse.e4.ui.css.core;bundle-version="0.12.200",
  org.w3c.css.sac;bundle-version="1.3.0",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Service-Component: OSGI-INF/org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngineManager.xml
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.e4.ui.css.swt.internal.theme;x-internal:=true,
  org.eclipse.e4.ui.css.swt.theme;x-friends:="org.eclipse.e4.ui.workbench.renderers.swt,org.eclipse.e4.ui.workbench.swt,org.eclipse.ui.workbench"
 Import-Package: org.eclipse.osgi.service.datalocation;version="1.3.0",
diff --git a/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
index 73fbd1b45e..2bf21170e7 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.css.swt/META-INF/MANIFEST.MF
@@ -28,10 +28,10 @@ Export-Package: org.eclipse.e4.ui.css.swt;x-friends:="org.eclipse.ui.workbench",
  org.eclipse.e4.ui.internal.css.swt;x-internal:=true,
  org.eclipse.e4.ui.internal.css.swt.definition;x-friends:="org.eclipse.ui.workbench"
 Require-Bundle: org.eclipse.e4.ui.css.core;bundle-version="0.12.200",
  org.eclipse.swt;bundle-version="[3.106.0,4.0.0)",
  org.w3c.css.sac;bundle-version="1.3.0",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.jface.resource
 Automatic-Module-Name: org.eclipse.e4.ui.css.swt
diff --git a/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
index cb7695126f..2b1776590c 100644
--- a/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.dialogs/META-INF/MANIFEST.MF
@@ -8,7 +8,7 @@ Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.e4.ui.dialogs.filteredtree,
  org.eclipse.e4.ui.dialogs.textbundles;x-internal:=true,
  org.eclipse.e4.ui.internal.dialogs.about;x-internal:=true
 Require-Bundle: org.eclipse.jface;bundle-version="3.11.0",
- org.eclipse.core.runtime;bundle-version="3.27.0"
+ org.eclipse.core.runtime;bundle-version="3.29.0"
 Automatic-Module-Name: org.eclipse.e4.ui.dialogs
diff --git a/bundles/org.eclipse.e4.ui.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.ide/META-INF/MANIFEST.MF
index 7009976ae3..2dca819c6c 100644
--- a/bundles/org.eclipse.e4.ui.ide/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.ide/META-INF/MANIFEST.MF
@@ -4,9 +4,9 @@ Bundle-ManifestVersion: 2
 Bundle-SymbolicName: org.eclipse.e4.ui.ide
 Bundle-Version: 3.17.100.qualifier
 Bundle-Name: %Bundle-Name
 Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.7.0,4.0.0)";resolution:=optional,
  org.eclipse.swt;bundle-version="[3.107.0,4.0.0)"
 Export-Package: org.eclipse.e4.ui.internal.workspace.markers;x-friends:="org.eclipse.ui.ide"
diff --git a/bundles/org.eclipse.e4.ui.model.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.model.workbench/META-INF/MANIFEST.MF
index 92b99470e8..7dd11f9210 100644
--- a/bundles/org.eclipse.e4.ui.model.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.model.workbench/META-INF/MANIFEST.MF
@@ -64,11 +64,11 @@ Export-Package: org.eclipse.e4.ui.model;x-friends:="org.eclipse.e4.ui.workbench,
  org.eclipse.e4.ui.model.application.util;x-internal:=true,
  org.eclipse.e4.ui.model.fragment,
  org.eclipse.e4.ui.model.fragment.impl;x-friends:="org.eclipse.e4.ui.workbench",
  org.eclipse.e4.ui.model.fragment.util;x-internal:=true,
  org.eclipse.e4.ui.model.internal;x-friends:="org.eclipse.e4.ui.workbench"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.core.services;bundle-version="0.9.0",
  org.eclipse.e4.core.contexts;bundle-version="1.0.0",
  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.e4.core.di;bundle-version="1.0.0",
  org.eclipse.emf.ecore;bundle-version="2.9.0",
diff --git a/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
index 6a1a158255..291b3e075e 100644
--- a/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.progress/META-INF/MANIFEST.MF
@@ -12,11 +12,11 @@ Require-Bundle: org.eclipse.e4.core.di;bundle-version="1.3.0",
  org.eclipse.e4.core.commands,
  org.eclipse.e4.core.services,
  org.eclipse.e4.core.contexts,
  org.eclipse.e4.ui.model.workbench,
  org.eclipse.e4.ui.workbench.swt,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.ui.services
 Import-Package: javax.annotation;version="[1.3.0,2.0.0)",
  javax.inject;version="[1.0.0,2.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
index b89e85c34d..354b497477 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/META-INF/MANIFEST.MF
@@ -12,11 +12,11 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.0.0",
  org.eclipse.e4.core.services;bundle-version="0.9.1",
  org.eclipse.e4.ui.workbench.renderers.swt;bundle-version="0.9.1",
  org.eclipse.e4.ui.widgets;bundle-version="0.11.0",
  org.eclipse.swt;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.7.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.ui.di;bundle-version="0.10.0",
  org.eclipse.e4.ui.services;bundle-version="1.0.0",
  org.eclipse.emf.ecore.xmi;bundle-version="2.7.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
index ac7124d2e5..224f763b5d 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/META-INF/MANIFEST.MF
@@ -21,11 +21,11 @@ Require-Bundle: org.eclipse.e4.ui.workbench;bundle-version="0.9.0",
  org.eclipse.e4.ui.css.core;bundle-version="0.9.0",
  org.eclipse.e4.ui.di;bundle-version="0.9.0",
  org.eclipse.emf.ecore;bundle-version="2.7.0",
  org.eclipse.e4.ui.css.swt;bundle-version="0.11.0",
  org.eclipse.e4.core.di.extensions;bundle-version="0.12.0",
- org.eclipse.core.runtime;bundle-version="3.17.100"
+ org.eclipse.core.runtime;bundle-version="3.29.0"
 Export-Package: org.eclipse.e4.ui.internal.workbench.renderers.swt;x-friends:="org.eclipse.ui.workbench",
  org.eclipse.e4.ui.workbench.renderers.swt;x-friends:="org.eclipse.e4.ui.workbench.addons.swt,org.eclipse.ui.workbench"
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.annotation;version="[1.3.0,2.0.0)",
  javax.inject;version="[1.0.0,2.0.0)",
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
index baf19266c3..86e55394a0 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/META-INF/MANIFEST.MF
@@ -19,11 +19,11 @@ Require-Bundle: org.eclipse.e4.ui.workbench;bundle-version="0.10.0",
  org.eclipse.e4.core.contexts;bundle-version="1.0.0",
  org.eclipse.e4.ui.workbench3;bundle-version="0.11.0",
  org.eclipse.e4.core.di;bundle-version="1.1.0",
  org.eclipse.e4.ui.css.swt.theme;bundle-version="0.12.0",
  org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.core.commands;bundle-version="0.9.0",
  org.eclipse.e4.ui.widgets;bundle-version="0.11.0",
  org.eclipse.e4.ui.di;bundle-version="0.9.0",
  org.eclipse.emf.ecore.xmi;bundle-version="2.7.0",
  org.eclipse.e4.ui.model.workbench;bundle-version="1.0.0",
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 e8b2b68766..59f95f02bb 100644
--- a/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench/META-INF/MANIFEST.MF
@@ -15,11 +15,11 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="1.2.0",
  org.eclipse.emf.ecore.change;bundle-version="2.5.0",
  org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.e4.ui.di;bundle-version="0.9.0",
  org.eclipse.emf.ecore.xmi;bundle-version="2.7.0",
  org.eclipse.e4.core.di.extensions,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Export-Package: org.eclipse.e4.ui.internal.workbench;
   x-friends:="org.eclipse.e4.ui.workbench.fragment,
    org.eclipse.e4.ui.workbench.renderers.swt,
diff --git a/bundles/org.eclipse.e4.ui.workbench3/META-INF/MANIFEST.MF b/bundles/org.eclipse.e4.ui.workbench3/META-INF/MANIFEST.MF
index a27b40cb5d..f320c4d4e9 100644
--- a/bundles/org.eclipse.e4.ui.workbench3/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.e4.ui.workbench3/META-INF/MANIFEST.MF
@@ -7,9 +7,9 @@ Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.7.0,4.0.0)",
  org.eclipse.swt;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.equinox.registry;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Export-Package: org.eclipse.ui.testing,
  org.eclipse.ui.testing.dumps
 Automatic-Module-Name: org.eclipse.e4.ui.workbench3
diff --git a/bundles/org.eclipse.jface.notifications/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.notifications/META-INF/MANIFEST.MF
index 64786ee07a..0fd9cee7ea 100644
--- a/bundles/org.eclipse.jface.notifications/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jface.notifications/META-INF/MANIFEST.MF
@@ -7,7 +7,7 @@ Bundle-SymbolicName: org.eclipse.jface.notifications
 Bundle-Version: 0.6.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Export-Package: org.eclipse.jface.notifications,
  org.eclipse.jface.notifications.internal;x-internal:=true
 Automatic-Module-Name: org.eclipse.jface.notifications
-Require-Bundle: org.eclipse.core.runtime;bundle-version="3.18.0",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.jface;bundle-version="3.20.0"
diff --git a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
index c245f58368..797e9640f7 100644
--- a/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jface.text/META-INF/MANIFEST.MF
@@ -31,11 +31,11 @@ Export-Package:
  org.eclipse.jface.text.source.projection,
  org.eclipse.jface.text.source.projection.images,
  org.eclipse.jface.text.templates,
  org.eclipse.jface.text.templates.persistence
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.text;bundle-version="[3.8.0,4.0.0)";visibility:=reexport,
  org.eclipse.swt;bundle-version="[3.117.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.19.0,4.0.0)"
 Import-Package: com.ibm.icu.text
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
index 35360a344c..4b1e77732c 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java
@@ -34,13 +34,13 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.eclipse.jface.internal.XmlProcessorFactoryJFace;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
@@ -258,12 +258,11 @@ public class DialogSettings implements IDialogSettings {
 
 	@Override
 	public void load(Reader r) {
 		Document document = null;
 		try {
-			DocumentBuilder parser = DocumentBuilderFactory.newInstance()
-					.newDocumentBuilder();
+			DocumentBuilder parser = XmlProcessorFactoryJFace.createDocumentBuilderWithErrorOnDOCTYPE();
 			//		parser.setProcessNamespace(true);
 			document = parser.parse(new InputSource(r));
 
 			//Strip out any comments first
 			Node root = document.getFirstChild();
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/XmlProcessorFactoryJFace.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/XmlProcessorFactoryJFace.java
new file mode 100644
index 0000000000..d175d34b35
--- /dev/null
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/internal/XmlProcessorFactoryJFace.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ *  Copyright (c) 2023 Joerg Kubitz and others.
+ *
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.jface.internal;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+/**
+ * XML processing which prohibits external entities.
+ *
+ * @see <a href="https://rules.sonarsource.com/java/RSPEC-2755/">RSPEC-2755</a>
+ */
+/* A copy of org.eclipse.core.internal.runtime.XmlProcessorFactory for jface. */
+public class XmlProcessorFactoryJFace {
+	private XmlProcessorFactoryJFace() {
+		// static Utility only
+	}
+
+	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE = createDocumentBuilderFactoryWithErrorOnDOCTYPE();
+
+	/**
+	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting
+	 * external entities. It's magnitudes faster to call
+	 * {@link #createDocumentBuilderWithErrorOnDOCTYPE()}.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilderFactory
+	 */
+	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryWithErrorOnDOCTYPE() {
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		// completely disable DOCTYPE declaration:
+		try {
+			factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
+		} catch (ParserConfigurationException e) {
+			throw new RuntimeException(e.getMessage(), e);
+		}
+		return factory;
+	}
+
+	/**
+	 * Creates DocumentBuilder which throws SAXParseException when detecting
+	 * external entities. The builder is not thread safe.
+	 *
+	 * @return javax.xml.parsers.DocumentBuilder
+	 * @throws ParserConfigurationException
+	 */
+	public static DocumentBuilder createDocumentBuilderWithErrorOnDOCTYPE() throws ParserConfigurationException {
+		return DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE.newDocumentBuilder();
+	}
+
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.search/META-INF/MANIFEST.MF b/bundles/org.eclipse.search/META-INF/MANIFEST.MF
index f943706c2c..8e06f8efb6 100644
--- a/bundles/org.eclipse.search/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.search/META-INF/MANIFEST.MF
@@ -18,11 +18,11 @@ Export-Package: org.eclipse.search.core.text,
  org.eclipse.search2.internal.ui;x-internal:=true,
  org.eclipse.search2.internal.ui.basic.views;x-internal:=true,
  org.eclipse.search2.internal.ui.text;x-internal:=true,
  org.eclipse.search2.internal.ui.text2;x-internal:=true
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.14.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
diff --git a/bundles/org.eclipse.text/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.text/.settings/org.eclipse.jdt.core.prefs
index fd1895fb19..d9407fee20 100644
--- a/bundles/org.eclipse.text/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.text/.settings/org.eclipse.jdt.core.prefs
@@ -1,6 +1,7 @@
 eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled
 org.eclipse.jdt.core.builder.cleanOutputFolder=clean
 org.eclipse.jdt.core.builder.duplicateResourceTask=warning
 org.eclipse.jdt.core.builder.invalidClasspath=abort
 org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
 org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
@@ -19,12 +20,15 @@ org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
 org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes=
 org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
 org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
 org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
 org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
 org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
@@ -32,19 +36,21 @@ org.eclipse.jdt.core.compiler.compliance=17
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info
 org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.autoboxing=info
 org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
 org.eclipse.jdt.core.compiler.problem.deadCode=error
 org.eclipse.jdt.core.compiler.problem.deprecation=warning
 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
 org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
@@ -83,16 +89,18 @@ org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error
 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
 org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
 org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
 org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
 org.eclipse.jdt.core.compiler.problem.nullReference=error
 org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
 org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
 org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
 org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
 org.eclipse.jdt.core.compiler.problem.potentialNullReference=info
 org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=info
 org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
 org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
@@ -104,21 +112,27 @@ org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
 org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
 org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
 org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info
 org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
 org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
 org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=info
 org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
 org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
 org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
diff --git a/bundles/org.eclipse.text/META-INF/MANIFEST.MF b/bundles/org.eclipse.text/META-INF/MANIFEST.MF
index 52511e0652..10ef61bde0 100644
--- a/bundles/org.eclipse.text/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.text/META-INF/MANIFEST.MF
@@ -16,8 +16,8 @@ Export-Package:
  org.eclipse.text.undo
 Require-Bundle: 
  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.equinox.preferences;bundle-version="[3.7.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Automatic-Module-Name: org.eclipse.text
diff --git a/bundles/org.eclipse.text/src/org/eclipse/text/templates/TemplateReaderWriter.java b/bundles/org.eclipse.text/src/org/eclipse/text/templates/TemplateReaderWriter.java
index 353e13f602..3eb99a9257 100644
--- a/bundles/org.eclipse.text/src/org/eclipse/text/templates/TemplateReaderWriter.java
+++ b/bundles/org.eclipse.text/src/org/eclipse/text/templates/TemplateReaderWriter.java
@@ -25,16 +25,14 @@ import java.util.HashSet;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 import java.util.Set;
 
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -155,12 +153,12 @@ public class TemplateReaderWriter {
 	private TemplatePersistenceData[] read(InputSource source, ResourceBundle bundle, String singleId) throws IOException {
 		try {
 			Collection<TemplatePersistenceData> templates= new ArrayList<>();
 			Set<String> ids= new HashSet<>();
 
-			DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
-			DocumentBuilder parser= factory.newDocumentBuilder();
+			@SuppressWarnings("restriction")
+			DocumentBuilder parser= org.eclipse.core.internal.runtime.XmlProcessorFactory.createDocumentBuilderWithErrorOnDOCTYPE();
 			parser.setErrorHandler(new DefaultHandler());
 			Document document= parser.parse(source);
 
 			NodeList elements= document.getElementsByTagName(TEMPLATE_ELEMENT);
 
@@ -261,14 +259,12 @@ public class TemplateReaderWriter {
 	 * @param result the stream result to write to
 	 * @throws IOException if writing the templates fails
 	 */
 	private void save(TemplatePersistenceData[] templates, StreamResult result) throws IOException {
 		try {
-			DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
-			DocumentBuilder builder= factory.newDocumentBuilder();
-			Document document= builder.newDocument();
-
+			@SuppressWarnings("restriction")
+			Document document= org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
 			Node root= document.createElement(TEMPLATE_ROOT);
 			document.appendChild(root);
 
 			for (TemplatePersistenceData data : templates) {
 				Template template= data.getTemplate();
@@ -320,13 +316,12 @@ public class TemplateReaderWriter {
 				if (template != null) {
 					Text pattern= document.createTextNode(validateXML(template.getPattern()));
 					node.appendChild(pattern);
 				}
 			}
-
-
-			Transformer transformer=TransformerFactory.newInstance().newTransformer();
+			@SuppressWarnings("restriction")
+			Transformer transformer= org.eclipse.core.internal.runtime.XmlProcessorFactory.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
 			transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
 			transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.name());
 			DOMSource source = new DOMSource(document);
 
 			transformer.transform(source, result);
diff --git a/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
index ad0d5eaa52..48ceae76bb 100644
--- a/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
@@ -8,11 +8,11 @@ Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.ui.browser,
  org.eclipse.ui.internal.browser;x-friends:="org.eclipse.ua.tests,org.eclipse.ui.tests.browser",
  org.eclipse.ui.internal.browser.browsers;x-internal:=true,
  org.eclipse.ui.internal.browser.macosx;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.urischeme;bundle-version="1.1.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
 Automatic-Module-Name: org.eclipse.ui.browser
diff --git a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
index bd04c95d95..ed6725174a 100644
--- a/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.editors/META-INF/MANIFEST.MF
@@ -14,11 +14,11 @@ Export-Package:
  org.eclipse.ui.internal.editors.text;x-internal:=true,
  org.eclipse.ui.internal.editors.text.codemining.annotation;x-internal:=true,
  org.eclipse.ui.internal.texteditor;x-internal:=true,
  org.eclipse.ui.texteditor
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.swt;bundle-version="[3.101.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.8.0,4.0.0)",
diff --git a/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
index 0be3426024..f92f60c04f 100644
--- a/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.forms/META-INF/MANIFEST.MF
@@ -11,11 +11,11 @@ Export-Package: org.eclipse.ui.forms,
  org.eclipse.ui.forms.widgets,
  org.eclipse.ui.internal.forms;x-internal:=true,
  org.eclipse.ui.internal.forms.css.dom;x-internal:=true,
  org.eclipse.ui.internal.forms.css.properties.css2;x-internal:=true,
  org.eclipse.ui.internal.forms.widgets;x-friends:="org.eclipse.ui.tests.forms"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.105.0,4.0.0)";resolution:=optional,
  org.eclipse.e4.ui.css.core;bundle-version="0.10.100",
  org.eclipse.e4.ui.css.swt;bundle-version="0.11.100"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/widgets/FormTextModel.java b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/widgets/FormTextModel.java
index 5165349c40..70d2b2669c 100644
--- a/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/widgets/FormTextModel.java
+++ b/bundles/org.eclipse.ui.forms/src/org/eclipse/ui/internal/forms/widgets/FormTextModel.java
@@ -54,12 +54,13 @@ public class FormTextModel {
 		@Override
 		public void warning(SAXParseException arg0) throws SAXException {
 		}
 	}
 
-	private static final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
-			.newInstance();
+	@SuppressWarnings("restriction")
+	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY = org.eclipse.core.internal.runtime.XmlProcessorFactory
+			.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
 
 	private boolean whitespaceNormalized = true;
 
 	private Vector<Paragraph> paragraphs;
 
@@ -130,17 +131,16 @@ public class FormTextModel {
 		}
 	}
 
 	public void parseInputStream(InputStream is, boolean expandURLs) {
 
-		documentBuilderFactory.setNamespaceAware(true);
-		documentBuilderFactory.setIgnoringComments(true);
+		DOCUMENT_BUILDER_FACTORY.setNamespaceAware(true);
+		DOCUMENT_BUILDER_FACTORY.setIgnoringComments(true);
 
 		reset();
 		try {
-			DocumentBuilder parser = documentBuilderFactory
-					.newDocumentBuilder();
+			DocumentBuilder parser = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();
 			parser.setErrorHandler(new ParseErrorHandler());
 			InputSource source = new InputSource(is);
 			Document doc = parser.parse(source);
 			processDocument(doc, expandURLs);
 		} catch (ParserConfigurationException | SAXException e) {
diff --git a/bundles/org.eclipse.ui.genericeditor/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.genericeditor/META-INF/MANIFEST.MF
index de0775155e..ee101a3842 100644
--- a/bundles/org.eclipse.ui.genericeditor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.genericeditor/META-INF/MANIFEST.MF
@@ -7,11 +7,11 @@ Bundle-Vendor: %Bundle-Vendor
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui.workbench.texteditor;bundle-version="3.10.0",
  org.eclipse.ui.editors;bundle-version="3.14.0",
  org.eclipse.text;bundle-version="3.6.0",
  org.eclipse.jface.text;bundle-version="3.24.0",
- org.eclipse.core.runtime;bundle-version="3.12.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.ui.workbench;bundle-version="3.109.0",
  org.eclipse.jface;bundle-version="3.12.0",
  org.eclipse.ui.ide;bundle-version="3.12.0",
  org.eclipse.core.resources;bundle-version="3.11.0",
  org.eclipse.core.expressions;bundle-version="3.6.0",
diff --git a/bundles/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
index b5f86ead70..4c51148a3f 100644
--- a/bundles/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.ide.application/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@ Bundle-Name: %Plugin.name
 Bundle-SymbolicName: org.eclipse.ui.ide.application;singleton:=true
 Bundle-Version: 1.5.100.qualifier
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.16.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.15.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.114.0,4.0.0)",
  org.eclipse.ui.navigator.resources;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.net;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.core.filesystem;bundle-version="1.3.0",
diff --git a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
index 903675078f..f93926f254 100644
--- a/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.ide/META-INF/MANIFEST.MF
@@ -44,11 +44,11 @@ Export-Package: org.eclipse.ui,
  org.eclipse.ui.views.properties,
  org.eclipse.ui.views.tasklist,
  org.eclipse.ui.wizards.datatransfer,
  org.eclipse.ui.wizards.newresource
 Require-Bundle: org.eclipse.core.resources;bundle-version="[3.17.0,4.0.0)";resolution:=optional,
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.202.0,4.0.0)",
  org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)";resolution:=optional,
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeEditor.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeEditor.java
index 96497f6b04..669639c43c 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeEditor.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeEditor.java
@@ -17,12 +17,10 @@ package org.eclipse.ui.internal.ide.dialogs;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.ArrayList;
 
-import javax.xml.parsers.ParserConfigurationException;
-
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.action.MenuManager;
@@ -61,11 +59,10 @@ import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.ide.IDEInternalWorkbenchImages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
 import org.eclipse.ui.internal.ide.IIDEHelpContextIds;
 import org.eclipse.ui.part.EditorPart;
-import org.xml.sax.SAXException;
 
 /**
  * A "fake" editor to show a welcome page
  * The contents of this page are supplied in the product configuration
  *
@@ -848,11 +845,11 @@ public class WelcomeEditor extends EditorPart {
 	 * Subclasses may override.  For greater details, see <code>IEditorPart</code>
 	 * </p>
 	 *
 	 * @see IEditorPart
 	 */
-	public void gotoMarker(IMarker marker) {
+	public void gotoMarker(@SuppressWarnings({ "unused", "javadoc" }) IMarker marker) {
 		// do nothing
 	}
 
 	/**
 	 * Initializes the editor part with a site and input.
@@ -915,11 +912,11 @@ public class WelcomeEditor extends EditorPart {
 	 * @throws IOException if there is a problem parsing the stream.
 	 */
 	public void read(InputStream is) throws IOException {
 		try {
 			parser = new WelcomeParser();
-		} catch (ParserConfigurationException | SAXException e) {
+		} catch (Exception e) {
 			throw (IOException) (new IOException().initCause(e));
 		}
 		parser.parse(is);
 	}
 
diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeParser.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeParser.java
index 3eebf048bc..61193786c0 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeParser.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/WelcomeParser.java
@@ -19,11 +19,10 @@ import java.io.InputStream;
 import java.util.ArrayList;
 
 import javax.xml.parsers.FactoryConfigurationError;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
@@ -331,18 +330,19 @@ public class WelcomeParser extends DefaultHandler {
 		}
 	}
 
 	/**
 	 * Creates a new welcome parser.
+	 *
+	 * @throws ParserConfigurationException
+	 * @throws SAXException
+	 * @throws FactoryConfigurationError
 	 */
-	public WelcomeParser() throws ParserConfigurationException, SAXException,
-			FactoryConfigurationError {
-		super();
-		SAXParserFactory factory = SAXParserFactory.newInstance();
-		factory.setFeature("http://xml.org/sax/features/namespaces", true); //$NON-NLS-1$
-		parser = factory.newSAXParser();
-
+	public WelcomeParser() throws ParserConfigurationException, SAXException, FactoryConfigurationError {
+		@SuppressWarnings("restriction")
+		SAXParser p = org.eclipse.core.internal.runtime.XmlProcessorFactory.createSAXParserWithErrorOnDOCTYPE(true);
+		parser = p;
 		parser.getXMLReader().setContentHandler(this);
 		parser.getXMLReader().setDTDHandler(this);
 		parser.getXMLReader().setEntityResolver(this);
 		parser.getXMLReader().setErrorHandler(this);
 	}
diff --git a/bundles/org.eclipse.ui.monitoring/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.monitoring/META-INF/MANIFEST.MF
index 678e028355..a406db8dd5 100644
--- a/bundles/org.eclipse.ui.monitoring/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.monitoring/META-INF/MANIFEST.MF
@@ -8,9 +8,9 @@ Bundle-SymbolicName: org.eclipse.ui.monitoring;singleton:=true
 Bundle-Vendor: %Bundle-Vendor
 Bundle-Version: 1.3.100.qualifier
 Export-Package: org.eclipse.ui.internal.monitoring;x-internal:=true,
  org.eclipse.ui.internal.monitoring.preferences;x-internal:=true,
  org.eclipse.ui.monitoring;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.10.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.106.0,4.0.0)"
 Automatic-Module-Name: org.eclipse.ui.monitoring
diff --git a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
index 14c20c4a5c..c8dff2d579 100644
--- a/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.navigator.resources/META-INF/MANIFEST.MF
@@ -16,11 +16,11 @@ Export-Package: org.eclipse.ui.internal.navigator.resources;x-internal:=true,
 Require-Bundle: org.eclipse.ui.ide;bundle-version="[3.15.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.9.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.views.properties.tabbed;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ltk.ui.refactoring;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="3.6.0"
diff --git a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
index 394eef7a3d..7fd3bb47b3 100644
--- a/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.navigator/META-INF/MANIFEST.MF
@@ -13,11 +13,11 @@ Export-Package: org.eclipse.ui.internal.navigator;x-friends:="org.eclipse.ui.nav
  org.eclipse.ui.internal.navigator.filters;x-friends:="org.eclipse.ui.navigator.ide,org.eclipse.ui.navigator.resources,org.eclipse.ui.tests.navigator",
  org.eclipse.ui.internal.navigator.framelist;x-friends:="org.eclipse.ui.navigator.ide,org.eclipse.ui.navigator.resources,org.eclipse.ui.tests.navigator",
  org.eclipse.ui.internal.navigator.sorters;x-internal:=true,
  org.eclipse.ui.internal.navigator.wizards;x-friends:="org.eclipse.ui.navigator.resources,org.eclipse.ui.ide",
  org.eclipse.ui.navigator
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF
index 7d3e3b5839..f27989ce2b 100644
--- a/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.views.log/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %name
 Bundle-SymbolicName: org.eclipse.ui.views.log;singleton:=true
 Bundle-Version: 1.4.100.qualifier
 Bundle-Activator: org.eclipse.ui.internal.views.log.Activator
 Bundle-Vendor: %provider-name
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.1.0,2.0.0)";resolution:=optional,
  org.eclipse.ui;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.3.0,4.0.0)";resolution:=optional,
  org.eclipse.e4.ui.dialogs;bundle-version="1.1.600"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
index 48d8b62200..5036fba9c7 100644
--- a/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.views.properties.tabbed/META-INF/MANIFEST.MF
@@ -11,11 +11,11 @@ Export-Package: org.eclipse.ui.internal.views.properties.tabbed;x-internal:=true
  org.eclipse.ui.internal.views.properties.tabbed.view;x-friends:="org.eclipse.ui.tests.views.properties.tabbed",
  org.eclipse.ui.views.properties.tabbed
 Require-Bundle: org.eclipse.ui.forms;bundle-version="[3.3.0,4.0.0)";visibility:=reexport,
  org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)";visibility:=reexport,
  org.eclipse.ui;bundle-version="[3.3.0,4.0.0)";visibility:=reexport,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.ui.css.core;bundle-version="0.12.100",
  org.eclipse.e4.ui.css.swt,
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Automatic-Module-Name: org.eclipse.ui.views.properties.tabbed
diff --git a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
index ca0dcd96a4..aa7361a46e 100644
--- a/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.views/META-INF/MANIFEST.MF
@@ -7,11 +7,11 @@ Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.ui.internal.views.contentoutline;x-internal:=true,
  org.eclipse.ui.internal.views.properties; ui.views="split"; mandatory:="ui.views"; x-internal:=true,
  org.eclipse.ui.views.contentoutline,
  org.eclipse.ui.views.properties; ui.views="split"; mandatory:="ui.views"
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Automatic-Module-Name: org.eclipse.ui.views
diff --git a/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
index 332ec61ed5..2981cc60e3 100644
--- a/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
@@ -22,11 +22,11 @@ Export-Package:
  org.eclipse.ui.texteditor.quickdiff,
  org.eclipse.ui.texteditor.rulers,
  org.eclipse.ui.texteditor.spelling,
  org.eclipse.ui.texteditor.templates
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.compare.core;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.100,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.19.0,4.0.0)",
  org.eclipse.swt;bundle-version="[3.107.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)"
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java
index 01ee992565..944cfed2a4 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java	
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/XMLMemento.java	
@@ -17,13 +17,11 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Reader;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import org.eclipse.ui.internal.WorkbenchMessages;
 import org.eclipse.ui.internal.WorkbenchPlugin;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
@@ -50,12 +48,10 @@ import org.xml.sax.SAXParseException;
 public final class XMLMemento implements IMemento {
 	private Document factory;
 
 	private Element element;
 
-	private static String FILE_STRING = "file"; //$NON-NLS-1$
-
 	/**
 	 * Creates a <code>Document</code> from the <code>Reader</code> and returns a
 	 * memento on the first <code>Element</code> for reading the document.
 	 * <p>
 	 * Same as calling createReadRoot(reader, null)
@@ -67,32 +63,10 @@ public final class XMLMemento implements IMemento {
 	 */
 	public static XMLMemento createReadRoot(Reader reader) throws WorkbenchException {
 		return createReadRoot(reader, null);
 	}
 
-	/**
-	 * Clients who need to use the "file" protocol can override this method to
-	 * return the original attribute value
-	 *
-	 * @param attributeOldValue
-	 * @return return the new attribute value after concatenating the "file"
-	 *         protocol restriction if does not exist already
-	 */
-	private static String getAttributeNewValue(Object attributeOldValue) {
-		StringBuilder strNewValue = new StringBuilder(FILE_STRING);
-		if (attributeOldValue instanceof String && ((String) attributeOldValue).length() != 0) {
-			String strOldValue = (String) attributeOldValue;
-			boolean exists = Arrays.asList(strOldValue.split(",")).stream().anyMatch(x -> x.trim().equals(FILE_STRING)); //$NON-NLS-1$
-			if (!exists) {
-				strNewValue.append(", ").append(strOldValue); //$NON-NLS-1$
-			} else {
-				strNewValue = new StringBuilder(strOldValue);
-			}
-		}
-		return strNewValue.toString();
-	}
-
 	/**
 	 * Creates a <code>Document</code> from the <code>Reader</code> and returns a
 	 * memento on the first <code>Element</code> for reading the document.
 	 *
 	 * @param reader  the <code>Reader</code> used to create the memento's document
@@ -105,26 +79,14 @@ public final class XMLMemento implements IMemento {
 	 * @throws WorkbenchException if IO problems, invalid format, or no element.
 	 */
 	public static XMLMemento createReadRoot(Reader reader, String baseDir) throws WorkbenchException {
 		String errorMessage = null;
 		Exception exception = null;
-		DocumentBuilderFactory factory = null;
-		Object attributeDTDOldValue = null;
-		Object attributeSchemaOldValue = null;
 		try {
-			factory = DocumentBuilderFactory.newInstance();
-			try {
-				attributeDTDOldValue = factory.getAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD);
-				attributeSchemaOldValue = factory.getAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA);
-			} catch (NullPointerException | IllegalArgumentException e) {
-				// Attributes not defined
-			}
-			factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD,
-					getAttributeNewValue(attributeDTDOldValue));
-			factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA,
-					getAttributeNewValue(attributeSchemaOldValue));
-			DocumentBuilder parser = factory.newDocumentBuilder();
+			@SuppressWarnings("restriction")
+			DocumentBuilder parser = org.eclipse.core.internal.runtime.XmlProcessorFactory
+					.createDocumentBuilderWithErrorOnDOCTYPE();
 			InputSource source = new InputSource(reader);
 			if (baseDir != null) {
 				source.setSystemId(baseDir);
 			}
 
@@ -160,15 +122,10 @@ public final class XMLMemento implements IMemento {
 			exception = e;
 			errorMessage = WorkbenchMessages.XMLMemento_ioError;
 		} catch (SAXException e) {
 			exception = e;
 			errorMessage = WorkbenchMessages.XMLMemento_formatError;
-		} finally {
-			if (factory != null) {
-				factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, attributeDTDOldValue);
-				factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA, attributeSchemaOldValue);
-			}
 		}
 
 		String problemText = null;
 		if (exception != null) {
 			problemText = exception.getMessage();
@@ -186,18 +143,17 @@ public final class XMLMemento implements IMemento {
 	 * @return the root memento for writing a document
 	 * @throws DOMException when the element could not be created for the passed
 	 *                      type
 	 */
 	public static XMLMemento createWriteRoot(String type) throws DOMException {
-		Document document;
 		try {
-			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+			@SuppressWarnings("restriction")
+			Document document = org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
 			Element element = document.createElement(type);
 			document.appendChild(element);
 			return new XMLMemento(document, element);
 		} catch (ParserConfigurationException e) {
-//            throw new Error(e);
 			throw new Error(e.getMessage());
 		}
 	}
 
 	/**
diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
index 087a191334..5d1b5c24e0 100644
--- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF
@@ -91,11 +91,11 @@ Export-Package: org.eclipse.e4.ui.workbench.addons.perspectiveswitcher;x-interna
  org.eclipse.ui.statushandlers,
  org.eclipse.ui.swt,
  org.eclipse.ui.themes,
  org.eclipse.ui.views,
  org.eclipse.ui.wizards
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.help;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.18.0,4.0.0)",
  org.eclipse.jface.databinding;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.databinding.property;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.core.databinding.observable;bundle-version="[1.2.0,2.0.0)",
diff --git a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF
index c525211f64..7489e08586 100644
--- a/bundles/org.eclipse.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui/META-INF/MANIFEST.MF
@@ -6,11 +6,11 @@ Bundle-Version: 3.203.200.qualifier
 Bundle-Activator: org.eclipse.ui.internal.UIPlugin
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.ui.internal;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.swt;bundle-version="[3.103.0,4.0.0)";visibility:=reexport,
  org.eclipse.jface;bundle-version="[3.19.0,4.0.0)";visibility:=reexport,
  org.eclipse.ui.workbench;bundle-version="[3.128.0,4.0.0)";visibility:=reexport,
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
diff --git a/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF b/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
index 5f88fc9551..c426d24ef0 100644
--- a/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
@@ -5,11 +5,11 @@ Bundle-SymbolicName: org.eclipse.urischeme;singleton:=true
 Bundle-Version: 1.3.100.qualifier
 Automatic-Module-Name: org.eclipse.urischeme
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.8.0,4.0.0)",
  org.eclipse.equinox.registry;bundle-version="[3.8.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  com.sun.jna;bundle-version="[5.8.0,6.0.0)",
  com.sun.jna.platform;bundle-version="[5.8.0,6.0.0)"
 Export-Package: org.eclipse.urischeme;x-friends:="org.eclipse.e4.ui.workbench.swt,org.eclipse.ui.examples.uriSchemeHandler,org.eclipse.ui.browser,org.eclipse.ui.ide.application"
 Bundle-Vendor: %Plugin.Providername
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/registration/PlistFileWriter.java b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/registration/PlistFileWriter.java
index d3c60aa692..cd6abba1d8 100644
--- a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/registration/PlistFileWriter.java
+++ b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/registration/PlistFileWriter.java
@@ -12,17 +12,14 @@
  *     SAP SE - initial version
  *******************************************************************************/
 package org.eclipse.urischeme.internal.registration;
 
 import java.io.BufferedWriter;
-import java.io.Closeable;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
@@ -202,37 +199,28 @@ public class PlistFileWriter {
 
 		transformDocument(writer);
 	}
 
 	private void transformDocument(Writer writer) {
-		try {
+		try (writer) {
 			DOMSource source = new DOMSource(this.document);
-			TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(writer));
-		} catch (TransformerException e) {
+			@SuppressWarnings("restriction")
+			TransformerFactory f = org.eclipse.core.internal.runtime.XmlProcessorFactory
+			.createTransformerFactoryWithErrorOnDOCTYPE();
+			f.newTransformer().transform(source, new StreamResult(writer));
+		} catch (TransformerException | IOException e) {
 			throw new IllegalStateException(e);
-		} finally {
-			close(writer);
 		}
 	}
 
+	@SuppressWarnings("restriction")
 	private Document getDom(Reader reader) {
-		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-		try {
-			DocumentBuilder builder = factory.newDocumentBuilder();
-			return builder.parse(new InputSource(reader));
+		try (reader) {
+			return org.eclipse.core.internal.runtime.XmlProcessorFactory
+					.parseWithErrorOnDOCTYPE(new InputSource(reader));
 		} catch (ParserConfigurationException | IOException | SAXException e) {
 			throw new IllegalArgumentException(e);
-		} finally {
-			close(reader);
-		}
-	}
-
-	private void close(Closeable closeable) {
-		try {
-			closeable.close();
-		} catch (IOException e) {
-			throw new IllegalStateException(e);
 		}
 	}
 
 	private Element getOrCreateBundleUrlTypesAndArray() {
 		Element arrayNode = evaluateXpathOnElement(this.document, XPATH_PLIST_DICT_CF_BUNDLE_URL_TYPES_ARRAY);
diff --git a/examples/org.eclipse.ui.examples.adapterservice/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.adapterservice/META-INF/MANIFEST.MF
index 50f26b2d97..7149dd7f3e 100644
--- a/examples/org.eclipse.ui.examples.adapterservice/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.examples.adapterservice/META-INF/MANIFEST.MF
@@ -9,10 +9,10 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
 Bundle-Activator: org.eclipse.ui.examples.adapterservice.snippets.SnippetActivator
 Import-Package: javax.inject;version="[1.0.0,2.0.0)",
  org.osgi.framework;version="[1.5.0,2.0.0)"
 Require-Bundle: org.eclipse.equinox.app,
  org.eclipse.equinox.common;bundle-version="3.4.0",
- org.eclipse.core.runtime;bundle-version="3.4.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.e4.core.contexts,
  org.eclipse.e4.core.services,
  org.eclipse.e4.core.di
 Automatic-Module-Name: org.eclipse.ui.examples.adapterservice
diff --git a/examples/org.eclipse.ui.examples.navigator/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.navigator/META-INF/MANIFEST.MF
index 863701bd3f..680c272804 100644
--- a/examples/org.eclipse.ui.examples.navigator/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.examples.navigator/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %Navigator_Examples
 Bundle-SymbolicName: org.eclipse.ui.examples.navigator;singleton:=true
 Bundle-Version: 3.4.0.qualifier
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.resources,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.navigator,
  org.eclipse.ui.views,
  org.eclipse.ui,
  org.eclipse.ui.ide,
  org.eclipse.ui.workbench,
diff --git a/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
index dca9a23b6a..ec14ab58a3 100644
--- a/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.examples.readmetool/META-INF/MANIFEST.MF
@@ -6,11 +6,11 @@ Bundle-Version: 3.7.100.qualifier
 Bundle-Activator: org.eclipse.ui.examples.readmetool.ReadmePlugin
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.resources,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.views,
  org.eclipse.ui.ide,
  org.eclipse.jface.text,
  org.eclipse.ui.workbench.texteditor,
  org.eclipse.ui.editors,
diff --git a/examples/org.eclipse.ui.genericeditor.examples/META-INF/MANIFEST.MF b/examples/org.eclipse.ui.genericeditor.examples/META-INF/MANIFEST.MF
index 388ffac151..f5ef54b7a5 100644
--- a/examples/org.eclipse.ui.genericeditor.examples/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.ui.genericeditor.examples/META-INF/MANIFEST.MF
@@ -8,11 +8,11 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui.genericeditor;bundle-version="1.0.0",
  org.eclipse.ui.editors;bundle-version="3.10.0",
  org.eclipse.jface.text;bundle-version="3.11.0",
  org.eclipse.core.resources;bundle-version="3.11.0",
  org.eclipse.ui;bundle-version="3.108.0",
- org.eclipse.core.runtime;bundle-version="3.11.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.ui.workbench.texteditor;bundle-version="3.10.100",
  org.eclipse.e4.core.commands;bundle-version="0.12.100",
  org.eclipse.ui.ide
 Export-Package: org.eclipse.ui.genericeditor.examples.dotproject
 Automatic-Module-Name: org.eclipse.ui.genericeditor.examples
diff --git a/tests/org.eclipse.core.filebuffers.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.core.filebuffers.tests/META-INF/MANIFEST.MF
index 49e6edf8d0..c254217368 100644
--- a/tests/org.eclipse.core.filebuffers.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.core.filebuffers.tests/META-INF/MANIFEST.MF
@@ -7,11 +7,11 @@ Bundle-Activator: org.eclipse.core.filebuffers.tests.FileBuffersTestPlugin
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.core.filebuffers.tests;x-internal:=true
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";resolution:=optional,
  org.eclipse.core.filebuffers;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.text;bundle-version="[3.5.0,4.0.0)",
  org.junit;bundle-version="4.12.0"
diff --git a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
index e841bb098d..17219c2d5f 100644
--- a/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF
@@ -6,11 +6,11 @@ Bundle-Version: 0.15.200.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="2.4.0",
  org.eclipse.jface;bundle-version="3.4.0",
  org.eclipse.e4.ui.services;bundle-version="0.9.0",
- org.eclipse.core.runtime;bundle-version="3.4.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.core.databinding;bundle-version="1.2.0",
  org.eclipse.jface.databinding;bundle-version="1.3.0",
  org.eclipse.e4.core.services;bundle-version="0.9.0",
  org.eclipse.e4.core.contexts,
  org.eclipse.e4.core.di,
diff --git a/tests/org.eclipse.jface.tests.notifications/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.tests.notifications/META-INF/MANIFEST.MF
index 1bacf20ac2..2cf3771ec6 100644
--- a/tests/org.eclipse.jface.tests.notifications/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jface.tests.notifications/META-INF/MANIFEST.MF
@@ -9,6 +9,6 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.junit,
  org.eclipse.jface.notifications;bundle-version="0.4.0",
  org.eclipse.swt,
  org.eclipse.jface,
  org.eclipse.ui.forms,
- org.eclipse.core.runtime;bundle-version="3.24.0"
+ org.eclipse.core.runtime;bundle-version="3.29.0"
diff --git a/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
index 00fc63af1a..30812b82b3 100644
--- a/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jface.text.tests/META-INF/MANIFEST.MF
@@ -18,11 +18,11 @@ Export-Package:
 Require-Bundle: 
  org.eclipse.jface.text;bundle-version="[3.20.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.5.0,4.0.0)",
  org.junit;bundle-version="4.12.0",
  org.eclipse.text.tests;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor,
  org.eclipse.test.performance;bundle-version="3.13.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Eclipse-BundleShape: dir
 Automatic-Module-Name: org.eclipse.jface.text.tests
diff --git a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
index 6e3266f254..379fbc3a86 100644
--- a/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.search.tests/META-INF/MANIFEST.MF
@@ -11,11 +11,11 @@ Export-Package: org.eclipse.search.core.tests;x-internal:=true,
  org.eclipse.search.tests.filesearch;x-internal:=true
 Require-Bundle: 
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.search;bundle-version="[3.5.100,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.junit;bundle-version="4.12.0",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)",
diff --git a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
index 27a48b0d8e..86073d9ee5 100644
--- a/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.text.tests/META-INF/MANIFEST.MF
@@ -9,11 +9,11 @@ Export-Package:
  org.eclipse.text.tests,
  org.eclipse.text.tests.link,
  org.eclipse.text.tests.templates
 Require-Bundle: 
  org.eclipse.core.commands;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.text;bundle-version="[3.6.3,4.0.0)",
  org.junit;bundle-version="4.12.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Eclipse-BundleShape: dir
 Automatic-Module-Name: org.eclipse.text.tests
diff --git a/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
index a50f94c07b..9e7338e68a 100644
--- a/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.editors.tests/META-INF/MANIFEST.MF
@@ -5,11 +5,11 @@ Bundle-SymbolicName: org.eclipse.ui.editors.tests;singleton:=true
 Bundle-Version: 3.13.100.qualifier
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.ui.editors.tests
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.junit;bundle-version="4.12.0",
  org.eclipse.jface;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.16.500,4.0.0)",
  org.eclipse.ui.editors;bundle-version="[3.5.0,4.0.0)",
diff --git a/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
index bcb4e7755a..a406cde04c 100644
--- a/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.genericeditor.tests/META-INF/MANIFEST.MF
@@ -5,11 +5,11 @@ Bundle-SymbolicName: org.eclipse.ui.genericeditor.tests;singleton:=true
 Bundle-Version: 1.3.200.qualifier
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.ui.genericeditor.tests,
  org.eclipse.ui.genericeditor.tests.contributions
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.junit;bundle-version="4.12.0",
  org.eclipse.jface;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.genericeditor,
  org.eclipse.core.resources;bundle-version="3.11.0",
diff --git a/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
index d148462dcf..4164b0c997 100644
--- a/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.navigator/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %bundlename
 Bundle-SymbolicName: org.eclipse.ui.tests.navigator;singleton:=true
 Bundle-Version: 3.7.200.qualifier
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.resources,
- org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="3.8.0",
  org.eclipse.ui,
  org.eclipse.ui.ide,
  org.eclipse.ui.workbench,
  org.junit,
diff --git a/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
index 198555f342..8066c3b5a0 100644
--- a/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.tests.pluginchecks/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@ Bundle-Name: Pluginchecks
 Bundle-SymbolicName: org.eclipse.ui.tests.pluginchecks;singleton:=true
 Bundle-Version: 1.2.100.qualifier
 Automatic-Module-Name: org.eclipse.ui.tests.pluginchecks
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.junit;bundle-version="4.12.0",
- org.eclipse.core.runtime;bundle-version="3.14.100",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.e4.ui.css.swt;bundle-version="0.13.200",
  org.eclipse.e4.ui.model.workbench;bundle-version="2.1.100",
  org.eclipse.e4.ui.workbench.swt;bundle-version="0.14.300",
  org.eclipse.ui.forms;bundle-version="3.7.300",
  org.eclipse.ui.themes;bundle-version="1.2.200",
diff --git a/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java b/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
index a68bfa0181..c2d31ec1dc 100644
--- a/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
+++ b/tests/org.eclipse.ui.tests.pluginchecks/src/org/eclipse/ui/tests/pluginchecks/PluginWalkerTest.java
@@ -29,10 +29,11 @@ import java.util.Map;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
+import org.eclipse.core.internal.runtime.XmlProcessorFactory;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IExtensionRegistry;
 import org.eclipse.core.runtime.RegistryFactory;
@@ -58,10 +59,11 @@ import org.xml.sax.SAXException;
 /**
  * Checks that plugin.xml of specified bundles is valid and referred classes can
  * be accessed
  *
  */
+@SuppressWarnings("restriction")
 public class PluginWalkerTest {
 
 	private BundleContext bundleContext;
 	private List<String> bundlesWithPluginXml;
 
@@ -185,11 +187,11 @@ public class PluginWalkerTest {
 		}
 		return doc;
 	}
 
 	private static DocumentBuilder createDocumentBuilder() throws ParserConfigurationException {
-		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		DocumentBuilderFactory factory = XmlProcessorFactory.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
 		factory.setNamespaceAware(true);
 		return factory.newDocumentBuilder();
 	}
 
 	private Collection<BundleWiring> findWirings(final String bundleSymbolicName, BundleContext bundleContext) {
diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
index 8002fad989..230f0f6517 100644
--- a/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF
@@ -9,11 +9,11 @@ Export-Package:
  org.eclipse.ui.workbench.texteditor.tests,
  org.eclipse.ui.workbench.texteditor.tests.minimap,
  org.eclipse.ui.workbench.texteditor.tests.revisions,
  org.eclipse.ui.workbench.texteditor.tests.rulers
 Require-Bundle: 
- org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.junit;bundle-version="4.12.0",
  org.eclipse.text.tests;bundle-version="[3.5.0,4.0.0)",
diff --git a/tools/bundles/org.eclipse.e4.tools.compat/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.compat/META-INF/MANIFEST.MF
index 7f88f87ce7..f964cdade1 100644
--- a/tools/bundles/org.eclipse.e4.tools.compat/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.compat/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.e4.tools.compat;singleton:=true
 Bundle-Version: 4.9.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.core.runtime;bundle-version="3.6.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.e4.core.contexts;bundle-version="0.9.0",
  org.eclipse.e4.core.services;bundle-version="0.9.1",
  org.eclipse.e4.ui.services;bundle-version="0.9.1",
  org.eclipse.e4.core.di;bundle-version="0.9.0",
  org.eclipse.e4.tools.services;bundle-version="0.11.0",
diff --git a/tools/bundles/org.eclipse.e4.tools.compatibility.migration/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.compatibility.migration/META-INF/MANIFEST.MF
index edd25d5abe..6cab2c14c9 100644
--- a/tools/bundles/org.eclipse.e4.tools.compatibility.migration/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.compatibility.migration/META-INF/MANIFEST.MF
@@ -5,11 +5,11 @@ Bundle-Vendor: %Bundle-Vendor
 Bundle-SymbolicName: org.eclipse.e4.tools.compatibility.migration
 Bundle-Version: 1.1.100.qualifier
 Automatic-Module-Name: org.eclipse.e4.tools.compatibiliy.migration
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.e4.tools.persistence;bundle-version="1.0.0",
- org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.e4.ui.workbench;bundle-version="[1.10.0,2.0.0)",
  org.eclipse.ui;bundle-version="[3.110.0,4.0.0)",
  org.eclipse.e4.core.contexts
 Export-Package: org.eclipse.e4.tools.compatibiliy.migration,
  org.eclipse.e4.tools.internal.compatibiliy.migration;x-internal:=true
diff --git a/tools/bundles/org.eclipse.e4.tools.emf.editor3x/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.emf.editor3x/META-INF/MANIFEST.MF
index 2b57c71265..6c316eab05 100644
--- a/tools/bundles/org.eclipse.e4.tools.emf.editor3x/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.emf.editor3x/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.e4.tools.emf.editor3x;singleton:=true
 Bundle-Version: 4.9.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.core.runtime;bundle-version="3.6.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.emf.common;bundle-version="2.6.0",
  org.eclipse.core.databinding.observable;bundle-version="1.3.0",
  org.eclipse.e4.tools.emf.ui;bundle-version="0.9.0",
  org.eclipse.e4.ui.workbench;bundle-version="0.9.1",
  org.eclipse.e4.ui.css.core;bundle-version="0.9.0",
diff --git a/tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
index a5901d3d8c..e44355994e 100644
--- a/tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.emf.ui/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@ Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.e4.tools.emf.ui;singleton:=true
 Bundle-Version: 4.8.100.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Require-Bundle: org.eclipse.core.runtime;bundle-version="3.27.0",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.core.databinding.property;bundle-version="1.2.100",
  org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",
  org.eclipse.jface.databinding;bundle-version="1.4.0",
  org.eclipse.jface;bundle-version="3.14.0",
  org.eclipse.emf.databinding.edit;bundle-version="1.2.0",
diff --git a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/DocUtil.java b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/DocUtil.java
index 45d7a567cc..ea2257626d 100644
--- a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/DocUtil.java
+++ b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/DocUtil.java
@@ -12,31 +12,32 @@
  *     Steven Spungin <steven@spungin.tv> - initial API and implementation
  *******************************************************************************/
 
 package org.eclipse.e4.tools.emf.ui.internal.common.component.tabs;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 /**
  * Helper functions for working with documents.
  *
  * @author Steven Spungin
  *
  */
+@SuppressWarnings("restriction")
 public class DocUtil {
 
 	public static Element createChild(Element parent, String name) {
 		Element element = parent.getOwnerDocument().createElement(name);
 		parent.appendChild(element);
 		return element;
 	}
 
 	public static Document createDocument(String name) throws ParserConfigurationException {
-		Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+		Document doc = org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
 		doc.appendChild(doc.createElement(name));
 		return doc;
 	}
 
 }
diff --git a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/ListTab.java b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/ListTab.java
index fa388e47d1..3c9e0bd9ab 100644
--- a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/ListTab.java
+++ b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/component/tabs/ListTab.java
@@ -27,11 +27,10 @@ import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
@@ -248,12 +247,13 @@ public class ListTab implements IViewEObjects {
 		}
 
 		final String xml = pref.get("list-tab-xml", ""); //$NON-NLS-1$ //$NON-NLS-2$
 		if (E.notEmpty(xml)) {
 			try {
-				final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
-						.parse(new InputSource(new StringReader(xml)));
+				@SuppressWarnings("restriction")
+				final Document doc = org.eclipse.core.internal.runtime.XmlProcessorFactory
+						.parseWithErrorOnDOCTYPE(new InputSource(new StringReader(xml)));
 				final XPath xpath = XPathFactory.newInstance().newXPath();
 				NodeList list;
 				if (restoreColumns) {
 					// restore columns and column widths
 					list = (NodeList) xpath.evaluate("//columns/column", doc, XPathConstants.NODESET); //$NON-NLS-1$
@@ -321,11 +321,13 @@ public class ListTab implements IViewEObjects {
 		}
 	}
 
 	// @Refactor
 	static private String docToString(Document doc) throws TransformerException {
-		final TransformerFactory tf = TransformerFactory.newInstance();
+		@SuppressWarnings("restriction")
+		final TransformerFactory tf = org.eclipse.core.internal.runtime.XmlProcessorFactory
+				.createTransformerFactoryWithErrorOnDOCTYPE();
 		final Transformer transformer = tf.newTransformer();
 		transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); //$NON-NLS-1$
 		final StringWriter writer = new StringWriter();
 		transformer.transform(new DOMSource(doc), new StreamResult(writer));
 		final String output = writer.getBuffer().toString().replaceAll("\n|\r", ""); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
index 7fc73baa9c..358d008773 100644
--- a/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
+++ b/tools/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/resourcelocator/TargetPlatformContributionCollector.java
@@ -34,15 +34,15 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
-import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathFactory;
 
+import org.eclipse.core.internal.runtime.XmlProcessorFactory;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -83,10 +83,11 @@ import org.w3c.dom.NodeList;
  * contents.
  *
  * @author Steven Spungin
  *
  */
+@SuppressWarnings("restriction")
 public abstract class TargetPlatformContributionCollector extends ClassContributionCollector {
 
 	CopyOnWriteArrayList<Entry> cacheEntry = new CopyOnWriteArrayList<>();
 	HashSet<String> cacheBundleId = new HashSet<>();
 	HashSet<String> cachePackage = new HashSet<>();
@@ -586,12 +587,12 @@ public abstract class TargetPlatformContributionCollector extends ClassContribut
 		List<String> ret = outputDirectories.get(installLocation);
 		if (ret == null) {
 			ret = new ArrayList<>();
 			outputDirectories.put(installLocation, ret);
 			try {
-				final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
-						.parse(new File(installLocation + File.separator + ".classpath")); //$NON-NLS-1$
+				File file = new File(installLocation + File.separator + ".classpath"); //$NON-NLS-1$
+				final Document doc = XmlProcessorFactory.parseWithErrorOnDOCTYPE(file);
 				final XPath xp = XPathFactory.newInstance().newXPath();
 				final NodeList list = (NodeList) xp.evaluate(
 						"//classpathentry[@kind='output']/@path", doc, XPathConstants.NODESET); //$NON-NLS-1$
 				for (int i = 0; i < list.getLength(); i++) {
 					final String value = list.item(i).getNodeValue();
diff --git a/tools/bundles/org.eclipse.e4.tools.jdt.templates/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.jdt.templates/META-INF/MANIFEST.MF
index c1983c17bc..6d3d440b98 100644
--- a/tools/bundles/org.eclipse.e4.tools.jdt.templates/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.jdt.templates/META-INF/MANIFEST.MF
@@ -7,9 +7,9 @@ Bundle-Version: 4.10.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.jdt.ui;bundle-version="3.20.0",
  org.eclipse.ui.editors;bundle-version="3.6.0",
  org.eclipse.jface.text;bundle-version="3.6.0",
  org.eclipse.jdt.core;bundle-version="3.6.0",
- org.eclipse.core.runtime;bundle-version="3.6.0"
+ org.eclipse.core.runtime;bundle-version="3.29.0"
 Export-Package: org.eclipse.e4.internal.tools.jdt.templates;version="0.12.0.qualifier";x-internal:=true
 Bundle-Vendor: %providerName
 Automatic-Module-Name: org.eclipse.e4.tools.jdt.templates
diff --git a/tools/bundles/org.eclipse.e4.tools.persistence/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools.persistence/META-INF/MANIFEST.MF
index e9a64a5937..ed85e7c877 100644
--- a/tools/bundles/org.eclipse.e4.tools.persistence/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools.persistence/META-INF/MANIFEST.MF
@@ -5,11 +5,11 @@ Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.e4.tools.persistence;singleton:=true
 Automatic-Module-Name: org.eclipse.e4.tools.persistence
 Bundle-Version: 1.1.100.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %Bundle-Vendor
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.10.0,3.0.0)";visibility:=reexport,
  org.eclipse.e4.ui.model.workbench;bundle-version="[2.1.0,3.0.0)";visibility:=reexport,
  org.eclipse.e4.core.contexts;bundle-version="[1.8.0,2.0.0)",
  org.eclipse.e4.ui.workbench;bundle-version="[1.10.0,2.0.0)",
  org.eclipse.e4.ui.workbench.addons.swt;bundle-version="[1.2.0,2.0.0)",
diff --git a/tools/bundles/org.eclipse.e4.tools/META-INF/MANIFEST.MF b/tools/bundles/org.eclipse.e4.tools/META-INF/MANIFEST.MF
index e53f0c17d8..e2b4dd2492 100644
--- a/tools/bundles/org.eclipse.e4.tools/META-INF/MANIFEST.MF
+++ b/tools/bundles/org.eclipse.e4.tools/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.e4.tools;singleton:=true
 Bundle-Version: 4.10.100.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.core.runtime;bundle-version="3.27.0",
+ org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.e4.ui.model.workbench;bundle-version="0.9.1",
  org.eclipse.core.resources;bundle-version="3.6.0",
  org.eclipse.jdt.core;bundle-version="3.6.0",
  org.eclipse.ui.ide;bundle-version="3.6.0",
  org.eclipse.core.databinding;bundle-version="1.3.100",
diff --git a/tools/tests/org.eclipse.e4.tools.compatibility.migration.tests/META-INF/MANIFEST.MF b/tools/tests/org.eclipse.e4.tools.compatibility.migration.tests/META-INF/MANIFEST.MF
index c4edd6744d..c33550059a 100644
--- a/tools/tests/org.eclipse.e4.tools.compatibility.migration.tests/META-INF/MANIFEST.MF
+++ b/tools/tests/org.eclipse.e4.tools.compatibility.migration.tests/META-INF/MANIFEST.MF
@@ -9,9 +9,9 @@ Bundle-RequiredExecutionEnvironment: JavaSE-17
 Require-Bundle: org.eclipse.swt;bundle-version="[3.110.0,4.0.0)",
  org.eclipse.ui.workbench;bundle-version="[3.100.0,4.0.0)",
  org.eclipse.e4.tools.compatibility.migration;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.e4.ui.model.workbench;bundle-version="[2.1.0,3.0.0)",
  org.junit;bundle-version="[4.12.0,5.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
  org.eclipse.ui.tests.harness;bundle-version="[1.8.100,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Import-Package: org.junit.jupiter.api;version="[5.8.1,6.0.0)"
diff --git a/tools/tests/org.eclipse.e4.tools.persistence.tests/META-INF/MANIFEST.MF b/tools/tests/org.eclipse.e4.tools.persistence.tests/META-INF/MANIFEST.MF
index 81639c9433..415329bc19 100644
--- a/tools/tests/org.eclipse.e4.tools.persistence.tests/META-INF/MANIFEST.MF
+++ b/tools/tests/org.eclipse.e4.tools.persistence.tests/META-INF/MANIFEST.MF
@@ -4,11 +4,11 @@ Bundle-Name: Tests
 Bundle-SymbolicName: org.eclipse.e4.tools.persistence.tests;singleton:=true
 Bundle-Vendor: Eclipse.org
 Bundle-Version: 1.1.0.qualifier
 Automatic-Module-Name: org.eclipse.e4.tools.persistence.tests
 Bundle-RequiredExecutionEnvironment: JavaSE-17
-Require-Bundle: org.eclipse.core.runtime;bundle-version="3.24.0",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
  org.eclipse.ui;bundle-version="3.201.0",
  org.junit;bundle-version="4.13.2",
  org.eclipse.swt,
  org.eclipse.ui.tests.harness,
  org.eclipse.e4.tools.persistence,

Vulnerable code:  org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.16.100"
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="3.27.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.7.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.17.100"
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.18.0",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
import javax.xml.parsers.DocumentBuilderFactory;
			DocumentBuilder parser = DocumentBuilderFactory.newInstance()
					.newDocumentBuilder();
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
org.eclipse.jdt.core.compiler.problem.discouragedReference=error
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)"
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
			DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
			DocumentBuilder parser= factory.newDocumentBuilder();
			DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
			DocumentBuilder builder= factory.newDocumentBuilder();
			Document document= builder.newDocument();



			Transformer transformer=TransformerFactory.newInstance().newTransformer();
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
	private static final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
			.newInstance();
		documentBuilderFactory.setNamespaceAware(true);
		documentBuilderFactory.setIgnoringComments(true);
			DocumentBuilder parser = documentBuilderFactory
					.newDocumentBuilder();
 org.eclipse.core.runtime;bundle-version="3.12.0",
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;
	public void gotoMarker(IMarker marker) {
		} catch (ParserConfigurationException | SAXException e) {
import javax.xml.parsers.SAXParserFactory;
	public WelcomeParser() throws ParserConfigurationException, SAXException,
			FactoryConfigurationError {
		super();
		SAXParserFactory factory = SAXParserFactory.newInstance();
		factory.setFeature("http://xml.org/sax/features/namespaces", true); //$NON-NLS-1$
		parser = factory.newSAXParser();

Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
import java.util.Arrays;
import javax.xml.parsers.DocumentBuilderFactory;
	private static String FILE_STRING = "file"; //$NON-NLS-1$

	/**
	 * Clients who need to use the "file" protocol can override this method to
	 * return the original attribute value
	 *
	 * @param attributeOldValue
	 * @return return the new attribute value after concatenating the "file"
	 *         protocol restriction if does not exist already
	 */
	private static String getAttributeNewValue(Object attributeOldValue) {
		StringBuilder strNewValue = new StringBuilder(FILE_STRING);
		if (attributeOldValue instanceof String && ((String) attributeOldValue).length() != 0) {
			String strOldValue = (String) attributeOldValue;
			boolean exists = Arrays.asList(strOldValue.split(",")).stream().anyMatch(x -> x.trim().equals(FILE_STRING)); //$NON-NLS-1$
			if (!exists) {
				strNewValue.append(", ").append(strOldValue); //$NON-NLS-1$
			} else {
				strNewValue = new StringBuilder(strOldValue);
			}
		}
		return strNewValue.toString();
	}

		DocumentBuilderFactory factory = null;
		Object attributeDTDOldValue = null;
		Object attributeSchemaOldValue = null;
			factory = DocumentBuilderFactory.newInstance();
			try {
				attributeDTDOldValue = factory.getAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD);
				attributeSchemaOldValue = factory.getAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA);
			} catch (NullPointerException | IllegalArgumentException e) {
				// Attributes not defined
			}
			factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD,
					getAttributeNewValue(attributeDTDOldValue));
			factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA,
					getAttributeNewValue(attributeSchemaOldValue));
			DocumentBuilder parser = factory.newDocumentBuilder();
		} finally {
			if (factory != null) {
				factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_DTD, attributeDTDOldValue);
				factory.setAttribute(javax.xml.XMLConstants.ACCESS_EXTERNAL_SCHEMA, attributeSchemaOldValue);
			}
		Document document;
			document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
//            throw new Error(e);
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
import java.io.Closeable;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
		try {
			TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(writer));
		} catch (TransformerException e) {
		} finally {
			close(writer);
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			return builder.parse(new InputSource(reader));
		} finally {
			close(reader);
		}
	}

	private void close(Closeable closeable) {
		try {
			closeable.close();
		} catch (IOException e) {
			throw new IllegalStateException(e);
 org.eclipse.core.runtime;bundle-version="3.4.0",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.11.0",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.4.0",
 org.eclipse.core.runtime;bundle-version="3.24.0"
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.27.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.28.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.14.100",
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
 org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.6.0",
 org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.6.0",
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.27.0",
import javax.xml.parsers.DocumentBuilderFactory;
		Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
import javax.xml.parsers.DocumentBuilderFactory;
				final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
						.parse(new InputSource(new StringReader(xml)));
		final TransformerFactory tf = TransformerFactory.newInstance();
import javax.xml.parsers.DocumentBuilderFactory;
				final Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
						.parse(new File(installLocation + File.separator + ".classpath")); //$NON-NLS-1$
 org.eclipse.core.runtime;bundle-version="3.6.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.27.0",
 org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.24.0",
Fixed code:  org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="3.29.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
import org.eclipse.jface.internal.XmlProcessorFactoryJFace;
			DocumentBuilder parser = XmlProcessorFactoryJFace.createDocumentBuilderWithErrorOnDOCTYPE();
/*******************************************************************************
 *  Copyright (c) 2023 Joerg Kubitz and others.
 *
 *  This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License 2.0
 *  which accompanies this distribution, and is available at
 *  https://www.eclipse.org/legal/epl-2.0/
 *
 *  SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
package org.eclipse.jface.internal;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

/**
 * XML processing which prohibits external entities.
 *
 * @see <a href="https://rules.sonarsource.com/java/RSPEC-2755/">RSPEC-2755</a>
 */
/* A copy of org.eclipse.core.internal.runtime.XmlProcessorFactory for jface. */
public class XmlProcessorFactoryJFace {
	private XmlProcessorFactoryJFace() {
		// static Utility only
	}

	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE = createDocumentBuilderFactoryWithErrorOnDOCTYPE();

	/**
	 * Creates DocumentBuilderFactory which throws SAXParseException when detecting
	 * external entities. It's magnitudes faster to call
	 * {@link #createDocumentBuilderWithErrorOnDOCTYPE()}.
	 *
	 * @return javax.xml.parsers.DocumentBuilderFactory
	 */
	public static synchronized DocumentBuilderFactory createDocumentBuilderFactoryWithErrorOnDOCTYPE() {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// completely disable DOCTYPE declaration:
		try {
			factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //$NON-NLS-1$
		} catch (ParserConfigurationException e) {
			throw new RuntimeException(e.getMessage(), e);
		}
		return factory;
	}

	/**
	 * Creates DocumentBuilder which throws SAXParseException when detecting
	 * external entities. The builder is not thread safe.
	 *
	 * @return javax.xml.parsers.DocumentBuilder
	 * @throws ParserConfigurationException
	 */
	public static DocumentBuilder createDocumentBuilderWithErrorOnDOCTYPE() throws ParserConfigurationException {
		return DOCUMENT_BUILDER_FACTORY_ERROR_ON_DOCTYPE.newDocumentBuilder();
	}

}
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled
org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.problem.APILeak=warning
org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)"
			@SuppressWarnings("restriction")
			DocumentBuilder parser= org.eclipse.core.internal.runtime.XmlProcessorFactory.createDocumentBuilderWithErrorOnDOCTYPE();
			@SuppressWarnings("restriction")
			Document document= org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
			@SuppressWarnings("restriction")
			Transformer transformer= org.eclipse.core.internal.runtime.XmlProcessorFactory.createTransformerFactoryWithErrorOnDOCTYPE().newTransformer();
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
	@SuppressWarnings("restriction")
	private static final DocumentBuilderFactory DOCUMENT_BUILDER_FACTORY = org.eclipse.core.internal.runtime.XmlProcessorFactory
			.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
		DOCUMENT_BUILDER_FACTORY.setNamespaceAware(true);
		DOCUMENT_BUILDER_FACTORY.setIgnoringComments(true);
			DocumentBuilder parser = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder();
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
	public void gotoMarker(@SuppressWarnings({ "unused", "javadoc" }) IMarker marker) {
		} catch (Exception e) {
	 *
	 * @throws ParserConfigurationException
	 * @throws SAXException
	 * @throws FactoryConfigurationError
	public WelcomeParser() throws ParserConfigurationException, SAXException, FactoryConfigurationError {
		@SuppressWarnings("restriction")
		SAXParser p = org.eclipse.core.internal.runtime.XmlProcessorFactory.createSAXParserWithErrorOnDOCTYPE(true);
		parser = p;
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
			@SuppressWarnings("restriction")
			DocumentBuilder parser = org.eclipse.core.internal.runtime.XmlProcessorFactory
					.createDocumentBuilderWithErrorOnDOCTYPE();
			@SuppressWarnings("restriction")
			Document document = org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
		try (writer) {
			@SuppressWarnings("restriction")
			TransformerFactory f = org.eclipse.core.internal.runtime.XmlProcessorFactory
			.createTransformerFactoryWithErrorOnDOCTYPE();
			f.newTransformer().transform(source, new StreamResult(writer));
		} catch (TransformerException | IOException e) {
	@SuppressWarnings("restriction")
		try (reader) {
			return org.eclipse.core.internal.runtime.XmlProcessorFactory
					.parseWithErrorOnDOCTYPE(new InputSource(reader));
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="3.29.0"
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
import org.eclipse.core.internal.runtime.XmlProcessorFactory;
@SuppressWarnings("restriction")
		DocumentBuilderFactory factory = XmlProcessorFactory.createDocumentBuilderFactoryWithErrorOnDOCTYPE();
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",

@SuppressWarnings("restriction")
		Document doc = org.eclipse.core.internal.runtime.XmlProcessorFactory.newDocumentWithErrorOnDOCTYPE();
				@SuppressWarnings("restriction")
				final Document doc = org.eclipse.core.internal.runtime.XmlProcessorFactory
						.parseWithErrorOnDOCTYPE(new InputSource(new StringReader(xml)));
		@SuppressWarnings("restriction")
		final TransformerFactory tf = org.eclipse.core.internal.runtime.XmlProcessorFactory
				.createTransformerFactoryWithErrorOnDOCTYPE();
import org.eclipse.core.internal.runtime.XmlProcessorFactory;
@SuppressWarnings("restriction")
				File file = new File(installLocation + File.separator + ".classpath"); //$NON-NLS-1$
				final Document doc = XmlProcessorFactory.parseWithErrorOnDOCTYPE(file);
 org.eclipse.core.runtime;bundle-version="3.29.0"
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
 org.eclipse.core.runtime;bundle-version="3.29.0",
 org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.29.0",