Skip to content

Commit c680561

Browse files
committed
Deprecate re-initialization methods in NativeImageConfigBuildItem
Starting with Mandrel/GraalVM 23.1 for JDK 21 runtime initialization and re-initialization are functionally the same.
1 parent ba3158e commit c680561

File tree

6 files changed

+30
-29
lines changed

6 files changed

+30
-29
lines changed

core/deployment/src/main/java/io/quarkus/deployment/builditem/nativeimage/NativeImageConfigBuildItem.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,23 @@
1717
* during the build process.
1818
* It collects information such as:
1919
* <ul>
20-
* <li>Classes to be initialized at runtime ({@link #runtimeInitializedClasses})</li>
21-
* <li>Classes to be re-initialized at runtime ({@link #runtimeReinitializedClasses})</li>
22-
* <li>Resource bundles to include ({@link #resourceBundles})</li>
23-
* <li>Dynamic proxy definitions ({@link #proxyDefinitions})</li>
24-
* <li>System properties to be set within the native image ({@link #nativeImageSystemProperties})</li>
20+
* <li>Classes to be (re-)initialized at runtime</li>
21+
* <li>Resource bundles to include</li>
22+
* <li>Dynamic proxy definitions</li>
23+
* <li>System properties to be set within the native image</li>
2524
* </ul>
2625
* The final native image configuration is assembled by combining all produced instances of this build item.
2726
* Use the {@link #builder()} method to construct instances.
2827
*/
2928
public final class NativeImageConfigBuildItem extends MultiBuildItem {
3029

3130
private final Set<String> runtimeInitializedClasses;
32-
private final Set<String> runtimeReinitializedClasses;
3331
private final Set<String> resourceBundles;
3432
private final Set<List<String>> proxyDefinitions;
3533
private final Map<String, String> nativeImageSystemProperties;
3634

3735
public NativeImageConfigBuildItem(Builder builder) {
3836
this.runtimeInitializedClasses = Collections.unmodifiableSet(builder.runtimeInitializedClasses);
39-
this.runtimeReinitializedClasses = Collections.unmodifiableSet(builder.runtimeReinitializedClasses);
4037
this.resourceBundles = Collections.unmodifiableSet(builder.resourceBundles);
4138
this.proxyDefinitions = Collections.unmodifiableSet(builder.proxyDefinitions);
4239
this.nativeImageSystemProperties = Collections.unmodifiableMap(builder.nativeImageSystemProperties);
@@ -46,8 +43,13 @@ public Iterable<String> getRuntimeInitializedClasses() {
4643
return runtimeInitializedClasses;
4744
}
4845

46+
/**
47+
* @deprecated Starting with Mandrel/GraalVM 23.1 for JDK 21 this is functionally the same with
48+
* {@link #getRuntimeInitializedClasses()}.
49+
*/
50+
@Deprecated(since = "3.30", forRemoval = true)
4951
public Iterable<String> getRuntimeReinitializedClasses() {
50-
return runtimeReinitializedClasses;
52+
return getRuntimeInitializedClasses();
5153
}
5254

5355
public Iterable<String> getResourceBundles() {
@@ -69,7 +71,6 @@ public static Builder builder() {
6971
public static class Builder {
7072

7173
final Set<String> runtimeInitializedClasses = new HashSet<>();
72-
final Set<String> runtimeReinitializedClasses = new HashSet<>();
7374
final Set<String> resourceBundles = new HashSet<>();
7475
final Set<List<String>> proxyDefinitions = new HashSet<>();
7576
final Map<String, String> nativeImageSystemProperties = new HashMap<>();
@@ -79,9 +80,13 @@ public Builder addRuntimeInitializedClass(String className) {
7980
return this;
8081
}
8182

83+
/**
84+
* @deprecated Starting with Mandrel/GraalVM 23.1 for JDK 21 this is functionally the same with
85+
* {@link Builder#addRuntimeInitializedClass(String)}.
86+
*/
87+
@Deprecated(since = "3.30", forRemoval = true)
8288
public Builder addRuntimeReinitializedClass(String className) {
83-
runtimeReinitializedClasses.add(className);
84-
return this;
89+
return addRuntimeInitializedClass(className);
8590
}
8691

8792
public Builder addResourceBundle(String className) {

core/deployment/src/main/java/io/quarkus/deployment/steps/NativeImageConfigBuildStep.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,13 @@ void build(NativeConfig nativeConfig,
4747
BuildProducer<NativeImageProxyDefinitionBuildItem> proxy,
4848
BuildProducer<NativeImageResourceBundleBuildItem> resourceBundle,
4949
BuildProducer<RuntimeInitializedClassBuildItem> runtimeInit,
50-
BuildProducer<RuntimeReinitializedClassBuildItem> runtimeReinit,
5150
BuildProducer<NativeImageSystemPropertyBuildItem> nativeImage,
5251
BuildProducer<SystemPropertyBuildItem> systemProperty,
5352
BuildProducer<JavaLibraryPathAdditionalPathBuildItem> javaLibraryPathAdditionalPath) {
5453
for (NativeImageConfigBuildItem nativeImageConfigBuildItem : nativeImageConfigBuildItems) {
5554
for (String i : nativeImageConfigBuildItem.getRuntimeInitializedClasses()) {
5655
runtimeInit.produce(new RuntimeInitializedClassBuildItem(i));
5756
}
58-
for (String i : nativeImageConfigBuildItem.getRuntimeReinitializedClasses()) {
59-
runtimeReinit.produce(new RuntimeReinitializedClassBuildItem(i));
60-
}
6157
for (Map.Entry<String, String> e : nativeImageConfigBuildItem.getNativeImageSystemProperties().entrySet()) {
6258
nativeImage.produce(new NativeImageSystemPropertyBuildItem(e.getKey(), e.getValue()));
6359
}

extensions/grpc-common/deployment/src/main/java/io/quarkus/grpc/common/deployment/GrpcCommonProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ NativeImageConfigBuildItem nativeImageConfiguration() {
9090
.addRuntimeInitializedClass("io.grpc.netty.NettyServerBuilder")
9191
.addRuntimeInitializedClass("io.grpc.netty.NettyChannelBuilder")
9292
.addRuntimeInitializedClass("io.grpc.internal.RetriableStream")
93-
.addRuntimeReinitializedClass("com.google.protobuf.UnsafeUtil");
93+
.addRuntimeInitializedClass("com.google.protobuf.UnsafeUtil");
9494
return builder.build();
9595
}
9696

extensions/kafka-client/deployment/src/main/java/io/quarkus/kafka/client/deployment/KafkaProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ NativeImageConfigBuildItem nativeImageConfiguration() {
508508
"org.apache.kafka.common.security.oauthbearer.internals.expiring.ExpiringCredentialRefreshingLogin")
509509
// VerificationKeyResolver is value on static map in OAuthBearerValidatorCallbackHandler
510510
.addRuntimeInitializedClass("org.apache.kafka.common.security.oauthbearer.OAuthBearerValidatorCallbackHandler")
511-
.addRuntimeReinitializedClass("org.apache.kafka.shaded.com.google.protobuf.UnsafeUtil");
511+
.addRuntimeInitializedClass("org.apache.kafka.shaded.com.google.protobuf.UnsafeUtil");
512512
return builder.build();
513513
}
514514

extensions/netty/deployment/src/main/java/io/quarkus/netty/deployment/NettyProcessor.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,26 +234,26 @@ NativeImageConfigBuildItem build(
234234
// - io.netty.bitMode
235235
// - sun.arch.data.model
236236
// - com.ibm.vm.bitmode
237-
builder.addRuntimeReinitializedClass("io.netty.util.internal.PlatformDependent")
237+
builder.addRuntimeInitializedClass("io.netty.util.internal.PlatformDependent")
238238
// Similarly for properties:
239239
// - io.netty.noUnsafe
240240
// - sun.misc.unsafe.memory.access
241241
// - io.netty.tryUnsafe
242242
// - org.jboss.netty.tryUnsafe
243243
// - io.netty.tryReflectionSetAccessible
244-
.addRuntimeReinitializedClass("io.netty.util.internal.PlatformDependent0")
244+
.addRuntimeInitializedClass("io.netty.util.internal.PlatformDependent0")
245245
// Runtime initialize classes to allow netty to use the field offset for testing if unsafe is available or not
246246
// See https://github.com/quarkusio/quarkus/issues/47903#issuecomment-2890924970
247-
.addRuntimeReinitializedClass("io.netty.util.AbstractReferenceCounted")
248-
.addRuntimeReinitializedClass("io.netty.buffer.AbstractReferenceCountedByteBuf");
247+
.addRuntimeInitializedClass("io.netty.util.AbstractReferenceCounted")
248+
.addRuntimeInitializedClass("io.netty.buffer.AbstractReferenceCountedByteBuf");
249249

250250
if (QuarkusClassLoader.isClassPresentAtRuntime("io.netty.buffer.UnpooledByteBufAllocator")) {
251251
// Runtime initialize due to the use of the io.netty.util.internal.PlatformDependent class
252-
builder.addRuntimeReinitializedClass("io.netty.buffer.UnpooledByteBufAllocator")
253-
.addRuntimeReinitializedClass("io.netty.buffer.Unpooled")
252+
builder.addRuntimeInitializedClass("io.netty.buffer.UnpooledByteBufAllocator")
253+
.addRuntimeInitializedClass("io.netty.buffer.Unpooled")
254254
// Runtime initialize due to dependency on io.netty.buffer.Unpooled
255-
.addRuntimeReinitializedClass("io.netty.handler.codec.http.HttpObjectAggregator")
256-
.addRuntimeReinitializedClass("io.netty.handler.codec.ReplayingDecoderByteBuf")
255+
.addRuntimeInitializedClass("io.netty.handler.codec.http.HttpObjectAggregator")
256+
.addRuntimeInitializedClass("io.netty.handler.codec.ReplayingDecoderByteBuf")
257257
// Runtime initialize to avoid embedding quite a few Strings in the image heap
258258
.addRuntimeInitializedClass("io.netty.buffer.ByteBufUtil$HexUtil")
259259
// Runtime initialize due to the use of the io.netty.util.internal.PlatformDependent class in the
@@ -284,7 +284,7 @@ NativeImageConfigBuildItem build(
284284
if (QuarkusClassLoader
285285
.isClassPresentAtRuntime("org.jboss.resteasy.reactive.client.impl.multipart.QuarkusMultipartFormUpload")) {
286286
// Runtime initialize due to dependency on io.netty.buffer.Unpooled
287-
builder.addRuntimeReinitializedClass(
287+
builder.addRuntimeInitializedClass(
288288
"org.jboss.resteasy.reactive.client.impl.multipart.QuarkusMultipartFormUpload");
289289
}
290290
}

extensions/vertx/deployment/src/main/java/io/quarkus/vertx/deployment/VertxProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,11 @@ void faultToleranceIntegration(Capabilities capabilities, BuildProducer<ServiceP
261261
NativeImageConfigBuildItem reinitializeClassesForNetty() {
262262
NativeImageConfigBuildItem.Builder builder = NativeImageConfigBuildItem.builder();
263263

264-
builder.addRuntimeReinitializedClass("io.vertx.core.http.impl.Http1xServerResponse")
265-
.addRuntimeReinitializedClass("io.vertx.core.parsetools.impl.RecordParserImpl");
264+
builder.addRuntimeInitializedClass("io.vertx.core.http.impl.Http1xServerResponse")
265+
.addRuntimeInitializedClass("io.vertx.core.parsetools.impl.RecordParserImpl");
266266

267267
if (QuarkusClassLoader.isClassPresentAtRuntime("io.vertx.ext.web.client.impl.MultipartFormUpload")) {
268-
builder.addRuntimeReinitializedClass("io.vertx.ext.web.client.impl.MultipartFormUpload");
268+
builder.addRuntimeInitializedClass("io.vertx.ext.web.client.impl.MultipartFormUpload");
269269
}
270270

271271
return builder.build();

0 commit comments

Comments
 (0)