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() {