public void observeBeforeBeanDiscovery(@Observes BeforeBeanDiscovery event) { // turn annotation into qualifier event.configureQualifier(CustomQualifier.class); // turn annotation into binding event.configureInterceptorBinding(CustomBinding.class); } }
void letOtherExtensionsUseRegistries(@Observes final BeforeBeanDiscovery beforeBeanDiscovery, final BeanManager beanManager) { beforeBeanDiscovery.addQualifier(RegistryType.class); beanManager.fireEvent(applicationRegistry); beanManager.fireEvent(applicationRegistry, new RegistryTypeImpl(MetricRegistry.Type.APPLICATION)); beanManager.fireEvent(baseRegistry, new RegistryTypeImpl(MetricRegistry.Type.BASE)); beanManager.fireEvent(vendorRegistry, new RegistryTypeImpl(MetricRegistry.Type.VENDOR)); // we make @Metric.name binding (to avoid to write producers relying on injection point) beforeBeanDiscovery.configureQualifier(org.eclipse.microprofile.metrics.annotation.Metric.class) .methods().stream().filter(method -> method.getAnnotated().getJavaMember().getName().equals("name")) .forEach(method -> method.remove(a -> a.annotationType() == Nonbinding.class)); }