This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch lang4 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 82214b545c54444cdf051f42b8cf42e0eda20ee5 Author: Claus Ibsen <[email protected]> AuthorDate: Sat Feb 3 11:59:52 2024 +0100 CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way. --- .../jq/JqExpressionFromHeaderOrPropertyTest.java | 92 ---------------------- .../language/jq/JqExpressionFromHeaderTest.java | 21 +---- .../language/jq/JqExpressionFromPropertyTest.java | 6 +- .../camel/builder/ExpressionClauseSupport.java | 14 ++-- .../camel/support/builder/ExpressionBuilder.java | 2 +- 5 files changed, 12 insertions(+), 123 deletions(-) diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderOrPropertyTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderOrPropertyTest.java deleted file mode 100644 index dc6fdfcc092..00000000000 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderOrPropertyTest.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * 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.language.jq; - -import com.fasterxml.jackson.databind.node.TextNode; -import org.apache.camel.NoSuchHeaderOrPropertyException; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.mock.MockEndpoint; -import org.junit.jupiter.api.Test; - -public class JqExpressionFromHeaderOrPropertyTest extends JqTestSupport { - @Override - protected RouteBuilder createRouteBuilder() { - return new RouteBuilder() { - @Override - public void configure() { - from("direct:start") - .doTry() - .transform().jq(".foo", "Content", "ContentProp") - .to("mock:result") - .doCatch(NoSuchHeaderOrPropertyException.class) - .to("mock:fail"); - - } - }; - } - - @Test - public void testExpressionFromProperty() throws Exception { - getMockEndpoint("mock:result") - .expectedBodiesReceived(new TextNode("bar")); - getMockEndpoint("mock:fail") - .expectedMessageCount(0); - - fluentTemplate.to("direct:start") - .withProcessor(e -> { - e.getMessage().setHeader("Invalid", node("foo", "baz")); - e.setProperty("ContentProp", node("foo", "bar")); - }) - .send(); - - MockEndpoint.assertIsSatisfied(context); - } - - @Test - public void testExpressionFromHeader() throws Exception { - getMockEndpoint("mock:result") - .expectedBodiesReceived(new TextNode("baz")); - getMockEndpoint("mock:fail") - .expectedMessageCount(0); - - fluentTemplate.to("direct:start") - .withProcessor(e -> { - e.getMessage().setHeader("Content", node("foo", "baz")); - e.setProperty("ContentProp", node("foo", "bar")); - }) - .send(); - - MockEndpoint.assertIsSatisfied(context); - } - - @Test - public void testExpressionFail() throws Exception { - getMockEndpoint("mock:result") - .expectedMessageCount(0); - getMockEndpoint("mock:fail") - .expectedMessageCount(1); - - fluentTemplate.to("direct:start") - .withProcessor(e -> { - e.getMessage().setHeader("Invalid", node("foo", "baz")); - e.setProperty("Invalid", node("foo", "bar")); - }) - .send(); - - MockEndpoint.assertIsSatisfied(context); - } -} diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java index d13ec9bae97..cd302de09fa 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java @@ -17,7 +17,7 @@ package org.apache.camel.language.jq; import com.fasterxml.jackson.databind.node.TextNode; -import org.apache.camel.NoSuchHeaderOrPropertyException; +import org.apache.camel.NoSuchHeaderException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; @@ -32,7 +32,7 @@ public class JqExpressionFromHeaderTest extends JqTestSupport { .doTry() .transform().jq(".foo", "Content") .to("mock:result") - .doCatch(NoSuchHeaderOrPropertyException.class) + .doCatch(NoSuchHeaderException.class) .to("mock:fail"); } @@ -55,23 +55,6 @@ public class JqExpressionFromHeaderTest extends JqTestSupport { MockEndpoint.assertIsSatisfied(context); } - @Test - public void testExpressionFromHeaderPriority() throws Exception { - getMockEndpoint("mock:result") - .expectedBodiesReceived(new TextNode("bar")); - getMockEndpoint("mock:fail") - .expectedMessageCount(0); - - fluentTemplate.to("direct:start") - .withProcessor(e -> { - e.getMessage().setHeader("Content", node("foo", "bar")); - e.setProperty("Content", node("foo", "baz")); - }) - .send(); - - MockEndpoint.assertIsSatisfied(context); - } - @Test public void testExpressionFromHeaderFail() throws Exception { getMockEndpoint("mock:result") diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java index 51a9fd6b70f..56469318a3a 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java @@ -18,7 +18,7 @@ package org.apache.camel.language.jq; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; -import org.apache.camel.NoSuchHeaderOrPropertyException; +import org.apache.camel.NoSuchPropertyException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; @@ -31,9 +31,9 @@ public class JqExpressionFromPropertyTest extends JqTestSupport { public void configure() { from("direct:start") .doTry() - .transform().jq(".foo", "Content") + .transform().jq(".foo", Object.class, null, "Content") .to("mock:result") - .doCatch(NoSuchHeaderOrPropertyException.class) + .doCatch(NoSuchPropertyException.class) .to("mock:fail"); } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java index 1054eec3ed6..c6be8806cf6 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java @@ -459,13 +459,12 @@ public class ExpressionClauseSupport<T> implements ExpressionFactoryAware, Predi * Evaluates <a href="http://camel.apache.org/jq.html">JQ expression</a> * * @param text the expression to be evaluated - * @param headerOrPropertyName the name of the header or the property to apply the expression to + * @param headerName the name of the header to apply the expression to * @return the builder to continue processing the DSL */ - public T jq(String text, String headerOrPropertyName) { + public T jq(String text, String headerName) { JqExpression exp = new JqExpression(text); - exp.setHeaderName(headerOrPropertyName); - exp.setPropertyName(headerOrPropertyName); + exp.setHeaderName(headerName); return expression(exp); } @@ -489,14 +488,13 @@ public class ExpressionClauseSupport<T> implements ExpressionFactoryAware, Predi * * @param text the expression to be evaluated * @param resultType the return type expected by the expression - * @param headerOrPropertyName the name of the header or the property to apply the expression to + * @param headerName the name of the header or the property to apply the expression to * @return the builder to continue processing the DSL */ - public T jq(String text, Class<?> resultType, String headerOrPropertyName) { + public T jq(String text, Class<?> resultType, String headerName) { JqExpression exp = new JqExpression(text); exp.setResultType(resultType); - exp.setHeaderName(headerOrPropertyName); - exp.setPropertyName(headerOrPropertyName); + exp.setHeaderName(headerName); return expression(exp); } diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java index 33b0a141879..47cef3ba81c 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java @@ -90,7 +90,7 @@ public class ExpressionBuilder { * @return an expression object which will return the header value */ public static Expression headerExpression(final String headerName, boolean mandatory) { - return headerExpression(simpleExpression(headerName)); + return headerExpression(simpleExpression(headerName), mandatory); } /**
