@Override public final ExecutorService onCreated(BeanCreatedEvent<ExecutorService> event) { ExecutorService executorService = event.getBean(); if (executorService instanceof ScheduledExecutorService) { return new InstrumentedScheduledExecutorService() {
@Override public ExecutableMethodProcessor onCreated(BeanCreatedEvent<ExecutableMethodProcessor> event) { ExecutableMethodProcessor processor = event.getBean(); BeanDefinition<ExecutableMethodProcessor> processorDefinition = event.getBeanDefinition(); BeanContext beanContext = event.getSource();
@Override public ThreadFactory onCreated(BeanCreatedEvent<ThreadFactory> event) { final ThreadFactory original = event.getBean(); return r -> { final Optional<HttpRequest<Object>> httpRequest = ServerRequestContext.currentRequest(); return original.newThread( httpRequest.map(objectHttpRequest -> ServerRequestContext.instrument(objectHttpRequest, r)) .orElse(r) ); }; }
@Override public AnnotationProcessor onCreated(BeanCreatedEvent<AnnotationProcessor> event) { AnnotationProcessor processor = event.getBean(); BeanDefinition<AnnotationProcessor> processorDefinition = event.getBeanDefinition(); BeanContext beanContext = event.getSource();
@Override public final ExecutorService onCreated(BeanCreatedEvent<ExecutorService> event) { ExecutorService executorService = event.getBean(); if (executorService instanceof ScheduledExecutorService) { return new InstrumentedScheduledExecutorService() {
@Override public DataSource onCreated(BeanCreatedEvent<DataSource> event) { DataSource dataSource = event.getBean(); if (dataSource instanceof TransactionAwareDataSourceProxy) { return dataSource; } else { return new TransactionAwareDataSourceProxy(dataSource); } } }
@Override public Object onCreated(BeanCreatedEvent<Object> event) { final Object bean = event.getBean(); return onBeanCreated(bean); }
@Override public ThreadFactory onCreated(BeanCreatedEvent<ThreadFactory> event) { final ThreadFactory original = event.getBean(); return r -> { final Optional<HttpRequest<Object>> httpRequest = ServerRequestContext.currentRequest(); return original.newThread( httpRequest.map(objectHttpRequest -> ServerRequestContext.instrument(objectHttpRequest, r)) .orElse(r) ); }; }