Skip to content

Commit 4eae656

Browse files
committed
fix: restore @JsonAnyGetter functionality for additionalFields serialization
The ObjectMapper configuration added in PR #205 set PropertyAccessor.GETTER visibility to NONE, which disabled ALL getter methods including those annotated with @JsonAnyGetter. This broke serialization of additionalFields in channels and messages, causing custom object fields to appear as empty. Changed to use field-based serialization while still respecting explicit Jackson annotations (@JsonAnyGetter, @JsonProperty, etc): - Set PropertyAccessor.ALL to NONE (disable auto-detection) - Set PropertyAccessor.FIELD to ANY (use field-based serialization) This preserves the intent of PR #205 (avoiding getter auto-detection) while fixing additionalFields serialization. Fixes: #205
1 parent 78c29e1 commit 4eae656

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/main/java/io/getstream/chat/java/services/framework/DefaultClient.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,11 @@ private Retrofit buildRetrofitClient() {
104104
return chain.proceed(request);
105105
});
106106
final ObjectMapper mapper = new ObjectMapper();
107-
// do not encode getter methods in json
107+
// Use field-based access for both serialization and deserialization
108+
// Disable getter auto-detection to avoid issues, but keep setters for deserialization
108109
mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
110+
mapper.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.ANY);
111+
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
109112
mapper.configure(
110113
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
111114
hasFailOnUnknownProperties(extendedProperties));

src/test/java/io/getstream/chat/java/AppTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,8 @@ void whenEncodingAppConfig_thenNoNullFields() {
280280
var appConfig = App.update().internalBuild();
281281
final ObjectMapper mapper = new ObjectMapper();
282282
mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
283+
mapper.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.ANY);
284+
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
283285

284286
String json = Assertions.assertDoesNotThrow(() -> mapper.writeValueAsString(appConfig));
285287

0 commit comments

Comments
 (0)