You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/03/04 08:57:46 UTC
[camel] 01/32: Move RouteContext lookup methods to AbstractReifier
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 67ff8e3a7a06340f01dcd9499c30790339325a08
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Feb 19 12:29:49 2020 +0100
Move RouteContext lookup methods to AbstractReifier
---
.../JtaTransactionErrorHandlerBuilder.java | 8 +-
.../hystrix/processor/HystrixReifier.java | 65 ++++++------
.../component/resilience4j/ResilienceReifier.java | 29 +++---
.../spring/spi/TransactionErrorHandlerBuilder.java | 14 +--
.../spring/spi/TransactionErrorHandlerReifier.java | 15 ++-
.../apache/camel/spring/EndpointReferenceTest.java | 4 +-
.../java/org/apache/camel/spi/RouteContext.java | 43 --------
.../camel/impl/engine/DefaultRouteContext.java | 92 ++++------------
.../camel/builder/DeadLetterChannelBuilder.java | 8 +-
...ctedReifier.java => AbstractPolicyReifier.java} | 62 +++--------
.../org/apache/camel/reifier/AbstractReifier.java | 54 +++++++++-
.../org/apache/camel/reifier/AggregateReifier.java | 12 +--
.../apache/camel/reifier/ClaimCheckReifier.java | 6 +-
.../org/apache/camel/reifier/EnrichReifier.java | 2 +-
.../camel/reifier/IdempotentConsumerReifier.java | 2 +-
.../java/org/apache/camel/reifier/LogReifier.java | 11 +-
.../org/apache/camel/reifier/MulticastReifier.java | 5 +-
.../org/apache/camel/reifier/PolicyReifier.java | 12 +--
.../apache/camel/reifier/PollEnrichReifier.java | 2 +-
.../org/apache/camel/reifier/ProcessReifier.java | 2 +-
.../org/apache/camel/reifier/ProcessorReifier.java | 11 +-
.../apache/camel/reifier/RecipientListReifier.java | 10 +-
.../apache/camel/reifier/ResequenceReifier.java | 3 +-
.../org/apache/camel/reifier/RouteReifier.java | 25 ++---
.../java/org/apache/camel/reifier/SagaReifier.java | 10 +-
.../java/org/apache/camel/reifier/SendReifier.java | 9 +-
.../java/org/apache/camel/reifier/SortReifier.java | 2 +-
.../org/apache/camel/reifier/SplitReifier.java | 5 +-
.../camel/reifier/ThrowExceptionReifier.java | 3 +-
.../apache/camel/reifier/TransactedReifier.java | 116 ++-------------------
.../org/apache/camel/reifier/WireTapReifier.java | 5 +-
.../reifier/dataformat/DataFormatReifier.java | 5 +-
.../errorhandler/DefaultErrorHandlerReifier.java | 2 +-
.../reifier/errorhandler/ErrorHandlerReifier.java | 9 +-
.../loadbalancer/CustomLoadBalancerReifier.java | 3 +-
.../camel/reifier/rest/RestBindingReifier.java | 4 +-
.../transformer/CustomTransformeReifier.java | 2 +-
.../transformer/EndpointTransformeReifier.java | 2 +-
.../reifier/validator/CustomValidatorReifier.java | 2 +-
.../validator/EndpointValidatorReifier.java | 2 +-
.../apache/camel/support/CamelContextHelper.java | 34 +++++-
41 files changed, 274 insertions(+), 438 deletions(-)
diff --git a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
index f47928f..bb15f57 100644
--- a/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
+++ b/components/camel-cdi/src/main/java/org/apache/camel/cdi/transaction/JtaTransactionErrorHandlerBuilder.java
@@ -77,12 +77,13 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
@Override
public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) throws Exception {
+ CamelContext camelContext = routeContext.getCamelContext();
// resolve policy reference, if given
if (transactionPolicy == null) {
if (policyRef != null) {
final TransactedDefinition transactedDefinition = new TransactedDefinition();
transactedDefinition.setRef(policyRef);
- final Policy policy = TransactedReifier.resolvePolicy(routeContext, transactedDefinition);
+ final Policy policy = new TransactedReifier(camelContext, transactedDefinition).resolvePolicy();
if (policy != null) {
if (!(policy instanceof JtaTransactionPolicy)) {
throw new RuntimeCamelException("The configured policy '" + policyRef + "' is of type '"
@@ -99,7 +100,7 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
LOG.debug(
"No transaction policy configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
- Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+ Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
if (mapPolicy != null && mapPolicy.size() == 1) {
TransactedPolicy policy = mapPolicy.values().iterator().next();
if (policy instanceof JtaTransactionPolicy) {
@@ -108,7 +109,7 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
}
if (transactionPolicy == null) {
- TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+ TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
if (policy instanceof JtaTransactionPolicy) {
transactionPolicy = (JtaTransactionPolicy) policy;
}
@@ -121,7 +122,6 @@ public class JtaTransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilde
ObjectHelper.notNull(transactionPolicy, "transactionPolicy", this);
- final CamelContext camelContext = routeContext.getCamelContext();
final Map<String, String> properties = camelContext.getGlobalOptions();
if ((properties != null) && properties.containsKey(ROLLBACK_LOGGING_LEVEL_PROPERTY)) {
rollbackLoggingLevel = LoggingLevel.valueOf(properties.get(ROLLBACK_LOGGING_LEVEL_PROPERTY));
diff --git a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
index c03b2ad..10d535a 100644
--- a/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
+++ b/components/camel-hystrix/src/main/java/org/apache/camel/component/hystrix/processor/HystrixReifier.java
@@ -38,9 +38,6 @@ import org.apache.camel.spi.RouteContext;
import org.apache.camel.support.PropertyBindingSupport;
import org.apache.camel.util.function.Suppliers;
-import static org.apache.camel.support.CamelContextHelper.lookup;
-import static org.apache.camel.support.CamelContextHelper.mandatoryLookup;
-
public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
public HystrixReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
@@ -119,91 +116,91 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
private void configureHystrix(HystrixCommandProperties.Setter command, HystrixThreadPoolProperties.Setter threadPool, HystrixConfigurationDefinition config) {
// command
if (config.getCircuitBreakerEnabled() != null) {
- command.withCircuitBreakerEnabled(Boolean.parseBoolean(config.getCircuitBreakerEnabled()));
+ command.withCircuitBreakerEnabled(parseBoolean(config.getCircuitBreakerEnabled()));
}
if (config.getCircuitBreakerErrorThresholdPercentage() != null) {
- command.withCircuitBreakerErrorThresholdPercentage(Integer.parseInt(config.getCircuitBreakerErrorThresholdPercentage()));
+ command.withCircuitBreakerErrorThresholdPercentage(parseInt(config.getCircuitBreakerErrorThresholdPercentage()));
}
if (config.getCircuitBreakerForceClosed() != null) {
- command.withCircuitBreakerForceClosed(Boolean.parseBoolean(config.getCircuitBreakerForceClosed()));
+ command.withCircuitBreakerForceClosed(parseBoolean(config.getCircuitBreakerForceClosed()));
}
if (config.getCircuitBreakerForceOpen() != null) {
- command.withCircuitBreakerForceOpen(Boolean.parseBoolean(config.getCircuitBreakerForceOpen()));
+ command.withCircuitBreakerForceOpen(parseBoolean(config.getCircuitBreakerForceOpen()));
}
if (config.getCircuitBreakerRequestVolumeThreshold() != null) {
- command.withCircuitBreakerRequestVolumeThreshold(Integer.parseInt(config.getCircuitBreakerRequestVolumeThreshold()));
+ command.withCircuitBreakerRequestVolumeThreshold(parseInt(config.getCircuitBreakerRequestVolumeThreshold()));
}
if (config.getCircuitBreakerSleepWindowInMilliseconds() != null) {
- command.withCircuitBreakerSleepWindowInMilliseconds(Integer.parseInt(config.getCircuitBreakerSleepWindowInMilliseconds()));
+ command.withCircuitBreakerSleepWindowInMilliseconds(parseInt(config.getCircuitBreakerSleepWindowInMilliseconds()));
}
if (config.getExecutionIsolationSemaphoreMaxConcurrentRequests() != null) {
- command.withExecutionIsolationSemaphoreMaxConcurrentRequests(Integer.parseInt(config.getExecutionIsolationSemaphoreMaxConcurrentRequests()));
+ command.withExecutionIsolationSemaphoreMaxConcurrentRequests(parseInt(config.getExecutionIsolationSemaphoreMaxConcurrentRequests()));
}
if (config.getExecutionIsolationStrategy() != null) {
- command.withExecutionIsolationStrategy(HystrixCommandProperties.ExecutionIsolationStrategy.valueOf(config.getExecutionIsolationStrategy()));
+ command.withExecutionIsolationStrategy(parse(HystrixCommandProperties.ExecutionIsolationStrategy.class, config.getExecutionIsolationStrategy()));
}
if (config.getExecutionIsolationThreadInterruptOnTimeout() != null) {
- command.withExecutionIsolationThreadInterruptOnTimeout(Boolean.parseBoolean(config.getExecutionIsolationThreadInterruptOnTimeout()));
+ command.withExecutionIsolationThreadInterruptOnTimeout(parseBoolean(config.getExecutionIsolationThreadInterruptOnTimeout()));
}
if (config.getExecutionTimeoutInMilliseconds() != null) {
- command.withExecutionTimeoutInMilliseconds(Integer.parseInt(config.getExecutionTimeoutInMilliseconds()));
+ command.withExecutionTimeoutInMilliseconds(parseInt(config.getExecutionTimeoutInMilliseconds()));
}
if (config.getExecutionTimeoutEnabled() != null) {
- command.withExecutionTimeoutEnabled(Boolean.parseBoolean(config.getExecutionTimeoutEnabled()));
+ command.withExecutionTimeoutEnabled(parseBoolean(config.getExecutionTimeoutEnabled()));
}
if (config.getFallbackIsolationSemaphoreMaxConcurrentRequests() != null) {
- command.withFallbackIsolationSemaphoreMaxConcurrentRequests(Integer.parseInt(config.getFallbackIsolationSemaphoreMaxConcurrentRequests()));
+ command.withFallbackIsolationSemaphoreMaxConcurrentRequests(parseInt(config.getFallbackIsolationSemaphoreMaxConcurrentRequests()));
}
if (config.getFallbackEnabled() != null) {
- command.withFallbackEnabled(Boolean.parseBoolean(config.getFallbackEnabled()));
+ command.withFallbackEnabled(parseBoolean(config.getFallbackEnabled()));
}
if (config.getMetricsHealthSnapshotIntervalInMilliseconds() != null) {
- command.withMetricsHealthSnapshotIntervalInMilliseconds(Integer.parseInt(config.getMetricsHealthSnapshotIntervalInMilliseconds()));
+ command.withMetricsHealthSnapshotIntervalInMilliseconds(parseInt(config.getMetricsHealthSnapshotIntervalInMilliseconds()));
}
if (config.getMetricsRollingPercentileBucketSize() != null) {
- command.withMetricsRollingPercentileBucketSize(Integer.parseInt(config.getMetricsRollingPercentileBucketSize()));
+ command.withMetricsRollingPercentileBucketSize(parseInt(config.getMetricsRollingPercentileBucketSize()));
}
if (config.getMetricsRollingPercentileEnabled() != null) {
- command.withMetricsRollingPercentileEnabled(Boolean.parseBoolean(config.getMetricsRollingPercentileEnabled()));
+ command.withMetricsRollingPercentileEnabled(parseBoolean(config.getMetricsRollingPercentileEnabled()));
}
if (config.getMetricsRollingPercentileWindowInMilliseconds() != null) {
- command.withMetricsRollingPercentileWindowInMilliseconds(Integer.parseInt(config.getMetricsRollingPercentileWindowInMilliseconds()));
+ command.withMetricsRollingPercentileWindowInMilliseconds(parseInt(config.getMetricsRollingPercentileWindowInMilliseconds()));
}
if (config.getMetricsRollingPercentileWindowBuckets() != null) {
- command.withMetricsRollingPercentileWindowBuckets(Integer.parseInt(config.getMetricsRollingPercentileWindowBuckets()));
+ command.withMetricsRollingPercentileWindowBuckets(parseInt(config.getMetricsRollingPercentileWindowBuckets()));
}
if (config.getMetricsRollingStatisticalWindowInMilliseconds() != null) {
- command.withMetricsRollingStatisticalWindowInMilliseconds(Integer.parseInt(config.getMetricsRollingStatisticalWindowInMilliseconds()));
+ command.withMetricsRollingStatisticalWindowInMilliseconds(parseInt(config.getMetricsRollingStatisticalWindowInMilliseconds()));
}
if (config.getMetricsRollingStatisticalWindowBuckets() != null) {
- command.withMetricsRollingStatisticalWindowBuckets(Integer.parseInt(config.getMetricsRollingStatisticalWindowBuckets()));
+ command.withMetricsRollingStatisticalWindowBuckets(parseInt(config.getMetricsRollingStatisticalWindowBuckets()));
}
if (config.getRequestLogEnabled() != null) {
- command.withRequestLogEnabled(Boolean.parseBoolean(config.getRequestLogEnabled()));
+ command.withRequestLogEnabled(parseBoolean(config.getRequestLogEnabled()));
}
if (config.getCorePoolSize() != null) {
- threadPool.withCoreSize(Integer.parseInt(config.getCorePoolSize()));
+ threadPool.withCoreSize(parseInt(config.getCorePoolSize()));
}
if (config.getMaximumSize() != null) {
- threadPool.withMaximumSize(Integer.parseInt(config.getMaximumSize()));
+ threadPool.withMaximumSize(parseInt(config.getMaximumSize()));
}
if (config.getKeepAliveTime() != null) {
- threadPool.withKeepAliveTimeMinutes(Integer.parseInt(config.getKeepAliveTime()));
+ threadPool.withKeepAliveTimeMinutes(parseInt(config.getKeepAliveTime()));
}
if (config.getMaxQueueSize() != null) {
- threadPool.withMaxQueueSize(Integer.parseInt(config.getMaxQueueSize()));
+ threadPool.withMaxQueueSize(parseInt(config.getMaxQueueSize()));
}
if (config.getQueueSizeRejectionThreshold() != null) {
- threadPool.withQueueSizeRejectionThreshold(Integer.parseInt(config.getQueueSizeRejectionThreshold()));
+ threadPool.withQueueSizeRejectionThreshold(parseInt(config.getQueueSizeRejectionThreshold()));
}
if (config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds() != null) {
- threadPool.withMetricsRollingStatisticalWindowInMilliseconds(Integer.parseInt(config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds()));
+ threadPool.withMetricsRollingStatisticalWindowInMilliseconds(parseInt(config.getThreadPoolRollingNumberStatisticalWindowInMilliseconds()));
}
if (config.getThreadPoolRollingNumberStatisticalWindowBuckets() != null) {
- threadPool.withMetricsRollingStatisticalWindowBuckets(Integer.parseInt(config.getThreadPoolRollingNumberStatisticalWindowBuckets()));
+ threadPool.withMetricsRollingStatisticalWindowBuckets(parseInt(config.getThreadPoolRollingNumberStatisticalWindowBuckets()));
}
if (config.getAllowMaximumSizeToDivergeFromCoreSize() != null) {
- threadPool.withAllowMaximumSizeToDivergeFromCoreSize(Boolean.parseBoolean(config.getAllowMaximumSizeToDivergeFromCoreSize()));
+ threadPool.withAllowMaximumSizeToDivergeFromCoreSize(parseBoolean(config.getAllowMaximumSizeToDivergeFromCoreSize()));
}
}
@@ -218,7 +215,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
// camel context takes the precedence over those in the registry
loadProperties(camelContext, properties, Suppliers.firstNotNull(
() -> camelContext.getExtension(Model.class).getHystrixConfiguration(null),
- () -> lookup(camelContext, HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, HystrixConfigurationDefinition.class))
+ () -> lookup(HystrixConstants.DEFAULT_HYSTRIX_CONFIGURATION_ID, HystrixConfigurationDefinition.class))
);
// Extract properties from referenced configuration, the one configured
@@ -228,7 +225,7 @@ public class HystrixReifier extends ProcessorReifier<CircuitBreakerDefinition> {
loadProperties(camelContext, properties, Suppliers.firstNotNull(
() -> camelContext.getExtension(Model.class).getHystrixConfiguration(ref),
- () -> mandatoryLookup(camelContext, ref, HystrixConfigurationDefinition.class))
+ () -> mandatoryLookup(ref, HystrixConfigurationDefinition.class))
);
}
diff --git a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
index bb7e2b1..f725db8 100644
--- a/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
+++ b/components/camel-resilience4j/src/main/java/org/apache/camel/component/resilience4j/ResilienceReifier.java
@@ -26,7 +26,6 @@ import io.github.resilience4j.bulkhead.BulkheadConfig;
import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.timelimiter.TimeLimiterConfig;
-import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.Processor;
import org.apache.camel.model.CircuitBreakerDefinition;
@@ -36,13 +35,9 @@ import org.apache.camel.model.Resilience4jConfigurationDefinition;
import org.apache.camel.reifier.ProcessorReifier;
import org.apache.camel.spi.BeanIntrospection;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.PropertyBindingSupport;
import org.apache.camel.util.function.Suppliers;
-import static org.apache.camel.support.CamelContextHelper.lookup;
-import static org.apache.camel.support.CamelContextHelper.mandatoryLookup;
-
public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition> {
public ResilienceReifier(RouteContext routeContext, CircuitBreakerDefinition definition) {
@@ -61,16 +56,16 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
if (fallbackViaNetwork) {
throw new UnsupportedOperationException("camel-resilience4j does not support onFallbackViaNetwork");
}
- final Resilience4jConfigurationCommon config = buildResilience4jConfiguration(routeContext.getCamelContext());
+ final Resilience4jConfigurationCommon config = buildResilience4jConfiguration();
CircuitBreakerConfig cbConfig = configureCircuitBreaker(config);
BulkheadConfig bhConfig = configureBulkHead(config);
TimeLimiterConfig tlConfig = configureTimeLimiter(config);
ResilienceProcessor answer = new ResilienceProcessor(cbConfig, bhConfig, tlConfig, processor, fallback);
- configureTimeoutExecutorService(answer, routeContext, config);
+ configureTimeoutExecutorService(answer, config);
// using any existing circuit breakers?
if (config.getCircuitBreakerRef() != null) {
- CircuitBreaker cb = CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), parseString(config.getCircuitBreakerRef()), CircuitBreaker.class);
+ CircuitBreaker cb = mandatoryLookup(parseString(config.getCircuitBreakerRef()), CircuitBreaker.class);
answer.setCircuitBreaker(cb);
}
return answer;
@@ -141,7 +136,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
return builder.build();
}
- private void configureTimeoutExecutorService(ResilienceProcessor processor, RouteContext routeContext, Resilience4jConfigurationCommon config) {
+ private void configureTimeoutExecutorService(ResilienceProcessor processor, Resilience4jConfigurationCommon config) {
if (!parseBoolean(config.getTimeoutEnabled(), false)) {
return;
}
@@ -149,7 +144,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
if (config.getTimeoutExecutorServiceRef() != null) {
String ref = config.getTimeoutExecutorServiceRef();
boolean shutdownThreadPool = false;
- ExecutorService executorService = routeContext.lookup(ref, ExecutorService.class);
+ ExecutorService executorService = lookup(ref, ExecutorService.class);
if (executorService == null) {
executorService = lookupExecutorServiceRef("CircuitBreaker", definition, ref);
shutdownThreadPool = true;
@@ -163,27 +158,27 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
// Helpers
// *******************************
- Resilience4jConfigurationDefinition buildResilience4jConfiguration(CamelContext camelContext) throws Exception {
+ Resilience4jConfigurationDefinition buildResilience4jConfiguration() throws Exception {
Map<String, Object> properties = new HashMap<>();
// Extract properties from default configuration, the one configured on
// camel context takes the precedence over those in the registry
- loadProperties(camelContext, properties, Suppliers.firstNotNull(
+ loadProperties(properties, Suppliers.firstNotNull(
() -> camelContext.getExtension(Model.class).getResilience4jConfiguration(null),
- () -> lookup(camelContext, ResilienceConstants.DEFAULT_RESILIENCE_CONFIGURATION_ID, Resilience4jConfigurationDefinition.class)));
+ () -> lookup(ResilienceConstants.DEFAULT_RESILIENCE_CONFIGURATION_ID, Resilience4jConfigurationDefinition.class)));
// Extract properties from referenced configuration, the one configured
// on camel context takes the precedence over those in the registry
if (definition.getConfigurationRef() != null) {
final String ref = definition.getConfigurationRef();
- loadProperties(camelContext, properties, Suppliers.firstNotNull(
+ loadProperties(properties, Suppliers.firstNotNull(
() -> camelContext.getExtension(Model.class).getResilience4jConfiguration(ref),
- () -> mandatoryLookup(camelContext, ref, Resilience4jConfigurationDefinition.class)));
+ () -> mandatoryLookup(ref, Resilience4jConfigurationDefinition.class)));
}
// Extract properties from local configuration
- loadProperties(camelContext, properties, Optional.ofNullable(definition.getResilience4jConfiguration()));
+ loadProperties(properties, Optional.ofNullable(definition.getResilience4jConfiguration()));
// Extract properties from definition
BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
@@ -197,7 +192,7 @@ public class ResilienceReifier extends ProcessorReifier<CircuitBreakerDefinition
return config;
}
- private void loadProperties(CamelContext camelContext, Map<String, Object> properties, Optional<?> optional) {
+ private void loadProperties(Map<String, Object> properties, Optional<?> optional) {
BeanIntrospection beanIntrospection = camelContext.adapt(ExtendedCamelContext.class).getBeanIntrospection();
optional.ifPresent(bean -> beanIntrospection.getProperties(bean, properties, null, false));
}
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
index d527700..1c7fc85 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
@@ -18,6 +18,7 @@ package org.apache.camel.spring.spi;
import java.util.Map;
+import org.apache.camel.CamelContext;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Processor;
import org.apache.camel.builder.DefaultErrorHandlerBuilder;
@@ -60,11 +61,12 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
@Override
public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
+ CamelContext camelContext = routeContext.getCamelContext();
if (transactionTemplate == null) {
// lookup in context if no transaction template has been configured
LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
- Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+ Map<String, TransactedPolicy> mapPolicy = camelContext.getRegistry().findByTypeWithName(TransactedPolicy.class);
if (mapPolicy != null && mapPolicy.size() == 1) {
TransactedPolicy policy = mapPolicy.values().iterator().next();
if (policy instanceof SpringTransactionPolicy) {
@@ -73,14 +75,14 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
}
if (transactionTemplate == null) {
- TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+ TransactedPolicy policy = camelContext.getRegistry().lookupByNameAndType(PROPAGATION_REQUIRED, TransactedPolicy.class);
if (policy instanceof SpringTransactionPolicy) {
transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
}
}
if (transactionTemplate == null) {
- Map<String, TransactionTemplate> mapTemplate = routeContext.lookupByType(TransactionTemplate.class);
+ Map<String, TransactionTemplate> mapTemplate = camelContext.getRegistry().findByTypeWithName(TransactionTemplate.class);
if (mapTemplate == null || mapTemplate.isEmpty()) {
LOG.trace("No TransactionTemplate found in registry.");
} else if (mapTemplate.size() == 1) {
@@ -92,7 +94,7 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
}
if (transactionTemplate == null) {
- Map<String, PlatformTransactionManager> mapManager = routeContext.lookupByType(PlatformTransactionManager.class);
+ Map<String, PlatformTransactionManager> mapManager = camelContext.getRegistry().findByTypeWithName(PlatformTransactionManager.class);
if (mapManager == null || mapManager.isEmpty()) {
LOG.trace("No PlatformTransactionManager found in registry.");
} else if (mapManager.size() == 1) {
@@ -110,9 +112,9 @@ public class TransactionErrorHandlerBuilder extends DefaultErrorHandlerBuilder {
ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
- TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
+ TransactionErrorHandler answer = new TransactionErrorHandler(camelContext, processor,
getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getExceptionPolicyStrategy(), transactionTemplate,
- getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()), getRollbackLoggingLevel(), getOnExceptionOccurred());
+ getRetryWhilePolicy(camelContext), getExecutorService(camelContext), getRollbackLoggingLevel(), getOnExceptionOccurred());
// configure error handler before we can use it
configure(routeContext, answer);
return answer;
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
index 90210dc..29dc00b 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerReifier.java
@@ -18,7 +18,6 @@ package org.apache.camel.spring.spi;
import java.util.Map;
-import org.apache.camel.CamelContext;
import org.apache.camel.ErrorHandlerFactory;
import org.apache.camel.Processor;
import org.apache.camel.reifier.errorhandler.DefaultErrorHandlerReifier;
@@ -47,7 +46,7 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
// lookup in context if no transaction template has been configured
LOG.debug("No TransactionTemplate configured on TransactionErrorHandlerBuilder. Will try find it in the registry.");
- Map<String, TransactedPolicy> mapPolicy = routeContext.lookupByType(TransactedPolicy.class);
+ Map<String, TransactedPolicy> mapPolicy = findByTypeWithName(TransactedPolicy.class);
if (mapPolicy != null && mapPolicy.size() == 1) {
TransactedPolicy policy = mapPolicy.values().iterator().next();
if (policy instanceof SpringTransactionPolicy) {
@@ -56,14 +55,14 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
}
if (transactionTemplate == null) {
- TransactedPolicy policy = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+ TransactedPolicy policy = lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
if (policy instanceof SpringTransactionPolicy) {
transactionTemplate = ((SpringTransactionPolicy) policy).getTransactionTemplate();
}
}
if (transactionTemplate == null) {
- Map<String, TransactionTemplate> mapTemplate = routeContext.lookupByType(TransactionTemplate.class);
+ Map<String, TransactionTemplate> mapTemplate = findByTypeWithName(TransactionTemplate.class);
if (mapTemplate == null || mapTemplate.isEmpty()) {
LOG.trace("No TransactionTemplate found in registry.");
} else if (mapTemplate.size() == 1) {
@@ -75,7 +74,7 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
}
if (transactionTemplate == null) {
- Map<String, PlatformTransactionManager> mapManager = routeContext.lookupByType(PlatformTransactionManager.class);
+ Map<String, PlatformTransactionManager> mapManager = findByTypeWithName(PlatformTransactionManager.class);
if (mapManager == null || mapManager.isEmpty()) {
LOG.trace("No PlatformTransactionManager found in registry.");
} else if (mapManager.size() == 1) {
@@ -93,11 +92,11 @@ public class TransactionErrorHandlerReifier extends DefaultErrorHandlerReifier<T
ObjectHelper.notNull(transactionTemplate, "transactionTemplate", this);
- TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
+ TransactionErrorHandler answer = new TransactionErrorHandler(camelContext, processor,
definition.getLogger(), definition.getOnRedelivery(),
definition.getRedeliveryPolicy(), definition.getExceptionPolicyStrategy(), transactionTemplate,
- definition.getRetryWhilePolicy(routeContext.getCamelContext()),
- getExecutorService(routeContext.getCamelContext()),
+ definition.getRetryWhilePolicy(camelContext),
+ getExecutorService(camelContext),
definition.getRollbackLoggingLevel(), definition.getOnExceptionOccurred());
// configure error handler before we can use it
configure(routeContext, answer);
diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
index fb1ef62..23c80cc 100644
--- a/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
+++ b/components/camel-spring/src/test/java/org/apache/camel/spring/EndpointReferenceTest.java
@@ -25,6 +25,7 @@ import org.apache.camel.impl.engine.DefaultRouteContext;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spring.example.DummyBean;
+import org.apache.camel.support.CamelContextHelper;
import org.junit.Test;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -78,9 +79,8 @@ public class EndpointReferenceTest extends SpringTestSupport {
CamelContext context = applicationContext.getBean("camel2", CamelContext.class);
RouteDefinition route = new RouteDefinition("temporary");
String routeId = route.idOrCreate(context.adapt(ExtendedCamelContext.class).getNodeIdFactory());
- RouteContext routeContext = new DefaultRouteContext(context, route, routeId);
try {
- routeContext.resolveEndpoint(null, "endpoint1");
+ CamelContextHelper.resolveEndpoint(context, null, "endpoint1");
fail("Should have thrown exception");
} catch (NoSuchEndpointException exception) {
assertTrue("Get a wrong exception message", exception.getMessage().contains("make sure the endpoint has the same camel context as the route does"));
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
index 22aa1db..8513863 100644
--- a/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/RouteContext.java
@@ -54,49 +54,6 @@ public interface RouteContext extends RuntimeConfiguration, EndpointAware {
CamelContext getCamelContext();
/**
- * Resolves an endpoint from the URI
- *
- * @param uri the URI
- * @return the resolved endpoint
- */
- Endpoint resolveEndpoint(String uri);
-
- /**
- * Resolves an endpoint from either a URI or a named reference
- *
- * @param uri the URI or
- * @param ref the named reference
- * @return the resolved endpoint
- */
- Endpoint resolveEndpoint(String uri, String ref);
-
- /**
- * lookup an object by name and type
- *
- * @param name the name to lookup
- * @param type the expected type
- * @return the found object
- */
- <T> T lookup(String name, Class<T> type);
-
- /**
- * lookup an object by name and type or throws {@link org.apache.camel.NoSuchBeanException} if not found.
- *
- * @param name the name to lookup
- * @param type the expected type
- * @return the found object
- */
- <T> T mandatoryLookup(String name, Class<T> type);
-
- /**
- * lookup objects by type
- *
- * @param type the expected type
- * @return the found objects with the name as the key in the map. Returns an empty map if none found.
- */
- <T> Map<String, T> lookupByType(Class<T> type);
-
- /**
* For completing the route creation, creating a single event driven route
* for the current from endpoint with any processors required
*/
diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
index 0269c4f..0ee844b 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultRouteContext.java
@@ -29,7 +29,6 @@ import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.ErrorHandlerFactory;
import org.apache.camel.NamedNode;
-import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.RuntimeCamelException;
@@ -44,7 +43,6 @@ import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.RouteController;
import org.apache.camel.spi.RouteError;
import org.apache.camel.spi.RoutePolicy;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.util.ObjectHelper;
/**
@@ -119,68 +117,16 @@ public class DefaultRouteContext implements RouteContext {
}
@Override
- public Endpoint resolveEndpoint(String uri) {
- return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
- }
-
- @Override
- public Endpoint resolveEndpoint(String uri, String ref) {
- Endpoint endpoint = null;
- if (uri != null) {
- endpoint = camelContext.getEndpoint(uri);
- if (endpoint == null) {
- throw new NoSuchEndpointException(uri);
- }
- }
- if (ref != null) {
- endpoint = lookup(ref, Endpoint.class);
- if (endpoint == null) {
- throw new NoSuchEndpointException("ref:" + ref, "check your camel registry with id " + ref);
- }
- // Check the endpoint has the right CamelContext
- if (!this.getCamelContext().equals(endpoint.getCamelContext())) {
- throw new NoSuchEndpointException("ref:" + ref, "make sure the endpoint has the same camel context as the route does.");
- }
- try {
- // need add the endpoint into service
- getCamelContext().addService(endpoint);
- } catch (Exception ex) {
- throw new RuntimeCamelException(ex);
- }
- }
- if (endpoint == null) {
- throw new IllegalArgumentException("Either 'uri' or 'ref' must be specified on: " + this);
- } else {
- return endpoint;
- }
- }
-
- @Override
- public <T> T lookup(String name, Class<T> type) {
- return getCamelContext().getRegistry().lookupByNameAndType(name, type);
- }
-
- @Override
- public <T> Map<String, T> lookupByType(Class<T> type) {
- return getCamelContext().getRegistry().findByTypeWithName(type);
- }
-
- @Override
- public <T> T mandatoryLookup(String name, Class<T> type) {
- return CamelContextHelper.mandatoryLookup(getCamelContext(), name, type);
- }
-
- @Override
public Route commit() {
// now lets turn all of the event driven consumer processors into a single route
if (!eventDrivenProcessors.isEmpty()) {
// always use an pipeline even if there are only 1 processor as the pipeline
// handles preparing the response from the exchange in regard to IN vs OUT messages etc
- Processor target = new Pipeline(getCamelContext(), eventDrivenProcessors);
+ Processor target = new Pipeline(camelContext, eventDrivenProcessors);
// and wrap it in a unit of work so the UoW is on the top, so the entire route will be in the same UoW
- CamelInternalProcessor internal = new CamelInternalProcessor(getCamelContext(), target);
- internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this, getCamelContext()));
+ CamelInternalProcessor internal = new CamelInternalProcessor(camelContext, target);
+ internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(this, camelContext));
// and then optionally add route policy processor if a custom policy is set
List<RoutePolicy> routePolicyList = getRoutePolicyList();
@@ -291,20 +237,20 @@ public class DefaultRouteContext implements RouteContext {
return trace;
} else {
// fallback to the option from camel context
- return getCamelContext().isTracing();
+ return camelContext.isTracing();
}
}
@Override
public String getTracingPattern() {
// can only set this on context level
- return getCamelContext().getTracingPattern();
+ return camelContext.getTracingPattern();
}
@Override
public void setTracingPattern(String tracePattern) {
// can only set this on context level
- getCamelContext().setTracingPattern(tracePattern);
+ camelContext.setTracingPattern(tracePattern);
}
@Override
@@ -318,7 +264,7 @@ public class DefaultRouteContext implements RouteContext {
return backlogTrace;
} else {
// fallback to the option from camel context
- return getCamelContext().isBacklogTracing();
+ return camelContext.isBacklogTracing();
}
}
@@ -333,7 +279,7 @@ public class DefaultRouteContext implements RouteContext {
return debug;
} else {
// fallback to the option from camel context
- return getCamelContext().isDebugging();
+ return camelContext.isDebugging();
}
}
@@ -348,7 +294,7 @@ public class DefaultRouteContext implements RouteContext {
return messageHistory;
} else {
// fallback to the option from camel context
- return getCamelContext().isMessageHistory();
+ return camelContext.isMessageHistory();
}
}
@@ -363,7 +309,7 @@ public class DefaultRouteContext implements RouteContext {
return logMask;
} else {
// fallback to the option from camel context
- return getCamelContext().isLogMask();
+ return camelContext.isLogMask();
}
}
@@ -378,7 +324,7 @@ public class DefaultRouteContext implements RouteContext {
return logExhaustedMessageBody;
} else {
// fallback to the option from camel context
- return getCamelContext().isLogExhaustedMessageBody();
+ return camelContext.isLogExhaustedMessageBody();
}
}
@@ -393,7 +339,7 @@ public class DefaultRouteContext implements RouteContext {
return streamCache;
} else {
// fallback to the option from camel context
- return getCamelContext().isStreamCaching();
+ return camelContext.isStreamCaching();
}
}
@@ -408,7 +354,7 @@ public class DefaultRouteContext implements RouteContext {
return delay;
} else {
// fallback to the option from camel context
- return getCamelContext().getDelayer();
+ return camelContext.getDelayer();
}
}
@@ -454,25 +400,25 @@ public class DefaultRouteContext implements RouteContext {
@Override
public void setAllowUseOriginalMessage(Boolean allowUseOriginalMessage) {
// can only be configured on CamelContext
- getCamelContext().setAllowUseOriginalMessage(allowUseOriginalMessage);
+ camelContext.setAllowUseOriginalMessage(allowUseOriginalMessage);
}
@Override
public Boolean isAllowUseOriginalMessage() {
// can only be configured on CamelContext
- return getCamelContext().isAllowUseOriginalMessage();
+ return camelContext.isAllowUseOriginalMessage();
}
@Override
public Boolean isCaseInsensitiveHeaders() {
// can only be configured on CamelContext
- return getCamelContext().isCaseInsensitiveHeaders();
+ return camelContext.isCaseInsensitiveHeaders();
}
@Override
public void setCaseInsensitiveHeaders(Boolean caseInsensitiveHeaders) {
// can only be configured on CamelContext
- getCamelContext().setCaseInsensitiveHeaders(caseInsensitiveHeaders);
+ camelContext.setCaseInsensitiveHeaders(caseInsensitiveHeaders);
}
@Override
@@ -481,7 +427,7 @@ public class DefaultRouteContext implements RouteContext {
return shutdownRoute;
} else {
// fallback to the option from camel context
- return getCamelContext().getShutdownRoute();
+ return camelContext.getShutdownRoute();
}
}
@@ -496,7 +442,7 @@ public class DefaultRouteContext implements RouteContext {
return shutdownRunningTask;
} else {
// fallback to the option from camel context
- return getCamelContext().getShutdownRunningTask();
+ return camelContext.getShutdownRunningTask();
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
index 4d1b3f5..3fdd549 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.builder;
+import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.ExchangePattern;
import org.apache.camel.LoggingLevel;
@@ -54,10 +55,11 @@ public class DeadLetterChannelBuilder extends DefaultErrorHandlerBuilder {
public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
validateDeadLetterUri(routeContext);
- DeadLetterChannel answer = new DeadLetterChannel(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
+ CamelContext camelContext = routeContext.getCamelContext();
+ DeadLetterChannel answer = new DeadLetterChannel(camelContext, processor, getLogger(), getOnRedelivery(), getRedeliveryPolicy(),
getExceptionPolicyStrategy(), getFailureProcessor(), getDeadLetterUri(), isDeadLetterHandleNewException(),
- isUseOriginalMessage(), isUseOriginalBody(), getRetryWhilePolicy(routeContext.getCamelContext()),
- getExecutorService(routeContext.getCamelContext()), getOnPrepareFailure(), getOnExceptionOccurred());
+ isUseOriginalMessage(), isUseOriginalBody(), getRetryWhilePolicy(camelContext),
+ getExecutorService(camelContext), getOnPrepareFailure(), getOnExceptionOccurred());
// configure error handler before we can use it
configure(routeContext, answer);
return answer;
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
similarity index 67%
copy from core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
copy to core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
index 68b129c..8f111b4 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractPolicyReifier.java
@@ -19,67 +19,37 @@ package org.apache.camel.reifier;
import java.lang.reflect.Method;
import java.util.Map;
+import org.apache.camel.CamelContext;
import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.Processor;
import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.Service;
import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.model.TransactedDefinition;
-import org.apache.camel.processor.WrapProcessor;
import org.apache.camel.spi.Policy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelContextHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.camel.model.TransactedDefinition.PROPAGATION_REQUIRED;
-public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
+public abstract class AbstractPolicyReifier<T extends ProcessorDefinition<?>> extends ProcessorReifier<T> {
private static final Logger LOG = LoggerFactory.getLogger(TransactedReifier.class);
- public TransactedReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
- super(routeContext, (TransactedDefinition) definition);
+ public AbstractPolicyReifier(RouteContext routeContext, T definition) {
+ super(routeContext, definition);
}
- @Override
- public Processor createProcessor() throws Exception {
- Policy policy = resolvePolicy(routeContext);
- org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
-
- // before wrap
- policy.beforeWrap(routeContext, definition);
-
- // create processor after the before wrap
- Processor childProcessor = this.createChildProcessor(true);
-
- // wrap
- Processor target = policy.wrap(routeContext, childProcessor);
-
- if (!(target instanceof Service)) {
- // wrap the target so it becomes a service and we can manage its
- // lifecycle
- target = new WrapProcessor(target, childProcessor);
- }
- return target;
+ public AbstractPolicyReifier(CamelContext camelContext, T definition) {
+ super(camelContext, definition);
}
- protected Policy resolvePolicy(RouteContext routeContext) {
- return resolvePolicy(routeContext, definition);
- }
-
- public static Policy resolvePolicy(RouteContext routeContext, TransactedDefinition definition) {
- if (definition.getPolicy() != null) {
- return definition.getPolicy();
+ public Policy resolvePolicy(Policy policy, String ref, Class<? extends Policy> type) {
+ if (policy != null) {
+ return policy;
}
- return resolvePolicy(routeContext, definition.getRef(), definition.getType());
- }
-
- public static Policy resolvePolicy(RouteContext routeContext, String ref, Class<? extends Policy> type) {
// explicit ref given so lookup by it
if (org.apache.camel.util.ObjectHelper.isNotEmpty(ref)) {
- return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, Policy.class);
+ return mandatoryLookup(ref, Policy.class);
}
// no explicit reference given from user so we can use some convention
@@ -90,7 +60,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
if (type != null) {
// try find by type, note that this method is not supported by all
// registry
- Map<String, ?> types = routeContext.lookupByType(type);
+ Map<String, ?> types = findByTypeWithName(type);
if (types.size() == 1) {
// only one policy defined so use it
Object found = types.values().iterator().next();
@@ -103,18 +73,18 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
// for transacted routing try the default REQUIRED name
if (type == TransactedPolicy.class) {
// still not found try with the default name PROPAGATION_REQUIRED
- answer = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
+ answer = lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
}
// this logic only applies if we are a transacted policy
// still no policy found then try lookup the platform transaction
// manager and use it as policy
if (answer == null && type == TransactedPolicy.class) {
- Class<?> tmClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
+ Class<?> tmClazz = camelContext.getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
if (tmClazz != null) {
// see if we can find the platform transaction manager in the
// registry
- Map<String, ?> maps = routeContext.lookupByType(tmClazz);
+ Map<String, ?> maps = findByTypeWithName(tmClazz);
if (maps.size() == 1) {
// only one platform manager then use it as default and
// create a transacted
@@ -130,7 +100,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
// route building
Object transactionManager = maps.values().iterator().next();
LOG.debug("One instance of PlatformTransactionManager found in registry: {}", transactionManager);
- Class<?> txClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
+ Class<?> txClazz = camelContext.getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
if (txClazz != null) {
LOG.debug("Creating a new temporary SpringTransactionPolicy using the PlatformTransactionManager: {}", transactionManager);
TransactedPolicy txPolicy = org.apache.camel.support.ObjectHelper.newInstance(txClazz, TransactedPolicy.class);
@@ -151,7 +121,7 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
throw new NoSuchBeanException(null, "PlatformTransactionManager");
} else {
throw new IllegalArgumentException("Found " + maps.size() + " PlatformTransactionManager in registry. "
- + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
+ + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
}
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
index 28cbbaa..8e4d9b8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AbstractReifier.java
@@ -16,28 +16,36 @@
*/
package org.apache.camel.reifier;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
import org.apache.camel.Expression;
+import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.Predicate;
import org.apache.camel.model.ExpressionSubElementDefinition;
import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.reifier.language.ExpressionReifier;
+import org.apache.camel.spi.BeanRepository;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.support.CamelContextHelper;
+import org.apache.camel.util.ObjectHelper;
-public abstract class AbstractReifier {
+public abstract class AbstractReifier implements BeanRepository {
protected final RouteContext routeContext;
protected final CamelContext camelContext;
public AbstractReifier(RouteContext routeContext) {
- this.routeContext = routeContext;
+ this.routeContext = ObjectHelper.notNull(routeContext, "RouteContext");
this.camelContext = routeContext.getCamelContext();
}
public AbstractReifier(CamelContext camelContext) {
this.routeContext = null;
- this.camelContext = camelContext;
+ this.camelContext = ObjectHelper.notNull(camelContext, "CamelContext");
}
protected String parseString(String text) {
@@ -115,4 +123,44 @@ public abstract class AbstractReifier {
return s != null ? s.startsWith("#") ? s : "#" + s : null;
}
+ protected BeanRepository getRegistry() {
+ return camelContext.getRegistry();
+ }
+
+ public <T> T mandatoryLookup(String name, Class<T> beanType) {
+ return CamelContextHelper.mandatoryLookup(camelContext, name, beanType);
+ }
+
+ @Override
+ public Object lookupByName(String name) {
+ return getRegistry().lookupByName(name);
+ }
+
+ public <T> T lookup(String name, Class<T> type) {
+ return lookupByNameAndType(name, type);
+ }
+
+ public <T> T lookupByNameAndType(String name, Class<T> type) {
+ return getRegistry().lookupByNameAndType(name, type);
+ }
+
+ @Override
+ public <T> Map<String, T> findByTypeWithName(Class<T> type) {
+ return getRegistry().findByTypeWithName(type);
+ }
+
+ @Override
+ public <T> Set<T> findByType(Class<T> type) {
+ return getRegistry().findByType(type);
+ }
+
+ @Override
+ public Object unwrap(Object value) {
+ return getRegistry().unwrap(value);
+ }
+
+ public Endpoint resolveEndpoint(String uri) throws NoSuchEndpointException {
+ return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
+ }
+
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
index 2703d4d..5f60275 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/AggregateReifier.java
@@ -55,7 +55,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
internal.addAdvice(new CamelInternalProcessor.UnitOfWorkProcessorAdvice(routeContext, camelContext));
Expression correlation = createExpression(definition.getExpression());
- AggregationStrategy strategy = createAggregationStrategy(routeContext);
+ AggregationStrategy strategy = createAggregationStrategy();
boolean parallel = parseBoolean(definition.getParallelProcessing(), false);
boolean shutdownThreadPool = willCreateNewThreadPool(definition, parallel);
@@ -76,7 +76,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
}
if (definition.getAggregateController() == null && definition.getAggregateControllerRef() != null) {
- definition.setAggregateController(routeContext.mandatoryLookup(definition.getAggregateControllerRef(), AggregateController.class));
+ definition.setAggregateController(mandatoryLookup(definition.getAggregateControllerRef(), AggregateController.class));
}
// this EIP supports using a shared timeout checker thread pool or
@@ -85,7 +85,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
ScheduledExecutorService timeoutThreadPool = definition.getTimeoutCheckerExecutorService();
if (timeoutThreadPool == null && definition.getTimeoutCheckerExecutorServiceRef() != null) {
// lookup existing thread pool
- timeoutThreadPool = routeContext.lookup(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
+ timeoutThreadPool = lookup(definition.getTimeoutCheckerExecutorServiceRef(), ScheduledExecutorService.class);
if (timeoutThreadPool == null) {
// then create a thread pool assuming the ref is a thread pool
// profile id
@@ -214,10 +214,10 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
return policy;
}
- private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+ private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+ Object aggStrategy = lookup(definition.getStrategyRef(), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
@@ -246,7 +246,7 @@ public class AggregateReifier extends ProcessorReifier<AggregateDefinition> {
private AggregationRepository createAggregationRepository(RouteContext routeContext) {
AggregationRepository repository = definition.getAggregationRepository();
if (repository == null && definition.getAggregationRepositoryRef() != null) {
- repository = routeContext.mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
+ repository = mandatoryLookup(definition.getAggregationRepositoryRef(), AggregationRepository.class);
}
return repository;
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
index bde4a0c..f725bc7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ClaimCheckReifier.java
@@ -44,7 +44,7 @@ public class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
claim.setKey(parseString(definition.getKey()));
claim.setFilter(parseString(definition.getFilter()));
- AggregationStrategy strategy = createAggregationStrategy(routeContext);
+ AggregationStrategy strategy = createAggregationStrategy();
if (strategy != null) {
claim.setAggregationStrategy(strategy);
}
@@ -102,10 +102,10 @@ public class ClaimCheckReifier extends ProcessorReifier<ClaimCheckDefinition> {
return claim;
}
- private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+ private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getAggregationStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
+ Object aggStrategy = lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
index 109ffc1..7dd0d53 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/EnrichReifier.java
@@ -58,7 +58,7 @@ public class EnrichReifier extends ExpressionReifier<EnrichDefinition> {
private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getAggregationStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(definition.getAggregationStrategyRef(), Object.class);
+ Object aggStrategy = lookup(definition.getAggregationStrategyRef(), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
index 693f092..ea01951 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/IdempotentConsumerReifier.java
@@ -60,7 +60,7 @@ public class IdempotentConsumerReifier extends ExpressionReifier<IdempotentConsu
*/
protected <T> IdempotentRepository resolveMessageIdRepository(RouteContext routeContext) {
if (definition.getMessageIdRepositoryRef() != null) {
- definition.setMessageIdRepository(routeContext.mandatoryLookup(parseString(definition.getMessageIdRepositoryRef()), IdempotentRepository.class));
+ definition.setMessageIdRepository(mandatoryLookup(parseString(definition.getMessageIdRepositoryRef()), IdempotentRepository.class));
}
return definition.getMessageIdRepository();
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
index 71a6d5c..7aa69a8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/LogReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.LogProcessor;
import org.apache.camel.spi.CamelLogger;
import org.apache.camel.spi.MaskingFormatter;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.processor.DefaultMaskingFormatter;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
@@ -54,13 +53,13 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
// get logger which may be set in XML definition
if (logger == null && ObjectHelper.isNotEmpty(definition.getLoggerRef())) {
- logger = CamelContextHelper.mandatoryLookup(camelContext, definition.getLoggerRef(), Logger.class);
+ logger = mandatoryLookup(definition.getLoggerRef(), Logger.class);
}
if (logger == null) {
// first - try to lookup single instance in the registry, just like
// LogComponent
- Map<String, Logger> availableLoggers = routeContext.lookupByType(Logger.class);
+ Map<String, Logger> availableLoggers = findByTypeWithName(Logger.class);
if (availableLoggers.size() == 1) {
logger = availableLoggers.values().iterator().next();
log.debug("Using custom Logger: {}", logger);
@@ -89,12 +88,12 @@ public class LogReifier extends ProcessorReifier<LogDefinition> {
LoggingLevel level = definition.getLoggingLevel() != null ? parse(LoggingLevel.class, definition.getLoggingLevel()) : LoggingLevel.INFO;
CamelLogger camelLogger = new CamelLogger(logger, level, definition.getMarker());
- return new LogProcessor(exp, camelLogger, getMaskingFormatter(routeContext), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
+ return new LogProcessor(exp, camelLogger, getMaskingFormatter(), camelContext.adapt(ExtendedCamelContext.class).getLogListeners());
}
- private MaskingFormatter getMaskingFormatter(RouteContext routeContext) {
+ private MaskingFormatter getMaskingFormatter() {
if (routeContext.isLogMask()) {
- MaskingFormatter formatter = routeContext.lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
+ MaskingFormatter formatter = lookup(MaskingFormatter.CUSTOM_LOG_MASK_REF, MaskingFormatter.class);
if (formatter == null) {
formatter = new DefaultMaskingFormatter();
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
index 1c57ed3..c4a689d 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/MulticastReifier.java
@@ -30,7 +30,6 @@ import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
@@ -71,7 +70,7 @@ public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
}
if (definition.getOnPrepareRef() != null) {
- definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, definition.getOnPrepareRef(), Processor.class));
+ definition.setOnPrepare(mandatoryLookup(definition.getOnPrepareRef(), Processor.class));
}
MulticastProcessor answer = new MulticastProcessor(camelContext, list, strategy, isParallelProcessing, threadPool, shutdownThreadPool, isStreaming,
@@ -83,7 +82,7 @@ public class MulticastReifier extends ProcessorReifier<MulticastDefinition> {
private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(parseString(definition.getStrategyRef()), Object.class);
+ Object aggStrategy = lookup(parseString(definition.getStrategyRef()), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
index a96db82..de5b2ec 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PolicyReifier.java
@@ -25,7 +25,7 @@ import org.apache.camel.spi.Policy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.ObjectHelper;
-public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
+public class PolicyReifier extends AbstractPolicyReifier<PolicyDefinition> {
public PolicyReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
super(routeContext, (PolicyDefinition) definition);
@@ -33,7 +33,7 @@ public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
@Override
public Processor createProcessor() throws Exception {
- Policy policy = resolvePolicy(routeContext);
+ Policy policy = resolvePolicy();
ObjectHelper.notNull(policy, "policy", definition);
// before wrap
@@ -53,12 +53,8 @@ public class PolicyReifier extends ProcessorReifier<PolicyDefinition> {
return target;
}
- protected Policy resolvePolicy(RouteContext routeContext) {
- if (definition.getPolicy() != null) {
- return definition.getPolicy();
- }
- // reuse code on transacted definition to do the resolution
- return TransactedReifier.resolvePolicy(routeContext, definition.getRef(), definition.getType());
+ protected Policy resolvePolicy() {
+ return resolvePolicy(definition.getPolicy(), definition.getRef(), definition.getType());
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
index ed1123b..b885cfa 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/PollEnrichReifier.java
@@ -62,7 +62,7 @@ public class PollEnrichReifier extends ProcessorReifier<PollEnrichDefinition> {
private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getAggregationStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
+ Object aggStrategy = lookup(parseString(definition.getAggregationStrategyRef()), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
index 2841268..9ad3c5c 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessReifier.java
@@ -37,7 +37,7 @@ public class ProcessReifier extends ProcessorReifier<ProcessDefinition> {
Processor answer = definition.getProcessor();
if (answer == null) {
ObjectHelper.notNull(definition.getRef(), "ref", definition);
- answer = routeContext.mandatoryLookup(definition.getRef(), Processor.class);
+ answer = mandatoryLookup(definition.getRef(), Processor.class);
}
// ensure its wrapped in a Service so we can manage it from eg. JMX
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index ac898c7..68e6caf 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -111,7 +111,6 @@ import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.ReifierStrategy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.spi.RouteIdAware;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -243,7 +242,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
// no there is a custom thread pool configured
return false;
} else if (definition.getExecutorServiceRef() != null) {
- ExecutorService answer = routeContext.lookup(definition.getExecutorServiceRef(), ExecutorService.class);
+ ExecutorService answer = lookup(definition.getExecutorServiceRef(), ExecutorService.class);
// if no existing thread pool, then we will have to create a new
// thread pool
return answer == null;
@@ -384,12 +383,12 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
*/
public ScheduledExecutorService lookupScheduledExecutorServiceRef(String name, Object source, String executorServiceRef) {
- ExecutorServiceManager manager = routeContext.getCamelContext().getExecutorServiceManager();
- ObjectHelper.notNull(manager, "ExecutorServiceManager", routeContext.getCamelContext());
+ ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
+ ObjectHelper.notNull(manager, "ExecutorServiceManager", camelContext);
ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
// lookup in registry first and use existing thread pool if exists
- ScheduledExecutorService answer = routeContext.lookup(executorServiceRef, ScheduledExecutorService.class);
+ ScheduledExecutorService answer = lookup(executorServiceRef, ScheduledExecutorService.class);
if (answer == null) {
// then create a thread pool assuming the ref is a thread pool
// profile id
@@ -425,7 +424,7 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
ObjectHelper.notNull(executorServiceRef, "executorServiceRef");
// lookup in registry first and use existing thread pool if exists
- ExecutorService answer = routeContext.lookup(executorServiceRef, ExecutorService.class);
+ ExecutorService answer = lookup(executorServiceRef, ExecutorService.class);
if (answer == null) {
// then create a thread pool assuming the ref is a thread pool
// profile id
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
index e1602f3..81aac98 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RecipientListReifier.java
@@ -27,13 +27,11 @@ import org.apache.camel.Processor;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.RecipientListDefinition;
import org.apache.camel.processor.EvaluateExpressionProcessor;
-import org.apache.camel.processor.Pipeline;
import org.apache.camel.processor.RecipientList;
import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
public class RecipientListReifier extends ProcessorReifier<RecipientListDefinition<?>> {
@@ -59,7 +57,7 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
} else {
answer = new RecipientList(camelContext, expression);
}
- answer.setAggregationStrategy(createAggregationStrategy(routeContext));
+ answer.setAggregationStrategy(createAggregationStrategy());
answer.setParallelProcessing(isParallelProcessing);
answer.setParallelAggregate(isParallelAggregate);
answer.setStreaming(isStreaming);
@@ -71,7 +69,7 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
answer.setCacheSize(parseInt(definition.getCacheSize()));
}
if (definition.getOnPrepareRef() != null) {
- definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, definition.getOnPrepareRef(), Processor.class));
+ definition.setOnPrepare(mandatoryLookup(definition.getOnPrepareRef(), Processor.class));
}
if (definition.getOnPrepare() != null) {
answer.setOnPrepare(definition.getOnPrepare());
@@ -110,10 +108,10 @@ public class RecipientListReifier extends ProcessorReifier<RecipientListDefiniti
return answer.newPipeline(camelContext, pipe);
}
- private AggregationStrategy createAggregationStrategy(RouteContext routeContext) {
+ private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(parseString(definition.getStrategyRef()), Object.class);
+ Object aggStrategy = lookup(parseString(definition.getStrategyRef()), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
index 882a581..2d8e4e5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ResequenceReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.StreamResequencer;
import org.apache.camel.processor.resequencer.DefaultExchangeComparator;
import org.apache.camel.processor.resequencer.ExpressionResultComparator;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.util.ObjectHelper;
public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
@@ -117,7 +116,7 @@ public class ResequenceReifier extends ProcessorReifier<ResequenceDefinition> {
ExpressionResultComparator comparator;
if (config.getComparatorRef() != null) {
- comparator = CamelContextHelper.mandatoryLookup(camelContext, config.getComparatorRef(), ExpressionResultComparator.class);
+ comparator = mandatoryLookup(config.getComparatorRef(), ExpressionResultComparator.class);
} else {
comparator = config.getComparator();
if (comparator == null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
index 283fce8..7b5b098 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -109,7 +109,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
public Route createRoute() {
try {
- return doCreateRoute(camelContext, routeContext);
+ return doCreateRoute();
} catch (FailedToCreateRouteException e) {
throw e;
} catch (Exception e) {
@@ -119,11 +119,6 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
}
}
- public Endpoint resolveEndpoint(String uri) throws NoSuchEndpointException {
- ObjectHelper.notNull(camelContext, "CamelContext");
- return CamelContextHelper.getMandatoryEndpoint(camelContext, uri);
- }
-
/**
* Advices this route with the route builder.
* <p/>
@@ -243,13 +238,13 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
// Implementation methods
// -------------------------------------------------------------------------
- protected Route doCreateRoute(CamelContext camelContext, RouteContext routeContext) throws Exception {
+ protected Route doCreateRoute() throws Exception {
// configure error handler
routeContext.setErrorHandlerFactory(definition.getErrorHandlerFactory());
// configure tracing
if (definition.getTrace() != null) {
- Boolean isTrace = CamelContextHelper.parseBoolean(camelContext, definition.getTrace());
+ Boolean isTrace = parseBoolean(definition.getTrace());
if (isTrace != null) {
routeContext.setTracing(isTrace);
if (isTrace) {
@@ -262,7 +257,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
// configure message history
if (definition.getMessageHistory() != null) {
- Boolean isMessageHistory = CamelContextHelper.parseBoolean(camelContext, definition.getMessageHistory());
+ Boolean isMessageHistory = parseBoolean(definition.getMessageHistory());
if (isMessageHistory != null) {
routeContext.setMessageHistory(isMessageHistory);
if (isMessageHistory) {
@@ -273,7 +268,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
// configure Log EIP mask
if (definition.getLogMask() != null) {
- Boolean isLogMask = CamelContextHelper.parseBoolean(camelContext, definition.getLogMask());
+ Boolean isLogMask = parseBoolean(definition.getLogMask());
if (isLogMask != null) {
routeContext.setLogMask(isLogMask);
if (isLogMask) {
@@ -284,7 +279,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
// configure stream caching
if (definition.getStreamCache() != null) {
- Boolean isStreamCache = CamelContextHelper.parseBoolean(camelContext, definition.getStreamCache());
+ Boolean isStreamCache = parseBoolean(definition.getStreamCache());
if (isStreamCache != null) {
routeContext.setStreamCaching(isStreamCache);
if (isStreamCache) {
@@ -295,7 +290,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
// configure delayer
if (definition.getDelayer() != null) {
- Long delayer = CamelContextHelper.parseLong(camelContext, definition.getDelayer());
+ Long delayer = parseLong(definition.getDelayer());
if (delayer != null) {
routeContext.setDelayer(delayer);
if (delayer > 0) {
@@ -317,7 +312,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
StringTokenizer policyTokens = new StringTokenizer(definition.getRoutePolicyRef(), ",");
while (policyTokens.hasMoreTokens()) {
String ref = policyTokens.nextToken().trim();
- RoutePolicy policy = CamelContextHelper.mandatoryLookup(camelContext, ref, RoutePolicy.class);
+ RoutePolicy policy = mandatoryLookup(ref, RoutePolicy.class);
log.debug("RoutePolicy is enabled: {} on route: {}", policy, definition.getId());
routeContext.getRoutePolicyList().add(policy);
}
@@ -333,7 +328,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
}
// configure auto startup
- Boolean isAutoStartup = CamelContextHelper.parseBoolean(camelContext, definition.getAutoStartup());
+ Boolean isAutoStartup = parseBoolean(definition.getAutoStartup());
if (isAutoStartup != null) {
log.debug("Using AutoStartup {} on route: {}", isAutoStartup, definition.getId());
routeContext.setAutoStartup(isAutoStartup);
@@ -364,7 +359,7 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
if (def != null) {
endpoint = def.resolve(camelContext);
} else {
- endpoint = routeContext.resolveEndpoint(definition.getInput().getEndpointUri());
+ endpoint = resolveEndpoint(definition.getInput().getEndpointUri());
}
}
routeContext.setEndpoint(endpoint);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
index 1baa76b..a6ce8b1 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SagaReifier.java
@@ -45,9 +45,13 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
@Override
public Processor createProcessor() throws Exception {
- Optional<Endpoint> compensationEndpoint = Optional.ofNullable(definition.getCompensation()).map(SagaActionUriDefinition::getUri).map(routeContext::resolveEndpoint);
+ Optional<Endpoint> compensationEndpoint = Optional.ofNullable(definition.getCompensation())
+ .map(SagaActionUriDefinition::getUri)
+ .map(this::resolveEndpoint);
- Optional<Endpoint> completionEndpoint = Optional.ofNullable(definition.getCompletion()).map(SagaActionUriDefinition::getUri).map(routeContext::resolveEndpoint);
+ Optional<Endpoint> completionEndpoint = Optional.ofNullable(definition.getCompletion())
+ .map(SagaActionUriDefinition::getUri)
+ .map(this::resolveEndpoint);
Map<String, Expression> optionsMap = new TreeMap<>();
if (definition.getOptions() != null) {
@@ -90,7 +94,7 @@ public class SagaReifier extends ProcessorReifier<SagaDefinition> {
}
if (definition.getSagaServiceRef() != null) {
- return CamelContextHelper.mandatoryLookup(context, parseString(definition.getSagaServiceRef()), CamelSagaService.class);
+ return mandatoryLookup(parseString(definition.getSagaServiceRef()), CamelSagaService.class);
}
sagaService = context.hasService(CamelSagaService.class);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
index 583cefa..09a9ea5 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SendReifier.java
@@ -23,6 +23,7 @@ import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.SendDefinition;
import org.apache.camel.processor.SendProcessor;
import org.apache.camel.spi.RouteContext;
+import org.apache.camel.support.CamelContextHelper;
public class SendReifier extends ProcessorReifier<SendDefinition<?>> {
@@ -32,16 +33,16 @@ public class SendReifier extends ProcessorReifier<SendDefinition<?>> {
@Override
public Processor createProcessor() throws Exception {
- Endpoint endpoint = resolveEndpoint(routeContext);
+ Endpoint endpoint = resolveEndpoint();
return new SendProcessor(endpoint, parse(ExchangePattern.class, definition.getPattern()));
}
- public Endpoint resolveEndpoint(RouteContext context) {
+ public Endpoint resolveEndpoint() {
if (definition.getEndpoint() == null) {
if (definition.getEndpointProducerBuilder() == null) {
- return context.resolveEndpoint(definition.getEndpointUri(), (String)null);
+ return CamelContextHelper.resolveEndpoint(camelContext, definition.getEndpointUri(), (String)null);
} else {
- return definition.getEndpointProducerBuilder().resolve(context.getCamelContext());
+ return definition.getEndpointProducerBuilder().resolve(camelContext);
}
} else {
return definition.getEndpoint();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
index ae5b053..dc3bc07 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SortReifier.java
@@ -40,7 +40,7 @@ public class SortReifier<T, U extends SortDefinition<T>> extends ExpressionReifi
public Processor createProcessor() throws Exception {
// lookup in registry
if (isNotEmpty(definition.getComparatorRef())) {
- definition.setComparator(routeContext.lookup(parseString(definition.getComparatorRef()), Comparator.class));
+ definition.setComparator(lookup(parseString(definition.getComparatorRef()), Comparator.class));
}
// if no comparator then default on to string representation
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
index 54e1997..4c4e592 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/SplitReifier.java
@@ -28,7 +28,6 @@ import org.apache.camel.processor.Splitter;
import org.apache.camel.processor.aggregate.AggregationStrategyBeanAdapter;
import org.apache.camel.processor.aggregate.ShareUnitOfWorkAggregationStrategy;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
public class SplitReifier extends ExpressionReifier<SplitDefinition> {
@@ -55,7 +54,7 @@ public class SplitReifier extends ExpressionReifier<SplitDefinition> {
throw new IllegalArgumentException("Timeout is used but ParallelProcessing has not been enabled.");
}
if (definition.getOnPrepareRef() != null) {
- definition.setOnPrepare(CamelContextHelper.mandatoryLookup(camelContext, parseString(definition.getOnPrepareRef()), Processor.class));
+ definition.setOnPrepare(mandatoryLookup(parseString(definition.getOnPrepareRef()), Processor.class));
}
Expression exp = createExpression(definition.getExpression());
@@ -69,7 +68,7 @@ public class SplitReifier extends ExpressionReifier<SplitDefinition> {
private AggregationStrategy createAggregationStrategy() {
AggregationStrategy strategy = definition.getAggregationStrategy();
if (strategy == null && definition.getStrategyRef() != null) {
- Object aggStrategy = routeContext.lookup(definition.getStrategyRef(), Object.class);
+ Object aggStrategy = lookup(definition.getStrategyRef(), Object.class);
if (aggStrategy instanceof AggregationStrategy) {
strategy = (AggregationStrategy)aggStrategy;
} else if (aggStrategy != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
index 928ca52..efd6c35 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ThrowExceptionReifier.java
@@ -17,7 +17,6 @@
package org.apache.camel.reifier;
import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.ThrowExceptionDefinition;
import org.apache.camel.processor.ThrowExceptionProcessor;
@@ -33,7 +32,7 @@ public class ThrowExceptionReifier extends ProcessorReifier<ThrowExceptionDefini
public Processor createProcessor() {
Exception exception = definition.getException();
if (exception == null && definition.getRef() != null) {
- exception = routeContext.lookup(parseString(definition.getRef()), Exception.class);
+ exception = lookup(parseString(definition.getRef()), Exception.class);
}
Class<? extends Exception> exceptionClass = definition.getExceptionClass();
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
index 68b129c..3750a8e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/TransactedReifier.java
@@ -16,36 +16,28 @@
*/
package org.apache.camel.reifier;
-import java.lang.reflect.Method;
-import java.util.Map;
-
-import org.apache.camel.NoSuchBeanException;
+import org.apache.camel.CamelContext;
import org.apache.camel.Processor;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.Service;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.TransactedDefinition;
import org.apache.camel.processor.WrapProcessor;
import org.apache.camel.spi.Policy;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.spi.TransactedPolicy;
-import org.apache.camel.support.CamelContextHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.apache.camel.model.TransactedDefinition.PROPAGATION_REQUIRED;
-
-public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
- private static final Logger LOG = LoggerFactory.getLogger(TransactedReifier.class);
+public class TransactedReifier extends AbstractPolicyReifier<TransactedDefinition> {
public TransactedReifier(RouteContext routeContext, ProcessorDefinition<?> definition) {
super(routeContext, (TransactedDefinition) definition);
}
+ public TransactedReifier(CamelContext camelContext, ProcessorDefinition<?> definition) {
+ super(camelContext, (TransactedDefinition) definition);
+ }
+
@Override
public Processor createProcessor() throws Exception {
- Policy policy = resolvePolicy(routeContext);
+ Policy policy = resolvePolicy();
org.apache.camel.util.ObjectHelper.notNull(policy, "policy", this);
// before wrap
@@ -65,98 +57,8 @@ public class TransactedReifier extends ProcessorReifier<TransactedDefinition> {
return target;
}
- protected Policy resolvePolicy(RouteContext routeContext) {
- return resolvePolicy(routeContext, definition);
+ public Policy resolvePolicy() {
+ return resolvePolicy(definition.getPolicy(), definition.getRef(), definition.getType());
}
- public static Policy resolvePolicy(RouteContext routeContext, TransactedDefinition definition) {
- if (definition.getPolicy() != null) {
- return definition.getPolicy();
- }
- return resolvePolicy(routeContext, definition.getRef(), definition.getType());
- }
-
- public static Policy resolvePolicy(RouteContext routeContext, String ref, Class<? extends Policy> type) {
- // explicit ref given so lookup by it
- if (org.apache.camel.util.ObjectHelper.isNotEmpty(ref)) {
- return CamelContextHelper.mandatoryLookup(routeContext.getCamelContext(), ref, Policy.class);
- }
-
- // no explicit reference given from user so we can use some convention
- // over configuration here
-
- // try to lookup by scoped type
- Policy answer = null;
- if (type != null) {
- // try find by type, note that this method is not supported by all
- // registry
- Map<String, ?> types = routeContext.lookupByType(type);
- if (types.size() == 1) {
- // only one policy defined so use it
- Object found = types.values().iterator().next();
- if (type.isInstance(found)) {
- return type.cast(found);
- }
- }
- }
-
- // for transacted routing try the default REQUIRED name
- if (type == TransactedPolicy.class) {
- // still not found try with the default name PROPAGATION_REQUIRED
- answer = routeContext.lookup(PROPAGATION_REQUIRED, TransactedPolicy.class);
- }
-
- // this logic only applies if we are a transacted policy
- // still no policy found then try lookup the platform transaction
- // manager and use it as policy
- if (answer == null && type == TransactedPolicy.class) {
- Class<?> tmClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.springframework.transaction.PlatformTransactionManager");
- if (tmClazz != null) {
- // see if we can find the platform transaction manager in the
- // registry
- Map<String, ?> maps = routeContext.lookupByType(tmClazz);
- if (maps.size() == 1) {
- // only one platform manager then use it as default and
- // create a transacted
- // policy with it and default to required
-
- // as we do not want dependency on spring jars in the
- // camel-core we use
- // reflection to lookup classes and create new objects and
- // call methods
- // as this is only done during route building it does not
- // matter that we
- // use reflection as performance is no a concern during
- // route building
- Object transactionManager = maps.values().iterator().next();
- LOG.debug("One instance of PlatformTransactionManager found in registry: {}", transactionManager);
- Class<?> txClazz = routeContext.getCamelContext().getClassResolver().resolveClass("org.apache.camel.spring.spi.SpringTransactionPolicy");
- if (txClazz != null) {
- LOG.debug("Creating a new temporary SpringTransactionPolicy using the PlatformTransactionManager: {}", transactionManager);
- TransactedPolicy txPolicy = org.apache.camel.support.ObjectHelper.newInstance(txClazz, TransactedPolicy.class);
- Method method;
- try {
- method = txClazz.getMethod("setTransactionManager", tmClazz);
- } catch (NoSuchMethodException e) {
- throw new RuntimeCamelException("Cannot get method setTransactionManager(PlatformTransactionManager) on class: " + txClazz);
- }
- org.apache.camel.support.ObjectHelper.invokeMethod(method, txPolicy, transactionManager);
- return txPolicy;
- } else {
- // camel-spring is missing on the classpath
- throw new RuntimeCamelException("Cannot create a transacted policy as camel-spring.jar is not on the classpath!");
- }
- } else {
- if (maps.isEmpty()) {
- throw new NoSuchBeanException(null, "PlatformTransactionManager");
- } else {
- throw new IllegalArgumentException("Found " + maps.size() + " PlatformTransactionManager in registry. "
- + "Cannot determine which one to use. Please configure a TransactionTemplate on the transacted policy.");
- }
- }
- }
- }
-
- return answer;
- }
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
index 2c40e1d..8edaae7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/WireTapReifier.java
@@ -29,7 +29,6 @@ import org.apache.camel.processor.CamelInternalProcessor;
import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.processor.WireTapProcessor;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
@@ -66,7 +65,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
answer.setCopy(isCopy);
Processor newExchangeProcessor = definition.getNewExchangeProcessor();
if (definition.getNewExchangeProcessorRef() != null) {
- newExchangeProcessor = routeContext.mandatoryLookup(parseString(definition.getNewExchangeProcessorRef()), Processor.class);
+ newExchangeProcessor = mandatoryLookup(parseString(definition.getNewExchangeProcessorRef()), Processor.class);
}
if (newExchangeProcessor != null) {
answer.addNewExchangeProcessor(newExchangeProcessor);
@@ -82,7 +81,7 @@ public class WireTapReifier extends ToDynamicReifier<WireTapDefinition<?>> {
}
Processor onPrepare = definition.getOnPrepare();
if (definition.getOnPrepareRef() != null) {
- onPrepare = CamelContextHelper.mandatoryLookup(camelContext, parseString(definition.getOnPrepareRef()), Processor.class);
+ onPrepare = mandatoryLookup(parseString(definition.getOnPrepareRef()), Processor.class);
}
if (onPrepare != null) {
answer.setOnPrepare(onPrepare);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
index 792c85c..a3c2712 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/dataformat/DataFormatReifier.java
@@ -75,6 +75,7 @@ import org.apache.camel.spi.DataFormatContentTypeHeader;
import org.apache.camel.spi.PropertyConfigurer;
import org.apache.camel.spi.PropertyConfigurerAware;
import org.apache.camel.spi.ReifierStrategy;
+import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.PropertyBindingSupport;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
@@ -163,7 +164,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
if (type == null) {
ObjectHelper.notNull(ref, "ref or type");
- DataFormat dataFormat = camelContext.getRegistry().lookupByNameAndType(ref, DataFormat.class);
+ DataFormat dataFormat = CamelContextHelper.lookup(camelContext, ref, DataFormat.class);
if (dataFormat != null) {
return dataFormat;
}
@@ -264,7 +265,7 @@ public abstract class DataFormatReifier<T extends DataFormatDefinition> extends
}
if (configurer == null) {
final String configurerName = name + "-dataformat-configurer";
- configurer = camelContext.getRegistry().lookupByNameAndType(configurerName, PropertyConfigurer.class);
+ configurer = lookup(configurerName, PropertyConfigurer.class);
if (LOG.isDebugEnabled() && configurer != null) {
LOG.debug("Discovered dataformat property configurer using the Camel registry: {} -> {}", configurerName, configurer);
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
index 30262b5..7235574 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/DefaultErrorHandlerReifier.java
@@ -51,7 +51,7 @@ public class DefaultErrorHandlerReifier<T extends DefaultErrorHandlerBuilder> ex
// camel context will shutdown the executor when it shutdown so no
// need to shut it down when stopping
if (executorServiceRef != null) {
- executorService = camelContext.getRegistry().lookupByNameAndType(executorServiceRef, ScheduledExecutorService.class);
+ executorService = lookup(executorServiceRef, ScheduledExecutorService.class);
if (executorService == null) {
ExecutorServiceManager manager = camelContext.getExecutorServiceManager();
ThreadPoolProfile profile = manager.getThreadPoolProfile(executorServiceRef);
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
index c190132..0d6f3d7 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/errorhandler/ErrorHandlerReifier.java
@@ -184,6 +184,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
*/
public static ErrorHandlerFactory lookupErrorHandlerFactory(RouteContext routeContext, String ref, boolean mandatory) {
ErrorHandlerFactory answer;
+ CamelContext camelContext = routeContext.getCamelContext();
// if the ref is the default then we do not have any explicit error
// handler configured
@@ -204,7 +205,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
// the other has also no explicit error handler configured
// then fallback to the handler
// configured on the parent camel context
- answer = lookupErrorHandlerFactory(routeContext.getCamelContext());
+ answer = lookupErrorHandlerFactory(camelContext);
}
if (answer == null) {
// the other has also no explicit error handler configured
@@ -222,9 +223,9 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
} else {
// use specific configured error handler
if (mandatory) {
- answer = routeContext.mandatoryLookup(ref, ErrorHandlerBuilder.class);
+ answer = CamelContextHelper.mandatoryLookup(camelContext, ref, ErrorHandlerBuilder.class);
} else {
- answer = routeContext.lookup(ref, ErrorHandlerBuilder.class);
+ answer = CamelContextHelper.lookup(camelContext, ref, ErrorHandlerBuilder.class);
}
}
@@ -237,7 +238,7 @@ public abstract class ErrorHandlerReifier<T extends ErrorHandlerBuilderSupport>
ErrorHandlerBuilderRef other = (ErrorHandlerBuilderRef)answer;
String otherRef = other.getRef();
if (isErrorHandlerFactoryConfigured(otherRef)) {
- answer = camelContext.getRegistry().lookupByNameAndType(otherRef, ErrorHandlerBuilder.class);
+ answer = CamelContextHelper.lookup(camelContext, otherRef, ErrorHandlerBuilder.class);
if (answer == null) {
throw new IllegalArgumentException("ErrorHandlerBuilder with id " + otherRef + " not found in registry.");
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
index cba3d83..fa13084 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/loadbalancer/CustomLoadBalancerReifier.java
@@ -20,7 +20,6 @@ import org.apache.camel.model.LoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
import org.apache.camel.processor.loadbalancer.LoadBalancer;
import org.apache.camel.spi.RouteContext;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.util.StringHelper;
public class CustomLoadBalancerReifier extends LoadBalancerReifier<CustomLoadBalancerDefinition> {
@@ -35,7 +34,7 @@ public class CustomLoadBalancerReifier extends LoadBalancerReifier<CustomLoadBal
return definition.getCustomLoadBalancer();
}
StringHelper.notEmpty(definition.getRef(), "ref", this);
- return CamelContextHelper.mandatoryLookup(camelContext, definition.getRef(), LoadBalancer.class);
+ return mandatoryLookup(definition.getRef(), LoadBalancer.class);
}
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
index 850226a..7c00ba8 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/rest/RestBindingReifier.java
@@ -79,7 +79,7 @@ public class RestBindingReifier extends AbstractReifier {
String name = config.getJsonDataFormat();
if (name != null) {
// must only be a name, not refer to an existing instance
- Object instance = camelContext.getRegistry().lookupByName(name);
+ Object instance = lookupByName(name);
if (instance != null) {
throw new IllegalArgumentException("JsonDataFormat name: " + name + " must not be an existing bean instance from the registry");
}
@@ -103,7 +103,7 @@ public class RestBindingReifier extends AbstractReifier {
String name = config.getXmlDataFormat();
if (name != null) {
// must only be a name, not refer to an existing instance
- Object instance = camelContext.getRegistry().lookupByName(name);
+ Object instance = lookupByName(name);
if (instance != null) {
throw new IllegalArgumentException("XmlDataFormat name: " + name + " must not be an existing bean instance from the registry");
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
index 9069623..87f2f78 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/CustomTransformeReifier.java
@@ -34,7 +34,7 @@ public class CustomTransformeReifier extends TransformerReifier<CustomTransforme
}
Transformer transformer;
if (definition.getRef() != null) {
- transformer = camelContext.getRegistry().lookupByNameAndType(parseString(definition.getRef()), Transformer.class);
+ transformer = lookup(parseString(definition.getRef()), Transformer.class);
if (transformer == null) {
throw new IllegalArgumentException("Cannot find transformer with ref:" + definition.getRef());
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
index 6304a2c..27ff407 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/transformer/EndpointTransformeReifier.java
@@ -34,7 +34,7 @@ public class EndpointTransformeReifier extends TransformerReifier<EndpointTransf
@Override
protected Transformer doCreateTransformer() {
Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri())
- : camelContext.getRegistry().lookupByNameAndType(parseString(definition.getRef()), Endpoint.class);
+ : lookup(parseString(definition.getRef()), Endpoint.class);
SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
return new ProcessorTransformer(camelContext).setProcessor(processor)
.setModel(parseString(definition.getScheme()))
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
index bca3380..4510212 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/CustomValidatorReifier.java
@@ -34,7 +34,7 @@ public class CustomValidatorReifier extends ValidatorReifier<CustomValidatorDefi
}
Validator validator;
if (definition.getRef() != null) {
- validator = camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Validator.class);
+ validator = lookup(definition.getRef(), Validator.class);
if (validator == null) {
throw new IllegalArgumentException("Cannot find validator with ref:" + definition.getRef());
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
index 7652bce..c3e8bf6 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/validator/EndpointValidatorReifier.java
@@ -33,7 +33,7 @@ public class EndpointValidatorReifier extends ValidatorReifier<EndpointValidator
@Override
protected Validator doCreateValidator() {
- Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri()) : camelContext.getRegistry().lookupByNameAndType(definition.getRef(), Endpoint.class);
+ Endpoint endpoint = definition.getUri() != null ? camelContext.getEndpoint(definition.getUri()) : lookup(definition.getRef(), Endpoint.class);
SendProcessor processor = new SendProcessor(endpoint, ExchangePattern.InOut);
return new ProcessorValidator(camelContext).setProcessor(processor).setType(definition.getType());
}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
index 08f1b46..20589ee 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/CamelContextHelper.java
@@ -16,11 +16,9 @@
*/
package org.apache.camel.support;
-import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.function.Function;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
@@ -31,6 +29,7 @@ import org.apache.camel.NoSuchBeanException;
import org.apache.camel.NoSuchEndpointException;
import org.apache.camel.NoTypeConversionAvailableException;
import org.apache.camel.spi.NormalizedEndpointUri;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.spi.RouteStartupOrder;
import org.apache.camel.util.ObjectHelper;
@@ -117,6 +116,37 @@ public final class CamelContextHelper {
return ObjectHelper.cast(type, endpoint);
}
+ public static Endpoint resolveEndpoint(CamelContext camelContext, String uri, String ref) {
+ Endpoint endpoint = null;
+ if (uri != null) {
+ endpoint = camelContext.getEndpoint(uri);
+ if (endpoint == null) {
+ throw new NoSuchEndpointException(uri);
+ }
+ }
+ if (ref != null) {
+ endpoint = camelContext.getRegistry().lookupByNameAndType(ref, Endpoint.class);
+ if (endpoint == null) {
+ throw new NoSuchEndpointException("ref:" + ref, "check your camel registry with id " + ref);
+ }
+ // Check the endpoint has the right CamelContext
+ if (!camelContext.equals(endpoint.getCamelContext())) {
+ throw new NoSuchEndpointException("ref:" + ref, "make sure the endpoint has the same camel context as the route does.");
+ }
+ try {
+ // need add the endpoint into service
+ camelContext.addService(endpoint);
+ } catch (Exception ex) {
+ throw new RuntimeCamelException(ex);
+ }
+ }
+ if (endpoint == null) {
+ throw new IllegalArgumentException("Either 'uri' or 'ref' must be specified");
+ } else {
+ return endpoint;
+ }
+ }
+
/**
* Converts the given value to the requested type
*/