Skip to content

BuildItem for registering ClientRequestFilter/ClientResponseFilter #50888

@honisekpatrik

Description

@honisekpatrik

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions