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?
Advertisement
Answer
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(); }