This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7acff9d6201da53d6746a4dc88d8169c7b489b02 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Jan 27 13:27:05 2020 +0100 CAMEL-14354: camel-core optimize --- .../main/java/org/apache/camel/spi/UnitOfWorkFactory.java | 9 ++++++++- .../apache/camel/impl/engine/DefaultUnitOfWorkFactory.java | 14 ++++++++++++-- .../org/apache/camel/processor/CamelInternalProcessor.java | 3 +++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java index 9af44dc..64b2429 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/UnitOfWorkFactory.java @@ -16,12 +16,14 @@ */ package org.apache.camel.spi; +import org.apache.camel.AfterPropertiesConfigured; +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; /** * Factory to create {@link org.apache.camel.spi.UnitOfWork}. */ -public interface UnitOfWorkFactory { +public interface UnitOfWorkFactory extends AfterPropertiesConfigured { /** * Creates a new {@link UnitOfWork} @@ -30,5 +32,10 @@ public interface UnitOfWorkFactory { * @return the created {@link UnitOfWork} */ UnitOfWork createUnitOfWork(Exchange exchange); + + @Override + default void afterPropertiesConfigured(CamelContext camelContext) { + // noop + } } diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java index a2af28e..69e4f93 100644 --- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java +++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultUnitOfWorkFactory.java @@ -16,6 +16,7 @@ */ package org.apache.camel.impl.engine; +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.spi.UnitOfWork; import org.apache.camel.spi.UnitOfWorkFactory; @@ -25,15 +26,24 @@ import org.apache.camel.spi.UnitOfWorkFactory; */ public class DefaultUnitOfWorkFactory implements UnitOfWorkFactory { + private boolean usedMDCLogging; + private String mdcLoggingKeysPattern; + @Override public UnitOfWork createUnitOfWork(Exchange exchange) { UnitOfWork answer; - if (exchange.getContext().isUseMDCLogging()) { - answer = new MDCUnitOfWork(exchange, exchange.getContext().getMDCLoggingKeysPattern()); + if (usedMDCLogging) { + answer = new MDCUnitOfWork(exchange, mdcLoggingKeysPattern); } else { answer = new DefaultUnitOfWork(exchange); } return answer; } + @Override + public void afterPropertiesConfigured(CamelContext camelContext) { + usedMDCLogging = camelContext.isUseMDCLogging() != null && camelContext.isUseMDCLogging(); + mdcLoggingKeysPattern = camelContext.getMDCLoggingKeysPattern(); + } + } diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java index 8c7dcb1..c1e4d3b 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java @@ -60,6 +60,7 @@ import org.apache.camel.support.OrderedComparator; import org.apache.camel.support.SynchronizationAdapter; import org.apache.camel.support.UnitOfWorkHelper; import org.apache.camel.support.processor.DelegateAsyncProcessor; +import org.apache.camel.support.service.ServiceHelper; import org.apache.camel.util.StopWatch; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -595,6 +596,8 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor { if (routeContext != null) { this.routeId = routeContext.getRouteId(); this.uowFactory = routeContext.getCamelContext().adapt(ExtendedCamelContext.class).getUnitOfWorkFactory(); + // optimize uow factory to initialize it early and once per advice + this.uowFactory.afterPropertiesConfigured(routeContext.getCamelContext()); } }
