GitHub user chaokunyang added a comment to the discussion: (Java/Scala) How do
I specify deserialize behavior on schema change?
This seems to be a general feature request, would you like to contribute to it.
The main changes would be
`org.apache.fury.builder.MetaSharedCodecBuilder#setFieldValue`:
```java
@Override
protected Expression setFieldValue(Expression bean, Descriptor descriptor,
Expression value) {
if (descriptor.getField() == null) {
// Field doesn't exist in current class, skip set this field value.
// Note that the field value shouldn't be an inlined value, otherwise
field value read may
// be ignored.
// Add an ignored call here to make expression type to void.
return new Expression.StaticInvoke(ExceptionUtils.class, "ignore", value);
}
return super.setFieldValue(bean, descriptor, value);
}
```
And `org.apache.fury.serializer.MetaSharedSerializer#read`:
```java
if (fieldAccessor != null) {
short classId = fieldInfo.classId;
if (ObjectSerializer.readPrimitiveFieldValueFailed(
fury, buffer, obj, fieldAccessor, classId)
&& ObjectSerializer.readBasicObjectFieldValueFailed(
fury, buffer, obj, fieldAccessor, classId)) {
assert fieldInfo.classInfo != null;
Object fieldValue =
ObjectSerializer.readFinalObjectFieldValue(
fury, refResolver, classResolver, fieldInfo, isFinal, buffer);
fieldAccessor.putObject(obj, fieldValue);
}
} else {
if (skipPrimitiveFieldValueFailed(fury, fieldInfo.classId, buffer)) {
if (fieldInfo.classInfo == null) {
// TODO(chaokunyang) support registered serializer in peer with ref
tracking disabled.
fury.readRef(buffer, classInfoHolder);
} else {
ObjectSerializer.readFinalObjectFieldValue(
fury, refResolver, classResolver, fieldInfo, isFinal, buffer);
}
}
}
```
GitHub link:
https://github.com/apache/fury/discussions/1848#discussioncomment-10715752
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]