From 41bb131531b74c2accc59c3f9c709d3f12b7f27f Mon Sep 17 00:00:00 2001 From: Yudi Zheng <yudi.zheng@oracle.com> Date: Wed, 7 May 2025 20:54:59 +0200 Subject: [PATCH 1/2] Adapt JDK-8353232: Standardizing and Unifying XML Component Configurations --- ...xml_internal_JdkXmlConfig_CatalogHolder.java} | 16 +++++----------- .../JavaxXmlClassAndResourcesLoaderFeature.java | 8 ++++---- 2 files changed, 9 insertions(+), 15 deletions(-) rename substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/{Target_jdk_xml_internal_JdkCatalog.java => Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java} (86%) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java similarity index 86% rename from substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java rename to substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java index eec7075c8d9d..d025f67ca037 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkCatalog.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/xml/Target_jdk_xml_internal_JdkXmlConfig_CatalogHolder.java @@ -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 diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java index 52e8deeda0b5..ee2718390288 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/xml/JavaxXmlClassAndResourcesLoaderFeature.java @@ -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"); } } } From aa015d080784e9c310b7ed030fb645cec41aebca Mon Sep 17 00:00:00 2001 From: Yudi Zheng <yudi.zheng@oracle.com> Date: Wed, 7 May 2025 20:55:22 +0200 Subject: [PATCH 2/2] Update galahad jdk --- common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.json b/common.json index 079e32a05816..2f5d3ed42f34 100644 --- a/common.json +++ b/common.json @@ -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 },