Skip to content

Commit cfbc54f

Browse files
authored
fix: restore @JsonAnyGetter functionality for additionalFields serialization (#209)
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 cfbc54f

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,9 @@ private Retrofit buildRetrofitClient() {
104104
return chain.proceed(request);
105105
});
106106
final ObjectMapper mapper = new ObjectMapper();
107-
// do not encode getter methods in json
108-
mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
107+
// Use field-based serialization but respect @JsonProperty and @JsonAnyGetter annotations
108+
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
109+
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
109110
mapper.configure(
110111
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
111112
hasFailOnUnknownProperties(extendedProperties));

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,8 @@ void whenUpdatingAppSettingsWithPendingMessageEventHook_thenNoException() throws
279279
void whenEncodingAppConfig_thenNoNullFields() {
280280
var appConfig = App.update().internalBuild();
281281
final ObjectMapper mapper = new ObjectMapper();
282-
mapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
282+
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
283+
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
283284

284285
String json = Assertions.assertDoesNotThrow(() -> mapper.writeValueAsString(appConfig));
285286

0 commit comments

Comments
 (0)