From 960b17e11a3b150721d7cb7eae1a24fe25c454a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Wed, 25 Jan 2023 12:41:17 +0100 Subject: [PATCH 01/10] Allow RuntimePropertyParser to initialize properties non-strict --- .../com/oracle/svm/core/jdk/SystemPropertiesSupport.java | 6 +++++- .../oracle/svm/core/properties/RuntimePropertyParser.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java index 7e25876a244c..6647f941dad9 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/SystemPropertiesSupport.java @@ -202,8 +202,12 @@ public void setProperties(Properties props) { */ @Override public void initializeProperty(String key, String value) { + initializeProperty(key, value, true); + } + + public void initializeProperty(String key, String value, boolean strict) { String prevValue = savedProperties.put(key, value); - if (prevValue != null && !prevValue.equals(value)) { + if (strict && prevValue != null && !prevValue.equals(value)) { VMError.shouldNotReachHere("System property " + key + " is initialized to " + value + " but was previously initialized to " + prevValue + "."); } properties.setProperty(key, value); diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/properties/RuntimePropertyParser.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/properties/RuntimePropertyParser.java index 4ed029d743fe..ab1ea72ca143 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/properties/RuntimePropertyParser.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/properties/RuntimePropertyParser.java @@ -56,7 +56,7 @@ public static String[] parse(String[] args) { } MapCursor cursor = properties.getEntries(); while (cursor.advance()) { - SystemPropertiesSupport.singleton().initializeProperty(cursor.getKey(), cursor.getValue()); + SystemPropertiesSupport.singleton().initializeProperty(cursor.getKey(), cursor.getValue(), false); } if (newIdx == args.length) { /* We can be allocation free and just return the original arguments. */ From 492bcfcc9de49c66bcc27196756741d7c43f8256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Wed, 25 Jan 2023 13:06:30 +0100 Subject: [PATCH 02/10] Remove org.graalvm.options dependency from org.graalvm.nativeimage --- sdk/mx.sdk/suite.py | 2 +- sdk/src/org.graalvm.nativeimage/snapshot.sigtest | 4 ++-- .../src/org/graalvm/nativeimage/RuntimeOptions.java | 7 +++---- .../graalvm/nativeimage/impl/RuntimeOptionsSupport.java | 5 ++--- .../com/oracle/svm/core/option/RuntimeOptionValues.java | 5 +++-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/sdk/mx.sdk/suite.py b/sdk/mx.sdk/suite.py index 56150463ed21..ff6d48c8afe3 100644 --- a/sdk/mx.sdk/suite.py +++ b/sdk/mx.sdk/suite.py @@ -247,6 +247,7 @@ "dependencies" : [ "org.graalvm.collections", "org.graalvm.home", + "org.graalvm.options", ], "requires" : [ "java.logging", @@ -271,7 +272,6 @@ "sourceDirs" : ["src"], "dependencies" : [ "org.graalvm.word", - "org.graalvm.options", ], "checkstyle" : "org.graalvm.word", "javaCompliance" : "11+", diff --git a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest index dffd346fcb74..eba7b52261e6 100644 --- a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest +++ b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest @@ -433,8 +433,8 @@ supr java.lang.Object CLSS public final org.graalvm.nativeimage.RuntimeOptions innr public final static !enum OptionClass meth public static <%0 extends java.lang.Object> {%%0} get(java.lang.String) -meth public static org.graalvm.options.OptionDescriptors getOptions() -meth public static org.graalvm.options.OptionDescriptors getOptions(java.util.EnumSet) +meth public static <%0 extends java.lang.Object> {%%0} getOptions() +meth public static <%0 extends java.lang.Object> {%%0} getOptions(java.util.EnumSet) meth public static void set(java.lang.String,java.lang.Object) supr java.lang.Object diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java index 796918f1f9c9..a74b9757028a 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 @@ -43,7 +43,6 @@ import java.util.EnumSet; import org.graalvm.nativeimage.impl.RuntimeOptionsSupport; -import org.graalvm.options.OptionDescriptors; /** * Used for manipulating options at run time. @@ -88,7 +87,7 @@ public enum OptionClass { * * @since 19.0 */ - public static OptionDescriptors getOptions(EnumSet classes) { + public static T getOptions(EnumSet classes) { return ImageSingletons.lookup(RuntimeOptionsSupport.class).getOptions(classes); } @@ -97,7 +96,7 @@ public static OptionDescriptors getOptions(EnumSet classes) { * * @since 19.0 */ - public static OptionDescriptors getOptions() { + public static T getOptions() { return getOptions(EnumSet.allOf(OptionClass.class)); } diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java index 0ca16f8aa795..2eb20dc23ece 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 @@ -43,12 +43,11 @@ import java.util.EnumSet; import org.graalvm.nativeimage.RuntimeOptions.OptionClass; -import org.graalvm.options.OptionDescriptors; public interface RuntimeOptionsSupport { void set(String optionName, Object value); T get(String optionName); - OptionDescriptors getOptions(EnumSet classes); + T getOptions(EnumSet classes); } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java index ca058b6c7231..78595a50db02 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java @@ -113,8 +113,9 @@ public T get(String optionName) { return optionKey.getValue(RuntimeOptionValues.singleton()); } + @SuppressWarnings("unchecked") @Override - public OptionDescriptors getOptions(EnumSet classes) { + public T getOptions(EnumSet classes) { Iterable descriptors = RuntimeOptionParser.singleton().getDescriptors(); List graalvmDescriptors = new ArrayList<>(); for (OptionDescriptor descriptor : descriptors) { @@ -131,7 +132,7 @@ public OptionDescriptors getOptions(EnumSet classes) { graalvmDescriptors.add(builder.build()); } } - return OptionDescriptors.create(graalvmDescriptors); + return (T) OptionDescriptors.create(graalvmDescriptors); } private static OptionClass getOptionClass(OptionDescriptor descriptor) { From df85630d7cf3c7cf3dcc7da754203936530012f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Thu, 26 Jan 2023 12:42:55 +0100 Subject: [PATCH 03/10] Declare RuntimeOptions.getOptions deprecated for removal --- sdk/src/org.graalvm.nativeimage/snapshot.sigtest | 2 ++ .../src/org/graalvm/nativeimage/RuntimeOptions.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest index eba7b52261e6..4d8805544bb5 100644 --- a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest +++ b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest @@ -434,7 +434,9 @@ CLSS public final org.graalvm.nativeimage.RuntimeOptions innr public final static !enum OptionClass meth public static <%0 extends java.lang.Object> {%%0} get(java.lang.String) meth public static <%0 extends java.lang.Object> {%%0} getOptions() + anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="23.0") meth public static <%0 extends java.lang.Object> {%%0} getOptions(java.util.EnumSet) + anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="23.0") meth public static void set(java.lang.String,java.lang.Object) supr java.lang.Object diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java index a74b9757028a..c1c2494d20d8 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java @@ -87,6 +87,7 @@ public enum OptionClass { * * @since 19.0 */ + @Deprecated(since = "23.0", forRemoval = true) public static T getOptions(EnumSet classes) { return ImageSingletons.lookup(RuntimeOptionsSupport.class).getOptions(classes); } @@ -96,6 +97,7 @@ public static T getOptions(EnumSet classes) { * * @since 19.0 */ + @Deprecated(since = "23.0", forRemoval = true) public static T getOptions() { return getOptions(EnumSet.allOf(OptionClass.class)); } From ffd7ac36b7f0c88a76150c34365d6a28650d3630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Thu, 26 Jan 2023 14:00:46 +0100 Subject: [PATCH 04/10] Add missing @since annotation on RuntimeSystemProperties class --- .../graalvm/nativeimage/hosted/RuntimeSystemProperties.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java index 04857a315e52..8376c32e047a 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java @@ -45,6 +45,12 @@ import org.graalvm.nativeimage.ImageSingletons; import org.graalvm.nativeimage.impl.RuntimeSystemPropertiesSupport; +/** + * This class provides methods that can be called during native image generation to define system + * property setting for image runtime. + * + * @since 23.0 + */ public final class RuntimeSystemProperties { /** From 1db3b158fb114c0609154ef4c020158694b5baf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Mon, 30 Jan 2023 12:32:49 +0100 Subject: [PATCH 05/10] Update copyright header --- .../org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java index 8376c32e047a..c646be2fcd6f 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/hosted/RuntimeSystemProperties.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The Universal Permissive License (UPL), Version 1.0 From 5799c7e95d4020c3b682a9f79e4d5fd77af97f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Thu, 26 Jan 2023 17:12:49 +0100 Subject: [PATCH 06/10] Fix mx javadoc issues in truffle gate cause by added @Deprecated annotations --- .../src/org/graalvm/nativeimage/RuntimeOptions.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java index c1c2494d20d8..8eb0e747e88e 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java @@ -73,10 +73,11 @@ public static T get(String optionName) { } /** - * Classes of options that can be queried through {@link #getOptions(EnumSet)}. + * Classes of options that can be queried through {@code getOptions(EnumSet)}. * * @since 19.0 */ + @Deprecated(since = "23.0", forRemoval = true) public enum OptionClass { VM, Compiler From cf518a9dce662c5e9766502ad44488926d6973af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Thu, 26 Jan 2023 19:39:49 +0100 Subject: [PATCH 07/10] Add missing @SuppressWarnings --- .../src/com/oracle/svm/core/option/RuntimeOptionValues.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java index 78595a50db02..f7c782e69fe4 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java @@ -113,7 +113,7 @@ public T get(String optionName) { return optionKey.getValue(RuntimeOptionValues.singleton()); } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "deprecation"}) @Override public T getOptions(EnumSet classes) { Iterable descriptors = RuntimeOptionParser.singleton().getDescriptors(); @@ -135,6 +135,7 @@ public T getOptions(EnumSet classes) { return (T) OptionDescriptors.create(graalvmDescriptors); } + @SuppressWarnings("deprecation") private static OptionClass getOptionClass(OptionDescriptor descriptor) { if (descriptor.getOptionKey() instanceof RuntimeOptionKey) { return OptionClass.VM; From cf17f702ddcf9f8bbb680449c94c156f84ce21fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Mon, 30 Jan 2023 12:09:48 +0100 Subject: [PATCH 08/10] Update org.graalvm.nativeimage/snapshot.sigtest for RuntimeOptions$OptionClass deprecation --- sdk/src/org.graalvm.nativeimage/snapshot.sigtest | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest index 4d8805544bb5..1e1ff9394f21 100644 --- a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest +++ b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest @@ -9,6 +9,14 @@ meth public abstract void close() throws java.lang.Exception CLSS public abstract interface java.lang.Comparable<%0 extends java.lang.Object> meth public abstract int compareTo({java.lang.Comparable%0}) +CLSS public abstract interface !annotation java.lang.Deprecated + anno 0 java.lang.annotation.Documented() + anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME) + anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE]) +intf java.lang.annotation.Annotation +meth public abstract !hasdefault boolean forRemoval() +meth public abstract !hasdefault java.lang.String since() + CLSS public abstract java.lang.Enum<%0 extends java.lang.Enum<{java.lang.Enum%0}>> cons protected init(java.lang.String,int) innr public final static EnumDesc @@ -442,6 +450,7 @@ supr java.lang.Object CLSS public final static !enum org.graalvm.nativeimage.RuntimeOptions$OptionClass outer org.graalvm.nativeimage.RuntimeOptions + anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="23.0") fld public final static org.graalvm.nativeimage.RuntimeOptions$OptionClass Compiler fld public final static org.graalvm.nativeimage.RuntimeOptions$OptionClass VM meth public static org.graalvm.nativeimage.RuntimeOptions$OptionClass valueOf(java.lang.String) From 6fb310187625bd7a29ed98bf55d31cbbc71251c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Mon, 30 Jan 2023 13:58:06 +0100 Subject: [PATCH 09/10] Do not modify deprecated API method return values --- sdk/mx.sdk/suite.py | 2 +- sdk/src/org.graalvm.nativeimage/snapshot.sigtest | 4 ++-- .../src/org/graalvm/nativeimage/RuntimeOptions.java | 5 +++-- .../org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java | 4 +++- .../src/com/oracle/svm/core/option/RuntimeOptionValues.java | 4 ++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/sdk/mx.sdk/suite.py b/sdk/mx.sdk/suite.py index ff6d48c8afe3..56150463ed21 100644 --- a/sdk/mx.sdk/suite.py +++ b/sdk/mx.sdk/suite.py @@ -247,7 +247,6 @@ "dependencies" : [ "org.graalvm.collections", "org.graalvm.home", - "org.graalvm.options", ], "requires" : [ "java.logging", @@ -272,6 +271,7 @@ "sourceDirs" : ["src"], "dependencies" : [ "org.graalvm.word", + "org.graalvm.options", ], "checkstyle" : "org.graalvm.word", "javaCompliance" : "11+", diff --git a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest index 1e1ff9394f21..e612ff3293ec 100644 --- a/sdk/src/org.graalvm.nativeimage/snapshot.sigtest +++ b/sdk/src/org.graalvm.nativeimage/snapshot.sigtest @@ -441,9 +441,9 @@ supr java.lang.Object CLSS public final org.graalvm.nativeimage.RuntimeOptions innr public final static !enum OptionClass meth public static <%0 extends java.lang.Object> {%%0} get(java.lang.String) -meth public static <%0 extends java.lang.Object> {%%0} getOptions() +meth public static org.graalvm.options.OptionDescriptors getOptions() anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="23.0") -meth public static <%0 extends java.lang.Object> {%%0} getOptions(java.util.EnumSet) +meth public static org.graalvm.options.OptionDescriptors getOptions(java.util.EnumSet) anno 0 java.lang.Deprecated(boolean forRemoval=true, java.lang.String since="23.0") meth public static void set(java.lang.String,java.lang.Object) supr java.lang.Object diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java index 8eb0e747e88e..27bce26ce1b3 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java @@ -43,6 +43,7 @@ import java.util.EnumSet; import org.graalvm.nativeimage.impl.RuntimeOptionsSupport; +import org.graalvm.options.OptionDescriptors; /** * Used for manipulating options at run time. @@ -89,7 +90,7 @@ public enum OptionClass { * @since 19.0 */ @Deprecated(since = "23.0", forRemoval = true) - public static T getOptions(EnumSet classes) { + public static OptionDescriptors getOptions(EnumSet classes) { return ImageSingletons.lookup(RuntimeOptionsSupport.class).getOptions(classes); } @@ -99,7 +100,7 @@ public static T getOptions(EnumSet classes) { * @since 19.0 */ @Deprecated(since = "23.0", forRemoval = true) - public static T getOptions() { + public static OptionDescriptors getOptions() { return getOptions(EnumSet.allOf(OptionClass.class)); } diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java index 2eb20dc23ece..0a14bf955173 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/impl/RuntimeOptionsSupport.java @@ -43,11 +43,13 @@ import java.util.EnumSet; import org.graalvm.nativeimage.RuntimeOptions.OptionClass; +import org.graalvm.options.OptionDescriptors; public interface RuntimeOptionsSupport { void set(String optionName, Object value); T get(String optionName); - T getOptions(EnumSet classes); + @SuppressWarnings("deprecation") + OptionDescriptors getOptions(EnumSet classes); } diff --git a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java index f7c782e69fe4..fd52c18cba7f 100644 --- a/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java +++ b/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/option/RuntimeOptionValues.java @@ -115,7 +115,7 @@ public T get(String optionName) { @SuppressWarnings({"unchecked", "deprecation"}) @Override - public T getOptions(EnumSet classes) { + public OptionDescriptors getOptions(EnumSet classes) { Iterable descriptors = RuntimeOptionParser.singleton().getDescriptors(); List graalvmDescriptors = new ArrayList<>(); for (OptionDescriptor descriptor : descriptors) { @@ -132,7 +132,7 @@ public T getOptions(EnumSet classes) { graalvmDescriptors.add(builder.build()); } } - return (T) OptionDescriptors.create(graalvmDescriptors); + return OptionDescriptors.create(graalvmDescriptors); } @SuppressWarnings("deprecation") From 8af50ddb0e088ed4db257eb5f4edd8035e299d83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20W=C3=B6gerer?= Date: Mon, 30 Jan 2023 15:39:21 +0100 Subject: [PATCH 10/10] Add to changelog and mention deprecation in JavaDoc --- sdk/CHANGELOG.md | 1 + .../src/org/graalvm/nativeimage/RuntimeOptions.java | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/sdk/CHANGELOG.md b/sdk/CHANGELOG.md index 5a7504deb2f4..722557df282e 100644 --- a/sdk/CHANGELOG.md +++ b/sdk/CHANGELOG.md @@ -11,6 +11,7 @@ This changelog summarizes major changes between GraalVM SDK versions. The main f * Added automatic copying of language resources for embedding Truffle languages in native image. Documentation available [here](https://www.graalvm.org/reference-manual/embed-languages/#build-native-executables-from-polyglot-applications). * (GR-41716) Added `HostAccess.Builder.allowMutableTargetMappings(HostAccess.MutableTargetMapping[])` to explicitly enable type coercion from guest objects to mutable Java host objects such as `java.util.Map` or `java.util.List`. * (GR-42876) Added [FileSystem#newFileSystem](https://www.graalvm.org/sdk/javadoc/org/graalvm/polyglot/io/FileSystem.html#newFileSystem-java.nio.file.FileSystem-) creating a polyglot FileSystem for given Java NIO FileSystem. +* (GR-43820) Deprecated `org.graalvm.nativeimage.RuntimeOptions#getOptions` methods and `org.graalvm.nativeimage.RuntimeOptions.OptionClass` enum. These elements were mistakenly made API and will be removed in a future version. If your codebase depends on any of these please let us know. ## Version 22.3.0 * (GR-39852) Native Image API: Added FieldValueTransformer API diff --git a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java index 27bce26ce1b3..4b20f6926c70 100644 --- a/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java +++ b/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/RuntimeOptions.java @@ -75,6 +75,9 @@ public static T get(String optionName) { /** * Classes of options that can be queried through {@code getOptions(EnumSet)}. + * + * @deprecated This class was mistakenly made API and will be removed in a future version. If + * your codebase depends on it, let us know by creating an issue on GitHub. * * @since 19.0 */ @@ -87,6 +90,10 @@ public enum OptionClass { /** * Returns available run time options for the selected {@linkplain OptionClass option classes}. * + * @deprecated This method was mistakenly made an API method and will be removed in a future + * version. If your codebase depends on it, let us know by creating an issue on + * GitHub. + * * @since 19.0 */ @Deprecated(since = "23.0", forRemoval = true) @@ -97,6 +104,10 @@ public static OptionDescriptors getOptions(EnumSet classes) { /** * Returns all available run time options. * + * @deprecated This method was mistakenly made an API method and will be removed in a future + * version. If your codebase depends on it, let us know by creating an issue on + * GitHub. + * * @since 19.0 */ @Deprecated(since = "23.0", forRemoval = true)