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")));
}