WarehouseCreateResponseFilter.java
package com.fulfilment.application.monolith.warehouses.adapters.restapi;
import jakarta.ws.rs.container.ContainerRequestContext;
import jakarta.ws.rs.container.ContainerResponseContext;
import jakarta.ws.rs.container.ContainerResponseFilter;
import jakarta.ws.rs.ext.Provider;
/**
* Maps the default 200 response from POST /warehouse to 201 (Created).
*
* RESTEasy Reactive does not propagate @ResponseStatus from an implementing
* class method when the resource contract is defined on a generated interface.
* This filter applies the correct HTTP semantics defined in the OpenAPI spec.
*/
@Provider
public class WarehouseCreateResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext req, ContainerResponseContext resp) {
if ("POST".equals(req.getMethod())
&& "/warehouse".equals(req.getUriInfo().getPath())
&& resp.getStatus() == 200) {
resp.setStatus(201);
}
}
}