From 6e1126232a5e4f801b718ed57f1ef2b9647fe823 Mon Sep 17 00:00:00 2001 From: Oleg Zimakov Date: Wed, 24 Jun 2026 17:18:04 -0700 Subject: [PATCH] [SYNCOPE-1980] Fix empty audit history diff under Jackson 3 AuditHistoryDetails.toJSON() deserialized the audited entity with an untyped MAPPER.reader(), which Jackson 3 rejects with InvalidDefinitionException ("No value type configured for ObjectReader"). The exception was swallowed by the surrounding catch, so the before/after diff panes always rendered empty. Read into the concrete type of currentEntity so the reader has a value type. --- .../syncope/client/console/audit/AuditHistoryDetails.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java index 2f46c30b682..616beb2f01c 100644 --- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java +++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/audit/AuditHistoryDetails.java @@ -341,7 +341,8 @@ protected Model toJSON(final AuditEventTO auditEvent) { return Model.of(); } - T entity = MAPPER.reader(). + @SuppressWarnings("unchecked") + T entity = (T) MAPPER.readerFor(currentEntity.getClass()). with(StreamReadFeature.STRICT_DUPLICATE_DETECTION). readValue(content); if (entity instanceof UserTO userTO) {