public void start()

in geronimo-opentracing-osgi/src/main/java/org/apache/geronimo/microprofile/opentracing/osgi/OpenTracingActivator.java [69:133]


    public void start(final BundleContext context) {
        INSTANCES.put(Container.class, new Tracked<>(context, Container.class, this::register));
        INSTANCES.put(Tracer.class, new Tracked<>(context, Tracer.class, this::register));
        INSTANCES.put(GeronimoOpenTracingConfig.class, new Tracked<>(context, GeronimoOpenTracingConfig.class, this::register));
        INSTANCES.put(ScopeManager.class, new Tracked<>(context, ScopeManager.class, this::register));
        INSTANCES.put(OpenTracingClientRequestFilter.class, new Tracked<>(context, OpenTracingClientRequestFilter.class, this::register));
        INSTANCES.put(OpenTracingClientResponseFilter.class, new Tracked<>(context, OpenTracingClientResponseFilter.class, this::register));
        INSTANCES.put(EventAdmin.class, new Tracked<>(context, EventAdmin.class, this::register));
        INSTANCES.put(ConfigurationAdmin.class, new Tracked<>(context, ConfigurationAdmin.class, this::register));

        final OSGiContainer container = new OSGiContainer();

        final GeronimoOpenTracingConfig config = new ConfigAdminOpenTracingConfig();
        final ScopeManager scopeManager = new ScopeManagerImpl();

        final IdGenerator idGenerator = new IdGenerator();
        idGenerator.setConfig(config);
        idGenerator.init();

        final GeronimoTracer tracer = new GeronimoTracer();
        tracer.setConfig(config);
        tracer.setIdGenerator(idGenerator);
        tracer.setScopeManager(scopeManager);
        tracer.setFinishedSpanEvent(span -> ofNullable(container.lookup(EventAdmin.class)).ifPresent(ea ->
                ea.sendEvent(new Event("geronimo/microprofile/opentracing/finishedSpan", singletonMap("span", span)))));
        tracer.init();

        final ZipkinConverter zipkinConverter = new ZipkinConverter();
        zipkinConverter.setConfig(config);
        zipkinConverter.setIdGenerator(idGenerator);
        zipkinConverter.setZipkinSpanEvent(span -> ofNullable(container.lookup(EventAdmin.class)).ifPresent(ea ->
                ea.sendEvent(new Event("geronimo/microprofile/opentracing/zipkinSpan", singletonMap("span", span)))));
        zipkinConverter.init();

        logger = new ZipkinLogger();
        logger.setConfig(config);
        logger.init();

        final OpenTracingClientRequestFilter requestFilter = new OpenTracingClientRequestFilter();
        requestFilter.setTracer(tracer);
        requestFilter.setConfig(config);
        requestFilter.init();

        final OpenTracingClientResponseFilter responseFilter = new OpenTracingClientResponseFilter();

        final GeronimoOpenTracingFeature tracingFeature = new GeronimoOpenTracingFeature();
        tracingFeature.setConfig(config);
        tracingFeature.setContainer(container);
        tracingFeature.setTracer(tracer);

        registrations.add(context.registerService(GeronimoOpenTracingConfig.class, config, new Hashtable<>()));
        registrations.add(context.registerService(Container.class, container, new Hashtable<>()));
        registrations.add(context.registerService(IdGenerator.class, idGenerator, new Hashtable<>()));
        registrations.add(context.registerService(ScopeManager.class, scopeManager, new Hashtable<>()));
        registrations.add(context.registerService(Tracer.class, tracer, new Hashtable<>()));
        registrations.add(context.registerService(ClientRequestFilter.class, requestFilter, newJaxRsExtensionProps()));
        registrations.add(context.registerService(ClientResponseFilter.class, responseFilter, newJaxRsExtensionProps()));
        registrations.add(context.registerService(DynamicFeature.class, tracingFeature, newJaxRsExtensionProps()));
        registrations.add(context.registerService(EventHandler.class,
                event -> zipkinConverter.onEvent(FinishedSpan.class.cast(event.getProperty("span"))),
                newEventHandlerProps("geronimo/microprofile/opentracing/finishedSpan")));
        registrations.add(context.registerService(EventHandler.class,
                event -> logger.onEvent(ZipkinSpan.class.cast(event.getProperty("span"))),
                newEventHandlerProps("geronimo/microprofile/opentracing/zipkinSpan")));
    }