FasterXML / jackson-annotations

Core annotations (annotations that only depend on jackson-core) for Jackson data processor
https://github.com/FasterXML/jackson
Apache License 2.0
1.03k stars 330 forks source link

Use 2 different `@JsonView` in a method (parameter and return) #265

Open domroydumcn opened 2 days ago

domroydumcn commented 2 days ago

Allow using one view as input and a different view of the same DTO as output to a method. Like this :

@POST
    @Path("/add")
    @JsonView(parameter=ExempleViews.Ajout.class, return=ExempleViews.Response.class)  // <-- like this
    @APIResponse(responseCode = "201", description = "Add with success")
    @APIResponse(responseCode = "400", description = "Bad request")
    @APIResponse(responseCode = "409", description = "Conflict in database")
    @APIResponse(responseCode = "500", description = "Internal error")
    public Uni<Response> add(@Valid @NotNull ExampleDto exampleDto) {

        return exampleService
                .add(exampleDto)
                .map(e -> Response.ok(e).status(Status.CREATED).build());
    }
cowtowncoder commented 1 day ago

Ok so:

  1. Functionality used via annotations is defined elsewhere (even in case of regular @JsonView, handling provided by jackson-databind, so this request would only be for specific change to @JsonView type (but not to that adding new functionality)
  2. I don't think existing semantics of @JsonView should be changed (confusing to existing users since it would have no meaning for regular view handling). More likely a new annotation should be created; one that could use @JsonView as parameter type for 2 properties
  3. Since handling is not (cannot) be part of any of Jackson core packages, new annotation does not belong here.

In practice I think this would be adding annotation in whatever framework is being used: Spring Boot, Quarkus -- or, if JAX-RS / Jakarta-RS, to