Skip to content

Commit 9c3da40

Browse files
committed
Remove most dependencies between com.oracle.svm.configure and com.oracle.svm.core
1 parent 25391bb commit 9c3da40

File tree

88 files changed

+603
-439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+603
-439
lines changed

substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/NativeImageAgent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@
7474
import com.oracle.svm.agent.tracing.TraceFileWriter;
7575
import com.oracle.svm.agent.tracing.core.Tracer;
7676
import com.oracle.svm.agent.tracing.core.TracingResultWriter;
77+
import com.oracle.svm.configure.ConfigurationFile;
78+
import com.oracle.svm.configure.PredefinedClassesConfigurationParser;
7779
import com.oracle.svm.configure.config.ConfigurationFileCollection;
7880
import com.oracle.svm.configure.config.ConfigurationSet;
7981
import com.oracle.svm.configure.config.conditional.ConditionalConfigurationPredicate;
@@ -82,8 +84,6 @@
8284
import com.oracle.svm.configure.filters.HierarchyFilterNode;
8385
import com.oracle.svm.configure.trace.AccessAdvisor;
8486
import com.oracle.svm.configure.trace.TraceProcessor;
85-
import com.oracle.svm.core.configure.ConfigurationFile;
86-
import com.oracle.svm.core.configure.PredefinedClassesConfigurationParser;
8787
import com.oracle.svm.core.jni.headers.JNIEnvironment;
8888
import com.oracle.svm.core.jni.headers.JNIJavaVM;
8989
import com.oracle.svm.core.jni.headers.JNIObjectHandle;

substratevm/src/com.oracle.svm.agent/src/com/oracle/svm/agent/conditionalconfig/ConditionalConfigurationPartialRunWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import com.oracle.svm.agent.configwithorigins.ConfigurationWithOriginsTracer;
3333
import com.oracle.svm.agent.tracing.core.TracingResultWriter;
3434
import com.oracle.svm.configure.config.conditional.PartialConfigurationWithOrigins;
35-
import com.oracle.svm.core.configure.ConfigurationFile;
35+
import com.oracle.svm.configure.ConfigurationFile;
3636

3737
import jdk.graal.compiler.util.json.JsonWriter;
3838

substratevm/src/com.oracle.svm.configure.test/src/com/oracle/svm/configure/test/conditionalconfig/ConfigurationVerifier.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@
3535
import org.junit.Test;
3636

3737
import com.oracle.svm.configure.ConfigurationBase;
38+
import com.oracle.svm.configure.ConfigurationFile;
3839
import com.oracle.svm.configure.config.ConfigurationFileCollection;
3940
import com.oracle.svm.configure.config.ConfigurationSet;
4041
import com.oracle.svm.configure.test.AddExports;
41-
import com.oracle.svm.core.configure.ConfigurationFile;
42-
import com.oracle.svm.core.util.VMError;
4342

4443
import jdk.graal.compiler.util.json.JsonWriter;
4544

@@ -105,7 +104,7 @@ private static ConfigurationSet loadExpectedConfig() throws Exception {
105104
URL resourceURL = ConfigurationVerifier.class.getResource(resourceName);
106105
return resourceURL == null ? null : resourceURL.toURI();
107106
} catch (Exception e) {
108-
throw VMError.shouldNotReachHere("Unexpected error while locating the configuration files.", e);
107+
throw new AssertionError("Unexpected error while locating the configuration files.", e);
109108
}
110109
});
111110
return configurationFileCollection.loadConfigurationSet(e -> e, null, null);

substratevm/src/com.oracle.svm.configure.test/src/com/oracle/svm/configure/test/config/OmitPreviousConfigTests.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import org.junit.Assert;
4040
import org.junit.Test;
4141

42+
import com.oracle.svm.configure.ConfigurationTypeDescriptor;
43+
import com.oracle.svm.configure.NamedConfigurationTypeDescriptor;
4244
import com.oracle.svm.configure.config.ConfigurationFileCollection;
4345
import com.oracle.svm.configure.config.ConfigurationMemberInfo;
4446
import com.oracle.svm.configure.config.ConfigurationMemberInfo.ConfigurationMemberAccessibility;
@@ -53,9 +55,6 @@
5355
import com.oracle.svm.configure.config.SerializationConfiguration;
5456
import com.oracle.svm.configure.config.TypeConfiguration;
5557
import com.oracle.svm.configure.test.AddExports;
56-
import com.oracle.svm.core.configure.ConfigurationTypeDescriptor;
57-
import com.oracle.svm.core.configure.NamedConfigurationTypeDescriptor;
58-
import com.oracle.svm.core.util.VMError;
5958

6059
@AddExports({"org.graalvm.nativeimage/org.graalvm.nativeimage.impl", "jdk.graal.compiler/jdk.graal.compiler.util", "jdk.graal.compiler/jdk.graal.compiler.util.json"})
6160
public class OmitPreviousConfigTests {
@@ -72,7 +71,7 @@ private static ConfigurationSet loadTraceProcessorFromResourceDirectory(String r
7271
URL resourceURL = OmitPreviousConfigTests.class.getResource(resourceName);
7372
return (resourceURL != null) ? resourceURL.toURI() : null;
7473
} catch (Exception e) {
75-
throw VMError.shouldNotReachHere("Unexpected error while locating the configuration files.", e);
74+
throw new AssertionError("Unexpected error while locating the configuration files.", e);
7675
}
7776
});
7877

@@ -88,7 +87,7 @@ private static ConfigurationSet loadTraceProcessorFromResourceDirectory(String r
8887
}
8988
return configurationFileCollection.loadConfigurationSet(handler, null, shouldExcludeClassesWithHash);
9089
} catch (Exception e) {
91-
throw VMError.shouldNotReachHere("Unexpected error while loading the configuration files.", e);
90+
throw new AssertionError("Unexpected error while loading the configuration files.", e);
9291
}
9392
}
9493

substratevm/src/com.oracle.svm.configure.test/src/com/oracle/svm/configure/test/config/ResourceConfigurationTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,10 @@
3838
import org.junit.Assert;
3939
import org.junit.Test;
4040

41+
import com.oracle.svm.configure.ResourceConfigurationParser;
42+
import com.oracle.svm.configure.ResourcesRegistry;
4143
import com.oracle.svm.configure.config.ResourceConfiguration;
42-
import com.oracle.svm.core.configure.ConfigurationConditionResolver;
43-
import com.oracle.svm.core.configure.ResourceConfigurationParser;
44-
import com.oracle.svm.core.configure.ResourcesRegistry;
45-
import com.oracle.svm.core.util.VMError;
44+
import com.oracle.svm.configure.config.conditional.ConfigurationConditionResolver;
4645

4746
import jdk.graal.compiler.util.json.JsonWriter;
4847

@@ -99,12 +98,12 @@ public void addResources(UnresolvedConfigurationCondition condition, String patt
9998

10099
@Override
101100
public void addGlob(UnresolvedConfigurationCondition condition, String module, String glob, Object origin) {
102-
throw VMError.shouldNotReachHere("Unused function.");
101+
throw new AssertionError("Unused function.");
103102
}
104103

105104
@Override
106105
public void addResourceEntry(Module module, String resourcePath, Object origin) {
107-
throw VMError.shouldNotReachHere("Unused function.");
106+
throw new AssertionError("Unused function.");
108107
}
109108

110109
@Override
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* Copyright (c) 2025, 2025, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* This code is free software; you can redistribute it and/or modify it
6+
* under the terms of the GNU General Public License version 2 only, as
7+
* published by the Free Software Foundation. Oracle designates this
8+
* particular file as subject to the "Classpath" exception as provided
9+
* by Oracle in the LICENSE file that accompanied this code.
10+
*
11+
* This code is distributed in the hope that it will be useful, but WITHOUT
12+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+
* version 2 for more details (a copy is included in the LICENSE file that
15+
* accompanied this code).
16+
*
17+
* You should have received a copy of the GNU General Public License version
18+
* 2 along with this work; if not, write to the Free Software Foundation,
19+
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+
*
21+
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+
* or visit www.oracle.com if you need additional information or have any
23+
* questions.
24+
*/
25+
package com.oracle.svm.configure;
26+
27+
import static org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition.TYPE_REACHABLE_KEY;
28+
import static org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition.TYPE_REACHED_KEY;
29+
30+
import java.util.EnumSet;
31+
32+
import org.graalvm.collections.EconomicMap;
33+
import org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition;
34+
35+
public abstract class ConditionalConfigurationParser extends ConfigurationParser {
36+
public static final String CONDITIONAL_KEY = "condition";
37+
38+
protected ConditionalConfigurationParser(EnumSet<ConfigurationParserOption> parserOptions) {
39+
super(parserOptions);
40+
}
41+
42+
@Override
43+
protected EnumSet<ConfigurationParserOption> supportedOptions() {
44+
EnumSet<ConfigurationParserOption> base = super.supportedOptions();
45+
base.add(ConfigurationParserOption.TREAT_ALL_TYPE_REACHABLE_CONDITIONS_AS_TYPE_REACHED);
46+
return base;
47+
}
48+
49+
protected UnresolvedConfigurationCondition parseCondition(EconomicMap<String, Object> data, boolean runtimeCondition) {
50+
Object conditionData = data.get(CONDITIONAL_KEY);
51+
if (conditionData != null) {
52+
EconomicMap<String, Object> conditionObject = asMap(conditionData, "Attribute '" + CONDITIONAL_KEY + "' must be an object");
53+
if (conditionObject.containsKey(TYPE_REACHABLE_KEY) && conditionObject.containsKey(TYPE_REACHED_KEY)) {
54+
failOnSchemaError("condition can not have both '" + TYPE_REACHED_KEY + "' and '" + TYPE_REACHABLE_KEY + "' set.");
55+
}
56+
57+
if (conditionObject.containsKey(TYPE_REACHED_KEY)) {
58+
if (!runtimeCondition) {
59+
failOnSchemaError("'" + TYPE_REACHED_KEY + "' condition cannot be used in older schemas. Please migrate the file to the latest schema.");
60+
}
61+
Object object = conditionObject.get(TYPE_REACHED_KEY);
62+
var condition = parseTypeContents(object);
63+
if (condition.isPresent()) {
64+
String className = ((NamedConfigurationTypeDescriptor) condition.get()).name();
65+
return UnresolvedConfigurationCondition.create(className);
66+
}
67+
} else if (conditionObject.containsKey(TYPE_REACHABLE_KEY)) {
68+
if (runtimeCondition && !checkOption(ConfigurationParserOption.TREAT_ALL_TYPE_REACHABLE_CONDITIONS_AS_TYPE_REACHED)) {
69+
failOnSchemaError("'" + TYPE_REACHABLE_KEY + "' condition can not be used with the latest schema. Please use '" + TYPE_REACHED_KEY + "'.");
70+
}
71+
Object object = conditionObject.get(TYPE_REACHABLE_KEY);
72+
var condition = parseTypeContents(object);
73+
if (condition.isPresent()) {
74+
String className = ((NamedConfigurationTypeDescriptor) condition.get()).name();
75+
return UnresolvedConfigurationCondition.create(className, checkOption(ConfigurationParserOption.TREAT_ALL_TYPE_REACHABLE_CONDITIONS_AS_TYPE_REACHED));
76+
}
77+
}
78+
}
79+
return UnresolvedConfigurationCondition.alwaysTrue();
80+
}
81+
82+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* questions.
2424
*/
2525

26-
package com.oracle.svm.core.configure;
26+
package com.oracle.svm.configure;
2727

2828
import java.util.Comparator;
2929
import java.util.function.Function;

substratevm/src/com.oracle.svm.configure/src/com/oracle/svm/configure/ConfigurationBase.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929

3030
import org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition;
3131

32-
import com.oracle.svm.core.configure.ConfigurationParser;
33-
3432
import jdk.graal.compiler.util.json.JsonPrintable;
3533
import jdk.graal.compiler.util.json.JsonWriter;
3634

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.core.configure;
25+
package com.oracle.svm.configure;
2626

27-
import static com.oracle.svm.core.configure.ConfigurationParser.JNI_KEY;
28-
import static com.oracle.svm.core.configure.ConfigurationParser.REFLECTION_KEY;
29-
import static com.oracle.svm.core.configure.ConfigurationParser.RESOURCES_KEY;
30-
import static com.oracle.svm.core.configure.ConfigurationParser.SERIALIZATION_KEY;
27+
import static com.oracle.svm.configure.ConfigurationParser.JNI_KEY;
28+
import static com.oracle.svm.configure.ConfigurationParser.REFLECTION_KEY;
29+
import static com.oracle.svm.configure.ConfigurationParser.RESOURCES_KEY;
30+
import static com.oracle.svm.configure.ConfigurationParser.SERIALIZATION_KEY;
3131

3232
import java.util.Arrays;
3333

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@
2222
* or visit www.oracle.com if you need additional information or have any
2323
* questions.
2424
*/
25-
package com.oracle.svm.core.configure;
25+
package com.oracle.svm.configure;
2626

27-
import static com.oracle.svm.core.configure.ConfigurationFiles.Options.TreatAllTypeReachableConditionsAsTypeReached;
2827
import static org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition.TYPE_REACHABLE_KEY;
2928
import static org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition.TYPE_REACHED_KEY;
3029

@@ -46,11 +45,8 @@
4645
import java.util.Set;
4746

4847
import org.graalvm.collections.EconomicMap;
49-
import org.graalvm.nativeimage.impl.UnresolvedConfigurationCondition;
48+
import org.graalvm.nativeimage.ImageInfo;
5049

51-
import com.oracle.svm.core.SubstrateUtil;
52-
import com.oracle.svm.core.jdk.JavaNetSubstitutions;
53-
import com.oracle.svm.core.util.VMError;
5450
import com.oracle.svm.util.LogUtils;
5551

5652
import jdk.graal.compiler.util.json.JsonParser;
@@ -60,10 +56,10 @@ public abstract class ConfigurationParser {
6056
public static InputStream openStream(URI uri) throws IOException {
6157
URL url = uri.toURL();
6258
if ("file".equals(url.getProtocol()) || "jar".equalsIgnoreCase(url.getProtocol()) ||
63-
(!SubstrateUtil.HOSTED && JavaNetSubstitutions.RESOURCE_PROTOCOL.equals(url.getProtocol()))) {
59+
(ImageInfo.inImageRuntimeCode() && "resource".equals(url.getProtocol()))) {
6460
return url.openStream();
6561
}
66-
throw VMError.shouldNotReachHere("For security reasons, reading configurations is not supported from URIs with protocol: " + url.getProtocol());
62+
throw new IllegalArgumentException("For security reasons, reading configurations is not supported from URIs with protocol: " + url.getProtocol());
6763
}
6864

6965
public static final String CONDITIONAL_KEY = "condition";
@@ -244,14 +240,14 @@ protected UnresolvedConfigurationCondition parseCondition(EconomicMap<String, Ob
244240
return UnresolvedConfigurationCondition.create(className);
245241
}
246242
} else if (conditionObject.containsKey(TYPE_REACHABLE_KEY)) {
247-
if (runtimeCondition && !TreatAllTypeReachableConditionsAsTypeReached.getValue()) {
243+
if (runtimeCondition && !Options.TreatAllTypeReachableConditionsAsTypeReached.getValue()) {
248244
failOnSchemaError("'" + TYPE_REACHABLE_KEY + "' condition can not be used with the latest schema. Please use '" + TYPE_REACHED_KEY + "'.");
249245
}
250246
Object object = conditionObject.get(TYPE_REACHABLE_KEY);
251247
var condition = parseTypeContents(object);
252248
if (condition.isPresent()) {
253249
String className = ((NamedConfigurationTypeDescriptor) condition.get()).name();
254-
return UnresolvedConfigurationCondition.create(className, TreatAllTypeReachableConditionsAsTypeReached.getValue());
250+
return UnresolvedConfigurationCondition.create(className, Options.TreatAllTypeReachableConditionsAsTypeReached.getValue());
255251
}
256252
}
257253
}

0 commit comments

Comments
 (0)