1919
2020package de .frachtwerk .essencium .backend .controller .access ;
2121
22- import com .fasterxml .jackson .core .JsonGenerator ;
23- import com .fasterxml .jackson .databind .SerializerProvider ;
24- import com .fasterxml .jackson .databind .jsonFormatVisitors .JsonObjectFormatVisitor ;
25- import com .fasterxml .jackson .databind .node .ObjectNode ;
26- import com .fasterxml .jackson .databind .ser .PropertyFilter ;
27- import com .fasterxml .jackson .databind .ser .PropertyWriter ;
2822import de .frachtwerk .essencium .backend .model .Ownable ;
2923import de .frachtwerk .essencium .backend .model .dto .EssenciumUserDetails ;
3024import java .io .Serializable ;
3125import java .util .Arrays ;
3226import java .util .stream .Stream ;
3327import lombok .AllArgsConstructor ;
3428import org .springframework .security .core .GrantedAuthority ;
29+ import tools .jackson .core .JsonGenerator ;
30+ import tools .jackson .databind .SerializationContext ;
31+ import tools .jackson .databind .jsonFormatVisitors .JsonObjectFormatVisitor ;
32+ import tools .jackson .databind .ser .PropertyFilter ;
33+ import tools .jackson .databind .ser .PropertyWriter ;
3534
3635@ AllArgsConstructor
3736public class AccessAwareJsonFilter <
@@ -40,9 +39,10 @@ public class AccessAwareJsonFilter<
4039 private AUTHUSER principal ;
4140
4241 @ Override
43- public void serializeAsField (
44- Object pojo , JsonGenerator jsonGenerator , SerializerProvider provider , PropertyWriter writer )
42+ public void serializeAsProperty (
43+ Object pojo , JsonGenerator jsonGenerator , SerializationContext context , PropertyWriter writer )
4544 throws Exception {
45+
4646 JsonAllowFor ann = writer .getMember ().getAnnotation (JsonAllowFor .class );
4747 if (ann == null
4848 || Arrays .stream (ann .roles ())
@@ -58,32 +58,26 @@ public void serializeAsField(
5858 .map (GrantedAuthority ::getAuthority )
5959 .anyMatch (r ::equals ))
6060 || (ann .allowForOwner () && isOwner (pojo ))) {
61- writer .serializeAsField (pojo , jsonGenerator , provider );
62- } else if (!jsonGenerator .canOmitFields ()) {
63- writer .serializeAsOmittedField (pojo , jsonGenerator , provider );
61+ writer .serializeAsProperty (pojo , jsonGenerator , context );
62+ } else if (!jsonGenerator .canOmitProperties ()) {
63+ writer .serializeAsOmittedProperty (pojo , jsonGenerator , context );
6464 }
6565 }
6666
6767 @ Override
6868 public void serializeAsElement (
6969 Object elementValue ,
7070 JsonGenerator jsonGenerator ,
71- SerializerProvider provider ,
71+ SerializationContext context ,
7272 PropertyWriter writer )
7373 throws Exception {
7474 // For array/collection elements, just serialize normally
75- writer .serializeAsField (elementValue , jsonGenerator , provider );
75+ writer .serializeAsProperty (elementValue , jsonGenerator , context );
7676 }
7777
7878 @ Override
7979 public void depositSchemaProperty (
80- PropertyWriter writer , JsonObjectFormatVisitor objectVisitor , SerializerProvider provider ) {
81- // Default implementation - include all properties in schema
82- }
83-
84- @ Override
85- public void depositSchemaProperty (
86- PropertyWriter writer , ObjectNode propertiesNode , SerializerProvider provider ) {
80+ PropertyWriter writer , JsonObjectFormatVisitor objectVisitor , SerializationContext context ) {
8781 // Default implementation - include all properties in schema
8882 }
8983
@@ -95,4 +89,9 @@ private boolean isOwner(Object obj) {
9589 return false ;
9690 }
9791 }
92+
93+ @ Override
94+ public PropertyFilter snapshot () {
95+ return this ;
96+ }
9897}
0 commit comments