Skip to content

Commit 23d27f1

Browse files
committed
Allow specifying FieldMismatchCallback in Fury object
1 parent 57705e9 commit 23d27f1

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

java/fury-core/src/main/java/org/apache/fury/Fury.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import org.apache.fury.serializer.ArraySerializers;
5757
import org.apache.fury.serializer.BufferCallback;
5858
import org.apache.fury.serializer.BufferObject;
59+
import org.apache.fury.serializer.FieldMismatchCallback;
5960
import org.apache.fury.serializer.OpaqueObjects;
6061
import org.apache.fury.serializer.PrimitiveSerializers.LongSerializer;
6162
import org.apache.fury.serializer.Serializer;
@@ -1584,6 +1585,10 @@ public boolean isBasicTypesRefIgnored() {
15841585
return config.isBasicTypesRefIgnored();
15851586
}
15861587

1588+
public FieldMismatchCallback getFieldMismatchCallback() {
1589+
return config.getFieldMismatchCallback();
1590+
}
1591+
15871592
public boolean checkClassVersion() {
15881593
return config.checkClassVersion();
15891594
}

java/fury-core/src/main/java/org/apache/fury/config/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.concurrent.atomic.AtomicInteger;
2727
import org.apache.fury.Fury;
2828
import org.apache.fury.meta.MetaCompressor;
29+
import org.apache.fury.serializer.FieldMismatchCallback;
2930
import org.apache.fury.serializer.Serializer;
3031
import org.apache.fury.serializer.TimeSerializers;
3132
import org.apache.fury.util.Preconditions;
@@ -59,6 +60,7 @@ public class Config implements Serializable {
5960
private final boolean scalaOptimizationEnabled;
6061
private transient int configHash;
6162
private final boolean deserializeNonexistentEnumValueAsNull;
63+
private final FieldMismatchCallback fieldMismatchCallback;
6264

6365
public Config(FuryBuilder builder) {
6466
language = builder.language;
@@ -91,6 +93,7 @@ public Config(FuryBuilder builder) {
9193
asyncCompilationEnabled = builder.asyncCompilationEnabled;
9294
scalaOptimizationEnabled = builder.scalaOptimizationEnabled;
9395
deserializeNonexistentEnumValueAsNull = builder.deserializeNonexistentEnumValueAsNull;
96+
fieldMismatchCallback = builder.fieldMismatchCallback;
9497
}
9598

9699
public Language getLanguage() {
@@ -248,6 +251,10 @@ public boolean isScalaOptimizationEnabled() {
248251
return scalaOptimizationEnabled;
249252
}
250253

254+
public FieldMismatchCallback getFieldMismatchCallback() {
255+
return fieldMismatchCallback;
256+
}
257+
251258
@Override
252259
public boolean equals(Object o) {
253260
if (this == o) {

java/fury-core/src/main/java/org/apache/fury/config/FuryBuilder.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.apache.fury.meta.MetaCompressor;
3232
import org.apache.fury.pool.ThreadPoolFury;
3333
import org.apache.fury.resolver.ClassResolver;
34+
import org.apache.fury.serializer.FieldMismatchCallback;
3435
import org.apache.fury.serializer.JavaSerializer;
3536
import org.apache.fury.serializer.ObjectStreamSerializer;
3637
import org.apache.fury.serializer.Serializer;
@@ -81,6 +82,14 @@ public final class FuryBuilder {
8182
boolean suppressClassRegistrationWarnings = true;
8283
boolean deserializeNonexistentEnumValueAsNull = false;
8384
MetaCompressor metaCompressor = new DeflaterMetaCompressor();
85+
FieldMismatchCallback fieldMismatchCallback =
86+
new FieldMismatchCallback() {
87+
@Override
88+
public FieldMismatchCallback.FieldAdjustment onMismatch(
89+
Class<?> modifiedClass, String deserializedTypeName, String deserializedFieldName) {
90+
return null;
91+
}
92+
};
8493

8594
public FuryBuilder() {}
8695

@@ -318,6 +327,11 @@ public FuryBuilder withScalaOptimizationEnabled(boolean enableScalaOptimization)
318327
return this;
319328
}
320329

330+
public FuryBuilder withFieldMismatchCallback(FieldMismatchCallback callback) {
331+
this.fieldMismatchCallback = callback;
332+
return this;
333+
}
334+
321335
private void finish() {
322336
if (classLoader == null) {
323337
classLoader = Thread.currentThread().getContextClassLoader();

0 commit comments

Comments
 (0)