Skip to content

[JDK-8356437] Adapt JDK-8353232: Standardizing and Unifying XML Component Configurations #11154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 9, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion common.json
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
"galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+22-2657", "platformspecific": true, "extrabundles": ["static-libs"]},
"galahad-jdk": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+23-2715", "platformspecific": true, "extrabundles": ["static-libs"]},

"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]},
"labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true },
Original file line number Diff line number Diff line change
@@ -45,17 +45,11 @@
* Ideally, we would initialize all of {@code jdk.xml} at run time, but that is too intrusive at the
* current point in time (GR-50683).
*/
@TargetClass(className = "jdk.xml.internal.JdkCatalog", onlyWith = JDKLatest.class)
public final class Target_jdk_xml_internal_JdkCatalog {
@TargetClass(className = "jdk.xml.internal.JdkXmlConfig$CatalogHolder", onlyWith = JDKLatest.class)
public final class Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder {
@Alias //
@RecomputeFieldValue(kind = RecomputeFieldValue.Kind.Custom, declClass = JdkCatalogSupplier.class, isFinal = true) //
public static Target_javax_xml_catalog_Catalog catalog;

@Substitute
@SuppressWarnings("unused")
public static void init(String resolve) {
// initialized at build time
}
public static Target_javax_xml_catalog_Catalog JDKCATALOG;
}

@TargetClass(className = "javax.xml.catalog.Catalog", onlyWith = JDKLatest.class)
@@ -76,8 +70,8 @@ final class Target_javax_xml_parsers_SAXParser {
final class JdkCatalogSupplier implements FieldValueTransformer {

/**
* Verifies that {@link Target_jdk_xml_internal_JdkCatalog#catalog} is non-null. The
* initialization is triggered in
* Verifies that {@link Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder#JDKCATALOG} is
* non-null. The initialization is triggered in
* {@code com.oracle.svm.hosted.xml.JavaxXmlClassAndResourcesLoaderFeature#initializeJdkCatalog()}
*/
@Override
Original file line number Diff line number Diff line change
@@ -76,7 +76,7 @@ public void beforeAnalysis(BeforeAnalysisAccess access) {
}

/**
* Initialize the {@code JdkCatalog#catalog} field. We do this eagerly (instead of e.g. in a
* Initialize the {@code CatalogHolder#catalog} field. We do this eagerly (instead of e.g. in a
* {@link FieldValueTransformer}) to work around a race condition in
* XMLSecurityManager#prepareCatalog (JDK-8350189).
*/
@@ -85,10 +85,10 @@ private static void initializeJdkCatalog() {
return;
}
if (ModuleLayer.boot().findModule("java.xml").isPresent()) {
// Ensure the JdkCatalog#catalog field is initialized.
Class<?> xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.XMLSecurityManager");
// Ensure the JdkXmlConfig$CatalogHolder#catalog field is initialized.
Class<?> xmlSecurityManager = ReflectionUtil.lookupClass(false, "jdk.xml.internal.JdkXmlConfig$CatalogHolder");
// The constructor call prepareCatalog which will call JdkCatalog#init.
ReflectionUtil.newInstance(xmlSecurityManager);
ReflectionUtil.readStaticField(xmlSecurityManager, "JDKCATALOG");
}
}
}