-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Description
Hi,
so I have my custom quarkus extension which holds default ContainerRequestFilter, ContainerResponseFilter, ClientRequestFilter and ClientResponseFilter. We use this extension across multiple applications and these filters hold basic transformation and logging logic that are common in our company.
Currently I'm converting this extension from relying on quarkus-resteasy to quarkus-rest and I came across an issue.
With quarkus-resteasy I used something like this to propagate my filters automatically to all resources/rest client:
@BuildStep
void addProviders(BuildProducer<ResteasyJaxrsProviderBuildItem> providers) {
providers.produce(new ResteasyJaxrsProviderBuildItem(AuditInfoFilter.class.getName()));
providers.produce(new ResteasyJaxrsProviderBuildItem(RequestFilter.class.getName()));
providers.produce(new ResteasyJaxrsProviderBuildItem(ResponseFilter.class.getName()));
providers.produce(new ResteasyJaxrsProviderBuildItem(ClientRequestFilter.class.getName()));
providers.produce(new ResteasyJaxrsProviderBuildItem(ClientResponseFilter.class.getName()));
}However this BuildItem is not available with quarkus-rest. I was able to provide Container Request/Response Filter using:
@BuildStep
void addRequestFilters(BuildProducer<ContainerRequestFilterBuildItem> filters) {
filters.produce(new ContainerRequestFilterBuildItem.Builder(RequestFilter.class.getName()).build());
}
@BuildStep
void addResponseFilters(BuildProducer<ContainerResponseFilterBuildItem> filters) {
filters.produce(new ContainerResponseFilterBuildItem.Builder(ResponseFilter.class.getName()).build());
}but I was not able to find alternative for ClientRequestFilter and ClientResponseFilter. When I include them using @RegisterRestClient in the rest client code they work just fine but I would like to find a way that the extension automatically register these filter for me.
It would be nice to have a BuildItem which would allow us to register these filters directly in the extension.
Implementation ideas
No response