'Quarkus extension filter doesn't work when registers via AdditionalBeanBuildItem
I want to implement my custom filter in my application.
TemplateOverrideFilter
public class TemplateOverrideFilter implements ContainerRequestFilter {
private static final Logger LOG = Logger.getLogger(TemplateOverrideFilter.class);
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
LOG.info("TEMPLATE OVERRIDE FILTER TEST");
}
}
I provide the configuration for the filter using
ContextConfiguration
@Provider
@PreMatching
public class ContextConfiguration implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
context.register(TemplateOverrideFilter.class);
}
}
And when I register my bean using the registerConfiguration method, it works well. But when I use registerAdditionalBeans, it doesn't work.
class TemplateOverrideProcessor {
private static final String FEATURE = "template-override";
@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
// Does not work
@BuildStep
AdditionalBeanBuildItem registerAdditionalBeans() {
return AdditionalBeanBuildItem.builder()
.setUnremovable()
.addBeanClass(ContextConfiguration.class)
.build();
}
// Works well
@BuildStep
ResteasyJaxrsProviderBuildItem registerConfiguration() {
return new ResteasyJaxrsProviderBuildItem(ContextConfiguration.class.getName());
}
}
So I want to make the use of AdditionalBeanBuildItem also working. Can you help me?
Solution 1:[1]
So, I figured out how to achieve my goal.
I don't need the ContextConfiguration
class.
It's enough for me to just use the plugin in the runtime pom.xml:
<plugin>
<groupId>org.jboss.jandex</groupId>
<artifactId>jandex-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>make-index</id>
<goals>
<goal>jandex</goal>
</goals>
</execution>
</executions>
</plugin>
And my filter started to look like this:
@Provider
public class TemplateOverrideFilter implements ContainerRequestFilter {
...
}
After that I was able to register my filter via AdditionalBeanBuildItem
@BuildStep
AdditionalBeanBuildItem registerAdditionalBeans() {
return AdditionalBeanBuildItem.builder()
.setUnremovable()
.addBeanClass(TemplateOverrideFilter.class)
.build();
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |