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/01/09 12:24:08 UTC
[camel] 02/02: CAMEL-14380: camel-core - Add hostname function to
simple language
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
commit 3fad765c1594020a050639b7ea1b2d4463dae3cd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Jan 9 13:12:08 2020 +0100
CAMEL-14380: camel-core - Add hostname function to simple language
---
core/camel-base/src/main/docs/simple-language.adoc | 2 ++
.../language/simple/ast/SimpleFunctionExpression.java | 2 ++
.../org/apache/camel/language/simple/SimpleTest.java | 8 ++++++++
.../apache/camel/support/builder/ExpressionBuilder.java | 17 +++++++++++++++++
4 files changed, 29 insertions(+)
diff --git a/core/camel-base/src/main/docs/simple-language.adoc b/core/camel-base/src/main/docs/simple-language.adoc
index 793ec83..96e2fee 100644
--- a/core/camel-base/src/main/docs/simple-language.adoc
+++ b/core/camel-base/src/main/docs/simple-language.adoc
@@ -192,6 +192,8 @@ Exchange is being routed.
|threadName |String |Returns the name of the current thread. Can be used for
logging purpose.
+|hostname |String |Returns the local hostname (may be empty if not possible to resolve).
+
|ref:xxx |Object |To lookup a bean from the Registry with
the given id.
diff --git a/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index adabcdc..22de774 100644
--- a/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ b/core/camel-base/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -390,6 +390,8 @@ public class SimpleFunctionExpression extends LiteralExpression {
return ExpressionBuilder.exchangeExceptionStackTraceExpression();
} else if (ObjectHelper.equal(expression, "threadName")) {
return ExpressionBuilder.threadNameExpression();
+ } else if (ObjectHelper.equal(expression, "hostname")) {
+ return ExpressionBuilder.hostnameExpression();
} else if (ObjectHelper.equal(expression, "camelId")) {
return ExpressionBuilder.camelContextNameExpression();
} else if (ObjectHelper.equal(expression, "routeId")) {
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 766df56..311f1a8 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
@@ -40,6 +40,7 @@ import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.language.bean.RuntimeBeanExpressionException;
import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
import org.apache.camel.spi.Language;
+import org.apache.camel.util.InetAddressUtil;
import org.junit.Test;
public class SimpleTest extends LanguageTestSupport {
@@ -236,6 +237,13 @@ public class SimpleTest extends LanguageTestSupport {
}
@Test
+ public void testSimpleHostname() throws Exception {
+ String name = InetAddressUtil.getLocalHostNameSafe();
+ assertExpression("${hostname}", name);
+ assertExpression("The host is ${hostname}", "The host is " + name);
+ }
+
+ @Test
public void testSimpleStepId() throws Exception {
assertExpression("${stepId}", null);
exchange.setProperty(Exchange.STEP_ID, "foo");
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 48bdd26..9085cd5 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
@@ -47,6 +47,7 @@ import org.apache.camel.support.GroupIterator;
import org.apache.camel.support.GroupTokenIterator;
import org.apache.camel.support.LanguageSupport;
import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.InetAddressUtil;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.Scanner;
import org.apache.camel.util.StringHelper;
@@ -735,6 +736,22 @@ public class ExpressionBuilder {
}
/**
+ * Returns the expression for the local hostname
+ */
+ public static Expression hostnameExpression() {
+ return new ExpressionAdapter() {
+ public Object evaluate(Exchange exchange) {
+ return InetAddressUtil.getLocalHostNameSafe();
+ }
+
+ @Override
+ public String toString() {
+ return "hostname";
+ }
+ };
+ }
+
+ /**
* Returns the expression for the current step id (if any)
*/
public static Expression stepIdExpression() {