Skip to content

Commit a12b56c

Browse files
committed
Serialization feature support
1 parent 52a0320 commit a12b56c

File tree

14 files changed

+415
-20
lines changed

14 files changed

+415
-20
lines changed

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public final class ReflectiveClassBuildItem extends MultiBuildItem {
1919
private final boolean constructors;
2020
private final boolean finalFieldsWritable;
2121
private final boolean weak;
22+
private final boolean serialization;
2223

2324
public ReflectiveClassBuildItem(boolean methods, boolean fields, Class<?>... className) {
2425
this(true, methods, fields, className);
@@ -30,6 +31,11 @@ public ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean f
3031

3132
private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean fields, boolean finalFieldsWritable,
3233
boolean weak, Class<?>... className) {
34+
this(constructors, methods, fields, false, false, false, className);
35+
}
36+
37+
private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean fields, boolean finalFieldsWritable,
38+
boolean weak, boolean serialization, Class<?>... className) {
3339
List<String> names = new ArrayList<>();
3440
for (Class<?> i : className) {
3541
if (i == null) {
@@ -43,6 +49,7 @@ private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean
4349
this.constructors = constructors;
4450
this.finalFieldsWritable = finalFieldsWritable;
4551
this.weak = weak;
52+
this.serialization = serialization;
4653
}
4754

4855
public ReflectiveClassBuildItem(boolean methods, boolean fields, String... className) {
@@ -53,12 +60,26 @@ public ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean f
5360
this(constructors, methods, fields, false, false, className);
5461
}
5562

63+
public ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean fields, boolean serialization,
64+
String... className) {
65+
this(constructors, methods, fields, false, false, serialization, className);
66+
}
67+
5668
public static ReflectiveClassBuildItem weakClass(String... className) {
5769
return new ReflectiveClassBuildItem(true, true, true, false, true, className);
5870
}
5971

72+
public static ReflectiveClassBuildItem serializationClass(String... className) {
73+
return new ReflectiveClassBuildItem(false, false, false, false, false, true, className);
74+
}
75+
6076
private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean fields, boolean finalFieldsWritable,
6177
boolean weak, String... className) {
78+
this(constructors, methods, fields, finalFieldsWritable, weak, false, className);
79+
}
80+
81+
private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean fields, boolean finalFieldsWritable,
82+
boolean weak, boolean serialization, String... className) {
6283
for (String i : className) {
6384
if (i == null) {
6485
throw new NullPointerException();
@@ -70,6 +91,7 @@ private ReflectiveClassBuildItem(boolean constructors, boolean methods, boolean
7091
this.constructors = constructors;
7192
this.finalFieldsWritable = finalFieldsWritable;
7293
this.weak = weak;
94+
this.serialization = serialization;
7395
}
7496

7597
public List<String> getClassNames() {
@@ -96,6 +118,10 @@ public boolean isWeak() {
96118
return weak;
97119
}
98120

121+
public boolean isSerialization() {
122+
return serialization;
123+
}
124+
99125
public static Builder builder(Class<?>... className) {
100126
String[] classNameStrings = stream(className)
101127
.map(aClass -> {
@@ -122,6 +148,7 @@ public static class Builder {
122148
private boolean fields;
123149
private boolean finalFieldsWritable;
124150
private boolean weak;
151+
private boolean serialization;
125152

126153
private Builder() {
127154
}
@@ -156,6 +183,11 @@ public Builder weak(boolean weak) {
156183
return this;
157184
}
158185

186+
public Builder serialization(boolean serialize) {
187+
this.serialization = serialization;
188+
return this;
189+
}
190+
159191
public ReflectiveClassBuildItem build() {
160192
return new ReflectiveClassBuildItem(constructors, methods, fields, finalFieldsWritable, weak, className);
161193
}

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public final class ReflectiveHierarchyBuildItem extends MultiBuildItem {
4141
private final Predicate<FieldInfo> ignoreFieldPredicate;
4242
private final Predicate<MethodInfo> ignoreMethodPredicate;
4343
private final String source;
44+
private final boolean serialization;
4445

4546
/**
4647
* @deprecated Use the Builder instead.
@@ -104,17 +105,19 @@ public ReflectiveHierarchyBuildItem(Type type, Predicate<DotName> ignoreTypePred
104105
@Deprecated
105106
public ReflectiveHierarchyBuildItem(Type type, IndexView index, Predicate<DotName> ignoreTypePredicate, String source) {
106107
this(type, index, ignoreTypePredicate, DefaultIgnoreFieldPredicate.INSTANCE, DefaultIgnoreMethodPredicate.INSTANCE,
107-
source);
108+
source, false);
108109
}
109110

110111
private ReflectiveHierarchyBuildItem(Type type, IndexView index, Predicate<DotName> ignoreTypePredicate,
111-
Predicate<FieldInfo> ignoreFieldPredicate, Predicate<MethodInfo> ignoreMethodPredicate, String source) {
112+
Predicate<FieldInfo> ignoreFieldPredicate, Predicate<MethodInfo> ignoreMethodPredicate, String source,
113+
boolean serialization) {
112114
this.type = type;
113115
this.index = index;
114116
this.ignoreTypePredicate = ignoreTypePredicate;
115117
this.ignoreFieldPredicate = ignoreFieldPredicate;
116118
this.ignoreMethodPredicate = ignoreMethodPredicate;
117119
this.source = source;
120+
this.serialization = serialization;
118121
}
119122

120123
public Type getType() {
@@ -141,6 +144,10 @@ public boolean hasSource() {
141144
return source != null;
142145
}
143146

147+
public boolean isSerialization() {
148+
return serialization;
149+
}
150+
144151
public String getSource() {
145152
return source;
146153
}
@@ -153,6 +160,7 @@ public static class Builder {
153160
private Predicate<FieldInfo> ignoreFieldPredicate = DefaultIgnoreFieldPredicate.INSTANCE;
154161
private Predicate<MethodInfo> ignoreMethodPredicate = DefaultIgnoreMethodPredicate.INSTANCE;
155162
private String source = UNKNOWN_SOURCE;
163+
private boolean serialization;
156164

157165
public Builder type(Type type) {
158166
this.type = type;
@@ -184,9 +192,14 @@ public Builder source(String source) {
184192
return this;
185193
}
186194

195+
public Builder serialization(boolean serialization) {
196+
this.serialization = serialization;
197+
return this;
198+
}
199+
187200
public ReflectiveHierarchyBuildItem build() {
188201
return new ReflectiveHierarchyBuildItem(type, index, ignoreTypePredicate, ignoreFieldPredicate,
189-
ignoreMethodPredicate, source);
202+
ignoreMethodPredicate, source, serialization);
190203
}
191204
}
192205

0 commit comments

Comments
 (0)