private SpanProcessor createProcessorChain()

in common/src/main/java/co/elastic/otel/common/ChainingSpanProcessorsInstaller.java [65:91]


  private SpanProcessor createProcessorChain(
      List<ChainingSpanProcessorAutoConfiguration> chainedProcessorAutoConfigs,
      ConfigProperties properties,
      MutableCompositeSpanProcessor terminalProcessor) {

    List<ProcessorFactoryWithOrder> factories = new ArrayList<>();

    for (ChainingSpanProcessorAutoConfiguration autoConfig : chainedProcessorAutoConfigs) {
      autoConfig.registerSpanProcessors(
          properties,
          new ChainingSpanProcessorRegisterer() {
            @Override
            public void register(
                Function<SpanProcessor, SpanProcessor> processorFactory, int order) {
              factories.add(new ProcessorFactoryWithOrder(processorFactory, order));
            }
          });
    }
    // sort from highest (= last processor) to first
    factories.sort((a, b) -> Integer.compare(b.order, a.order));

    SpanProcessor result = terminalProcessor;
    for (ProcessorFactoryWithOrder fac : factories) {
      result = fac.factory.apply(result);
    }
    return result;
  }