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/27 10:01:32 UTC
[camel] branch master updated: Fix some lifecycle issues in camel
cloud
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
The following commit(s) were added to refs/heads/master by this push:
new 91a0fee Fix some lifecycle issues in camel cloud
91a0fee is described below
commit 91a0feeff0ea69d95d9785a9c19246b80aee1785
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Mar 27 10:08:28 2020 +0100
Fix some lifecycle issues in camel cloud
---
.../main/java/org/apache/camel/processor/SendDynamicProcessor.java | 5 +++++
.../org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java | 6 +++++-
.../org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java | 7 ++++++-
.../org/apache/camel/impl/cloud/ServiceCallConfigurationTest.java | 3 ++-
.../java/org/apache/camel/builder/ExpressionClauseSupport.java | 5 +++--
5 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
index 61e8d7c..e96b458 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/SendDynamicProcessor.java
@@ -95,6 +95,11 @@ public class SendDynamicProcessor extends AsyncProcessorSupport implements IdAwa
}
@Override
+ protected void doInit() throws Exception {
+ expression.init(camelContext);
+ }
+
+ @Override
public boolean process(Exchange exchange, final AsyncCallback callback) {
if (!isStarted()) {
exchange.setException(new IllegalStateException("SendProcessor has not been started: " + this));
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
index 46edcea..a0b2d4c 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/DefaultServiceCallProcessor.java
@@ -122,8 +122,9 @@ public class DefaultServiceCallProcessor extends AsyncProcessorSupport {
// Lifecycle
// *************************************
+
@Override
- protected void doStart() throws Exception {
+ protected void doInit() throws Exception {
StringHelper.notEmpty(name, "name", "service name");
ObjectHelper.notNull(camelContext, "camel context");
ObjectHelper.notNull(expression, "expression");
@@ -136,7 +137,10 @@ public class DefaultServiceCallProcessor extends AsyncProcessorSupport {
Processor send = camelContext.adapt(ExtendedCamelContext.class).getProcessorFactory().createProcessor(camelContext, "SendDynamicProcessor", args);
processor = AsyncProcessorConverterHelper.convert(send);
+ }
+ @Override
+ protected void doStart() throws Exception {
// Start services if needed
ServiceHelper.startService(processor);
ServiceHelper.startService(loadBalancer);
diff --git a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
index 982e58d..4ce8345 100644
--- a/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
+++ b/core/camel-cloud/src/main/java/org/apache/camel/impl/cloud/ServiceCallProcessorFactory.java
@@ -24,6 +24,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Expression;
+import org.apache.camel.ExpressionFactory;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.Processor;
import org.apache.camel.Route;
@@ -127,8 +128,12 @@ public class ServiceCallProcessorFactory extends TypedProcessorFactory<ServiceCa
endpointUri = ThrowingHelper.applyIfNotEmpty(endpointUri, camelContext::resolvePropertyPlaceholders, () -> null);
ExchangePattern pattern = CamelContextHelper.parse(camelContext, ExchangePattern.class, definition.getPattern());
+ Expression expression = retrieveExpression(camelContext, endpointScheme);
+ if (expression instanceof ExpressionFactory) {
+ expression = ((ExpressionFactory) expression).createExpression(camelContext);
+ }
return new DefaultServiceCallProcessor(camelContext, camelContext.resolvePropertyPlaceholders(definition.getName()), endpointScheme, endpointUri, pattern,
- loadBalancer, retrieveExpression(camelContext, endpointScheme));
+ loadBalancer, expression);
}
// *****************************
diff --git a/core/camel-cloud/src/test/java/org/apache/camel/impl/cloud/ServiceCallConfigurationTest.java b/core/camel-cloud/src/test/java/org/apache/camel/impl/cloud/ServiceCallConfigurationTest.java
index 8c71e23..20a1de3 100644
--- a/core/camel-cloud/src/test/java/org/apache/camel/impl/cloud/ServiceCallConfigurationTest.java
+++ b/core/camel-cloud/src/test/java/org/apache/camel/impl/cloud/ServiceCallConfigurationTest.java
@@ -426,7 +426,8 @@ public class ServiceCallConfigurationTest {
DefaultServiceCallProcessor proc = findServiceCallProcessor(context.getRoute("default"));
Assert.assertNotNull(proc);
- Assert.assertTrue(proc.getExpression() instanceof SimpleExpression);
+ Assert.assertEquals("file:${header.CamelServiceCallServiceHost}:${header.CamelServiceCallServicePort}",
+ proc.getExpression().toString());
} finally {
if (context != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
index b5690e2..4f52d3e 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
@@ -65,9 +65,10 @@ public class ExpressionClauseSupport<T> {
* Specify an {@link org.apache.camel.Expression} instance
*/
public T expression(Expression expression) {
- setExpressionValue(expression);
if (expression instanceof ExpressionFactory) {
- setExpressionType((ExpressionFactory)expression);
+ setExpressionType((ExpressionFactory) expression);
+ } else {
+ setExpressionValue(expression);
}
return result;
}