void letOtherExtensionsUseRegistries()

in geronimo-metrics/src/main/java/org/apache/geronimo/microprofile/metrics/cdi/MetricsExtension.java [115:133]


    void letOtherExtensionsUseRegistries(@Observes final BeforeBeanDiscovery beforeBeanDiscovery, final BeanManager beanManager) {
        final Tag[] globalTags = OptionalConfig.findTags();
        applicationRegistry = new RegistryImpl(MetricRegistry.Type.APPLICATION, globalTags);
        baseRegistry = new RegistryImpl(MetricRegistry.Type.BASE, globalTags);
        vendorRegistry = new RegistryImpl(MetricRegistry.Type.VENDOR, globalTags);

        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 -> {
            final String name = method.getAnnotated().getJavaMember().getName();
            return name.equals("name") || name.equals("tags");
        }).forEach(method -> method.remove(a -> a.annotationType() == Nonbinding.class));
    }