This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.x by this push: new 0d51aec9266 [CAMEL-19479] Add `threadId` to simple language (#10475) 0d51aec9266 is described below commit 0d51aec9266861f6cfa5c838add22f32dc1bff7d Author: Adriano Machado <60320+ammach...@users.noreply.github.com> AuthorDate: Tue Jun 27 14:43:08 2023 -0400 [CAMEL-19479] Add `threadId` to simple language (#10475) * [CAMEL-19479] Add `threadId` to simple language * [CAMEL-19479] Adding documentation * [CAMEL-19479] Code formatting --------- Co-authored-by: Adriano Machado <admac...@redhat.com> --- .../language/csimple/joor/OriginalSimpleTest.java | 7 +++++++ .../docs/modules/languages/pages/simple-language.adoc | 3 +++ .../apache/camel/language/csimple/CSimpleHelper.java | 4 ++++ .../language/simple/ast/SimpleFunctionExpression.java | 4 ++++ .../org/apache/camel/language/simple/SimpleTest.java | 9 ++++++++- .../camel/support/builder/ExpressionBuilder.java | 18 ++++++++++++++++++ tooling/maven/camel-package-maven-plugin/pom.xml | 2 +- 7 files changed, 45 insertions(+), 2 deletions(-) diff --git a/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java b/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java index 501b370ef61..f6f2ce31917 100644 --- a/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java +++ b/components/camel-csimple-joor/src/test/java/org/apache/camel/language/csimple/joor/OriginalSimpleTest.java @@ -239,6 +239,13 @@ public class OriginalSimpleTest extends LanguageTestSupport { assertExpression("\n${in.body}\r".trim(), "<hello id='m123'>world!</hello>"); } + @Test + public void testSimpleThreadId() { + long id = Thread.currentThread().getId(); + assertExpression("${threadId}", id); + assertExpression("The id is ${threadId}", "The id is " + id); + } + @Test public void testSimpleThreadName() { String name = Thread.currentThread().getName(); diff --git a/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc b/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc index 4fa63aaded8..ddc313a6a88 100644 --- a/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc +++ b/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc @@ -183,6 +183,9 @@ Exchange is being routed. |stepId |String |Returns the id of the current step the Exchange is being routed. +|threadId |String |Returns the id of the current thread. Can be used for +logging purpose. + |threadName |String |Returns the name of the current thread. Can be used for logging purpose. diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java index 1954cc00d75..6113b27c2ab 100644 --- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java +++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java @@ -224,6 +224,10 @@ public final class CSimpleHelper { return Thread.currentThread().getName(); } + public static long threadId() { + return Thread.currentThread().getId(); + } + public static String hostName() { return InetAddressUtil.getLocalHostNameSafe(); } diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java index cc5052b517f..3046380f6e0 100644 --- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java +++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java @@ -445,6 +445,8 @@ public class SimpleFunctionExpression extends LiteralExpression { return ExpressionBuilder.exchangeExceptionMessageExpression(); } else if (ObjectHelper.equal(expression, "exception.stacktrace")) { return ExpressionBuilder.exchangeExceptionStackTraceExpression(); + } else if (ObjectHelper.equal(expression, "threadId")) { + return ExpressionBuilder.threadIdExpression(); } else if (ObjectHelper.equal(expression, "threadName")) { return ExpressionBuilder.threadNameExpression(); } else if (ObjectHelper.equal(expression, "hostname")) { @@ -826,6 +828,8 @@ public class SimpleFunctionExpression extends LiteralExpression { return "exceptionMessage(exchange)"; } else if (ObjectHelper.equal(expression, "exception.stacktrace")) { return "exceptionStacktrace(exchange)"; + } else if (ObjectHelper.equal(expression, "threadId")) { + return "threadId()"; } else if (ObjectHelper.equal(expression, "threadName")) { return "threadName()"; } else if (ObjectHelper.equal(expression, "hostname")) { diff --git a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java index 9807bb4aa7f..f1acdd03d8c 100644 --- a/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java @@ -246,6 +246,13 @@ public class SimpleTest extends LanguageTestSupport { assertExpression("\n${in.body}\r".trim(), "<hello id='m123'>world!</hello>"); } + @Test + public void testSimpleThreadId() throws Exception { + long id = Thread.currentThread().getId(); + assertExpression("${threadId}", id); + assertExpression("The id is ${threadId}", "The id is " + id); + } + @Test public void testSimpleThreadName() throws Exception { String name = Thread.currentThread().getName(); @@ -339,7 +346,7 @@ public class SimpleTest extends LanguageTestSupport { @Test public void testOGNLBodyEmptyList() throws Exception { Map<String, List<String>> map = new HashMap<>(); - map.put("list", new ArrayList<String>()); + map.put("list", new ArrayList<>()); exchange.getIn().setBody(map); 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 4fcad2a08c5..7b2d09271ed 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 @@ -1016,6 +1016,24 @@ public class ExpressionBuilder { return exp; } + /** + * Returns the expression for the current thread id + */ + + public static Expression threadIdExpression() { + return new ExpressionAdapter() { + @Override + public Object evaluate(Exchange exchange) { + return Thread.currentThread().getId(); + } + + @Override + public String toString() { + return "threadId"; + } + }; + } + /** * Returns the expression for the current thread name */ diff --git a/tooling/maven/camel-package-maven-plugin/pom.xml b/tooling/maven/camel-package-maven-plugin/pom.xml index 67e1fc37b59..040f4a815c4 100644 --- a/tooling/maven/camel-package-maven-plugin/pom.xml +++ b/tooling/maven/camel-package-maven-plugin/pom.xml @@ -80,7 +80,7 @@ <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> </dependency> - <dependency> + <dependency> <groupId>org.apache.maven.shared</groupId> <artifactId>maven-shared-utils</artifactId> <version>${maven-shared-utils-plugin-version}</version>