You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/10/22 08:43:11 UTC
[camel] branch master updated: CAMEL-15730: camel-core - Untangle
reifier from builder
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 607e844 CAMEL-15730: camel-core - Untangle reifier from builder
607e844 is described below
commit 607e844d1c0b2bdbc5f984c897f6906537227c34
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Oct 22 10:21:37 2020 +0200
CAMEL-15730: camel-core - Untangle reifier from builder
---
.../apache/camel/spi/ExpressionFactoryAware.java | 31 ++++++++++++++++++++++
.../camel/builder/ExpressionClauseSupport.java | 8 +++++-
.../camel/model/language/ExpressionDefinition.java | 8 +++++-
.../org/apache/camel/reifier/ChoiceReifier.java | 13 ++++-----
4 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ExpressionFactoryAware.java b/core/camel-api/src/main/java/org/apache/camel/spi/ExpressionFactoryAware.java
new file mode 100644
index 0000000..b5041a2
--- /dev/null
+++ b/core/camel-api/src/main/java/org/apache/camel/spi/ExpressionFactoryAware.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spi;
+
+import org.apache.camel.ExpressionFactory;
+
+/**
+ * When an instance is aware of {@link ExpressionFactory}.
+ */
+public interface ExpressionFactoryAware {
+
+ /**
+ * Gets the {@link ExpressionFactory}.
+ */
+ ExpressionFactory getExpressionFactory();
+
+}
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 c878e63..de3b374 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
@@ -40,12 +40,13 @@ import org.apache.camel.model.language.TokenizerExpression;
import org.apache.camel.model.language.XMLTokenizerExpression;
import org.apache.camel.model.language.XPathExpression;
import org.apache.camel.model.language.XQueryExpression;
+import org.apache.camel.spi.ExpressionFactoryAware;
import org.apache.camel.support.builder.Namespaces;
/**
* A support class for building expression clauses.
*/
-public class ExpressionClauseSupport<T> {
+public class ExpressionClauseSupport<T> implements ExpressionFactoryAware {
// Implementation detail: We must use the specific model.language.xxx
// classes to make the DSL use these specific types
@@ -1088,6 +1089,11 @@ public class ExpressionClauseSupport<T> {
this.expressionType = expressionType;
}
+ @Override
+ public ExpressionFactory getExpressionFactory() {
+ return expressionType;
+ }
+
protected Expression createExpression(CamelContext camelContext) {
if (getExpressionValue() == null) {
if (getExpressionType() != null) {
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java b/core/camel-core-engine/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java
index 6069ed7..a675d2a 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/model/language/ExpressionDefinition.java
@@ -34,6 +34,7 @@ import org.apache.camel.Expression;
import org.apache.camel.ExpressionFactory;
import org.apache.camel.Predicate;
import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.spi.ExpressionFactoryAware;
import org.apache.camel.spi.Metadata;
import org.apache.camel.util.ObjectHelper;
@@ -45,7 +46,7 @@ import org.apache.camel.util.ObjectHelper;
@XmlType(name = "expression") // must be named expression
@XmlAccessorType(XmlAccessType.FIELD)
@SuppressWarnings("rawtypes")
-public class ExpressionDefinition implements Expression, Predicate, ExpressionFactory {
+public class ExpressionDefinition implements Expression, Predicate, ExpressionFactory, ExpressionFactoryAware {
@XmlAttribute
@XmlID
private String id;
@@ -190,6 +191,11 @@ public class ExpressionDefinition implements Expression, Predicate, ExpressionFa
//
@Override
+ public ExpressionFactory getExpressionFactory() {
+ return this;
+ }
+
+ @Override
public Expression createExpression(CamelContext camelContext) {
return camelContext.adapt(ModelCamelContext.class).createExpression(this);
}
diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
index 1537459..54e5780 100644
--- a/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
+++ b/core/camel-core-engine/src/main/java/org/apache/camel/reifier/ChoiceReifier.java
@@ -23,13 +23,13 @@ import org.apache.camel.ExpressionFactory;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.Route;
-import org.apache.camel.builder.ExpressionClause;
import org.apache.camel.model.ChoiceDefinition;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.WhenDefinition;
import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.processor.ChoiceProcessor;
import org.apache.camel.processor.FilterProcessor;
+import org.apache.camel.spi.ExpressionFactoryAware;
public class ChoiceReifier extends ProcessorReifier<ChoiceDefinition> {
@@ -46,18 +46,19 @@ public class ChoiceReifier extends ProcessorReifier<ChoiceDefinition> {
exp = exp.getExpressionType();
}
Predicate pre = exp.getPredicate();
- if (pre instanceof ExpressionClause) {
- ExpressionClause<?> clause = (ExpressionClause<?>) pre;
- if (clause.getExpressionType() != null) {
+ if (pre instanceof ExpressionFactoryAware) {
+ ExpressionFactoryAware aware = (ExpressionFactoryAware) pre;
+ if (aware.getExpressionFactory() != null) {
// if using the Java DSL then the expression may have been
// set using the
- // ExpressionClause which is a fancy builder to define
+ // ExpressionClause (implements ExpressionFactoryAware)
+ // which is a fancy builder to define
// expressions and predicates
// using fluent builders in the DSL. However we need
// afterwards a callback to
// reset the expression to the expression type the
// ExpressionClause did build for us
- ExpressionFactory model = clause.getExpressionType();
+ ExpressionFactory model = aware.getExpressionFactory();
if (model instanceof ExpressionDefinition) {
whenClause.setExpression((ExpressionDefinition) model);
}