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 2021/07/02 14:51:17 UTC
[camel] branch main updated: CAMEL-16777: camel-core - Add constant
language in Java DSL where you can specify trim option.
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 6dd1260 CAMEL-16777: camel-core - Add constant language in Java DSL where you can specify trim option.
6dd1260 is described below
commit 6dd12607f61026c03fedcbb175da1ec23a56ea9e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jul 2 16:50:47 2021 +0200
CAMEL-16777: camel-core - Add constant language in Java DSL where you can specify trim option.
---
.../java/org/apache/camel/builder/Builder.java | 15 +++++++
.../org/apache/camel/builder/BuilderSupport.java | 7 ++++
.../org/apache/camel/builder/ExpressionClause.java | 8 ++++
.../camel/builder/ExpressionClauseSupport.java | 14 +++++++
.../apache/camel/language/ConstantTrimTest.java | 46 ++++++++++++++++++++++
5 files changed, 90 insertions(+)
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/Builder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/Builder.java
index 447a061..e5f98a3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/Builder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/Builder.java
@@ -146,6 +146,21 @@ public final class Builder {
/**
* Returns a constant expression
*/
+ public static ValueBuilder constant(Object value, boolean trim) {
+ Expression exp;
+ if (value instanceof String) {
+ ConstantExpression ce = new ConstantExpression((String) value);
+ ce.setTrim(trim ? "true" : "false");
+ exp = ce;
+ } else {
+ exp = ExpressionBuilder.constantExpression(value);
+ }
+ return new ValueBuilder(exp);
+ }
+
+ /**
+ * Returns a constant expression
+ */
public static ValueBuilder language(String language, String expression) {
Expression exp = new LanguageExpression(language, expression);
return new ValueBuilder(exp);
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 81d9453..2b2bcfc 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -104,6 +104,13 @@ public abstract class BuilderSupport {
/**
* Returns a constant expression value builder
*/
+ public ValueBuilder constant(Object value, boolean trim) {
+ return Builder.constant(value, trim);
+ }
+
+ /**
+ * Returns a constant expression value builder
+ */
public ValueBuilder constant(Object... value) {
return Builder.constant(value);
}
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
index f0f1f75..f35fc61 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/ExpressionClause.java
@@ -63,6 +63,14 @@ public class ExpressionClause<T> implements Expression, Predicate {
}
/**
+ * Specify the constant expression value. <b>Important:</b> this is a fixed constant value that is only set once
+ * during starting up the route, do not use this if you want dynamic values during routing.
+ */
+ public T constant(Object value, boolean trim) {
+ return delegate.constant(value, trim);
+ }
+
+ /**
* An expression of the exchange
*/
public T exchange() {
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 3eadd5b..36b57c1 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
@@ -108,6 +108,20 @@ public class ExpressionClauseSupport<T> implements ExpressionFactoryAware, Predi
}
/**
+ * Specify the constant expression value. <b>Important:</b> this is a fixed constant value that is only set once
+ * during starting up the route, do not use this if you want dynamic values during routing.
+ */
+ public T constant(Object value, boolean trim) {
+ if (value instanceof String) {
+ ConstantExpression ce = new ConstantExpression((String) value);
+ ce.setTrim(trim ? "true" : "false");
+ return expression(ce);
+ } else {
+ return expression(ExpressionBuilder.constantExpression(value));
+ }
+ }
+
+ /**
* An expression of the exchange
*/
public T exchange() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/language/ConstantTrimTest.java b/core/camel-core/src/test/java/org/apache/camel/language/ConstantTrimTest.java
new file mode 100644
index 0000000..df51f64
--- /dev/null
+++ b/core/camel-core/src/test/java/org/apache/camel/language/ConstantTrimTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.jupiter.api.Test;
+
+public class ConstantTrimTest extends ContextTestSupport {
+
+ @Test
+ public void testTrim() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived(" Hello World ");
+
+ template.sendBody("direct:start", "Start");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .setBody().constant(" Hello World ", false)
+ .to("mock:result");
+
+ }
+ };
+ }
+}