This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new 541b9cc CAMEL-17046: Special language builder 541b9cc is described below commit 541b9cc6d4716cf0a3c944c356497ec3b73be03d Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Oct 7 07:26:49 2021 +0200 CAMEL-17046: Special language builder --- .../apache/camel/builder/DatasonnetBuilder.java | 4 ++-- .../apache/camel/model/ExpressionNodeHelper.java | 27 ++++++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/DatasonnetBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/DatasonnetBuilder.java index 4a2ae88..cb711fa 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/DatasonnetBuilder.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/DatasonnetBuilder.java @@ -26,8 +26,8 @@ import org.apache.camel.spi.Language; /** * Creates a DataSonnet language builder. * <p/> - * This builder is available in the Java DSL from the {@link RouteBuilder} which means that using datasonnet language for - * {@link Expression}s or {@link Predicate}s is very easy with the help of this builder. + * This builder is available in the Java DSL from the {@link RouteBuilder} which means that using datasonnet language + * for {@link Expression}s or {@link Predicate}s is very easy with the help of this builder. */ public class DatasonnetBuilder implements Predicate, Expression, ExpressionResultTypeAware { diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java index 4b8d805..556e591 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/ExpressionNodeHelper.java @@ -18,8 +18,10 @@ package org.apache.camel.model; import org.apache.camel.Expression; import org.apache.camel.Predicate; +import org.apache.camel.builder.DatasonnetBuilder; import org.apache.camel.builder.SimpleBuilder; import org.apache.camel.builder.ValueBuilder; +import org.apache.camel.model.language.DatasonnetExpression; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.model.language.SimpleExpression; import org.apache.camel.model.language.XPathExpression; @@ -45,11 +47,19 @@ public final class ExpressionNodeHelper { public static ExpressionDefinition toExpressionDefinition(Expression expression) { if (expression instanceof SimpleBuilder) { SimpleBuilder builder = (SimpleBuilder) expression; - // only transfer over the expression text and result type from SimpleBuilder - // as we want to use the definition objects in the route graph + // we want to use the definition objects in the route graph SimpleExpression answer = new SimpleExpression(builder.getText()); answer.setResultType(builder.getResultType()); return answer; + } else if (expression instanceof DatasonnetBuilder) { + DatasonnetBuilder builder = (DatasonnetBuilder) expression; + // we want to use the definition objects in the route graph + DatasonnetExpression answer = new DatasonnetExpression(builder.getText()); + answer.setExpression(builder.getText()); + answer.setResultType(builder.getResultType()); + answer.setBodyMediaType(builder.getBodyMediaType()); + answer.setOutputMediaType(builder.getOutputMediaType()); + return answer; } else if (expression instanceof ExpressionResultTypeAware && expression.getClass().getName().equals("org.apache.camel.language.xpath.XPathBuilder")) { ExpressionResultTypeAware aware = (ExpressionResultTypeAware) expression; @@ -83,10 +93,19 @@ public final class ExpressionNodeHelper { public static ExpressionDefinition toExpressionDefinition(Predicate predicate) { if (predicate instanceof SimpleBuilder) { SimpleBuilder builder = (SimpleBuilder) predicate; - // only transfer over the expression text and result type from SimpleBuilder - // as we want to use the definition objects in the route graph + // we want to use the definition objects in the route graph SimpleExpression answer = new SimpleExpression(builder.getText()); answer.setExpression(builder.getText()); + answer.setResultType(builder.getResultType()); + return answer; + } else if (predicate instanceof DatasonnetBuilder) { + DatasonnetBuilder builder = (DatasonnetBuilder) predicate; + // we want to use the definition objects in the route graph + DatasonnetExpression answer = new DatasonnetExpression(builder.getText()); + answer.setExpression(builder.getText()); + answer.setResultType(builder.getResultType()); + answer.setBodyMediaType(builder.getBodyMediaType()); + answer.setOutputMediaType(builder.getOutputMediaType()); return answer; } else if (predicate instanceof ExpressionResultTypeAware && predicate.getClass().getName().equals("org.apache.camel.language.xpath.XPathBuilder")) {