return jsonReader.readObject(reader -> {
// local var is initialized as `OffsetDateTime`, due to the property is defined in parent
OffsetDateTime rfc1123NonRequired = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("rfc1123NonRequired".equals(fieldName)) {
DateTimeRfc1123 rfc1123NonRequiredHolder
= reader.getNullable(nonNullReader -> new DateTimeRfc1123(nonNullReader.getString()));
if (rfc1123NonRequiredHolder != null) {
rfc1123NonRequired = rfc1123NonRequiredHolder.getDateTime();
}
}
TransformationAsParentRequiredFields deserializedTransformationAsParentRequiredFields
= new TransformationAsParentRequiredFields();
// WRONG. setter requires wireType `DateTimeRfc1123`, here `OffsetDateTime` is passed in
deserializedTransformationAsParentRequiredFields.setRfc1123NonRequired(rfc1123NonRequired);
}
Current package-private setter's parameter type is
wiredType
instead ofclientType
(compared to that of public setter). https://github.com/Azure/autorest.java/blob/31146cf2e4934ad369fd424be19207c0cce320e4/javagen/src/main/java/com/azure/autorest/template/ModelTemplate.java#L223-L226The issue is that when a read-only property is defined in parent, child class's fromJson will have type incompatible issue.
e.g. property defined in parent:
In child
fromJson
: