Comment From: Rakesh151994

Please check the below code with spring-boot version as 3.1.5

We have a pojo which is declared with a jsonfilter as @JsonFilter("min")

@JsonFilter("min")
public class Satellite {

    private int id;
    private String name;
    private LocalDate launchDate;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public LocalDate getLaunchDate() {
        return launchDate;
    }
    public void setLaunchDate(LocalDate launchDate) {
        this.launchDate = launchDate;
    }

}

Now, we have a URI mapped in the controller as below

public class ApiController {

 @GetMapping("/dfilter")
    public MappingJacksonValue dfilter() {
        Satellite s = new Satellite();
        s.setId(12);
        s.setName("Tri");
        s.setLaunchDate(java.time.LocalDate.now());
        MappingJacksonValue v = new MappingJacksonValue(s);
        SimpleBeanPropertyFilter fil = SimpleBeanPropertyFilter.filterOutAllExcept("launchDate");
        FilterProvider fp = new SimpleFilterProvider().addFilter("min", fil);
        v.setFilters(fp);
        return v;
    }


    @GetMapping("/link")         //Using Hateoas trying to link the above method wit URI "/dfilter"
    public EntityModel<Satellite> test() {
        Satellite s =new Satellite();
        s.setId(12);s.setName("jki");s.setLaunchDate(LocalDate.now());
        EntityModel<Satellite> mod=EntityModel.of(s);
        WebMvcLinkBuilder m=    WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(this.getClass()).dfilter());
        mod.add(m.withRel("kl"));return mod;
    }
}

This approach causes the exception as below. It works normally with other URIs except this one where we have the filtering with @JsonFilter.

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot resolve PropertyFilter with id 'min'; no FilterProvider configured (through reference chain: org.springframework.hateoas.EntityModel["content"])
    at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1308) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:414) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.ser.std.StdSerializer.findPropertyFilter(StdSerializer.java:433) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFieldsFiltered(BeanSerializerBase.java:812) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer.serialize(UnwrappingBeanSerializer.java:136) ~[jackson-databind-2.15.3.jar:2.15.3]
    at org.springframework.hateoas.EntityModel$MapSuppressingUnwrappingSerializer.serialize(EntityModel.java:246) ~[spring-hateoas-2.1.2.jar:2.1.2]
    at com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter.serializeAsField(UnwrappingBeanPropertyWriter.java:127) ~[jackson-databind-2.15.3.jar:2.15.3]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:772) ~[jackson-databind-2.15.3.jar:2.15.3]

Comment From: wilkinsona

Spring HATEAOS is managed as a separate project. If you believe you've found a bug with Spring HATEOAS, please open a Spring HATEOAS issue. Alternatively, if you're looking for some guidance, please ask on Stack Overflow.