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]

Reply via email to