This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.4.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.4.x by this push:
     new 9daeb32  CAMEL-15282: camel-catalog tooling should deal with endpoint 
properties validation if uri context path contains env or jvm system property 
functions for placeholders.
9daeb32 is described below

commit 9daeb3208176f9ff6d5de5ddb6f9544851f39ea7
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Jul 19 10:42:07 2020 +0200

    CAMEL-15282: camel-catalog tooling should deal with endpoint properties 
validation if uri context path contains env or jvm system property functions 
for placeholders.
---
 .../src/test/java/org/apache/camel/catalog/CamelCatalogTest.java | 9 +++++++++
 .../java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java | 7 ++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index b7b4a4f..ade74e4 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1500,4 +1500,13 @@ public class CamelCatalogTest {
         assertTrue(result.isSuccess());
     }
 
+    @Test
+    public void validateEnvVariableInSyntax() throws Exception {
+        EndpointValidationResult result = 
catalog.validateEndpointProperties("netty-http:http://foo-bar.{{env:NAMESPACE}}.svc.cluster.local/samples";);
+        assertTrue(result.isSuccess());
+
+        result = 
catalog.validateEndpointProperties("netty-http:http://foo-bar/?requestTimeout={{env:TIMEOUT}}";);
+        assertTrue(result.isSuccess());
+    }
+
 }
diff --git 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 1ad77e4..c9d03af 100644
--- 
a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ 
b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -62,6 +62,7 @@ public abstract class AbstractCamelCatalog {
     // CHECKSTYLE:OFF
 
     private static final Pattern SYNTAX_PATTERN = Pattern.compile("([\\w.]+)");
+    private static final Pattern ENV_OR_SYS_PATTERN = 
Pattern.compile("\\{\\{(env|sys):\\w+\\}\\}");
     private static final Pattern SYNTAX_DASH_PATTERN = 
Pattern.compile("([\\w.-]+)");
     private static final Pattern COMPONENT_SYNTAX_PARSER = 
Pattern.compile("([^\\w-]*)([\\w-]+)");
 
@@ -445,6 +446,10 @@ public abstract class AbstractCamelCatalog {
         uri = CatalogHelper.after(uri, ":");
         String uriPath = URISupport.stripQuery(uri);
 
+        // the uri path may use {{env:xxx}} or {{sys:xxx}} placeholders so 
ignore those
+        Matcher matcher = ENV_OR_SYS_PATTERN.matcher(uriPath);
+        uriPath = matcher.replaceAll("");
+
         // strip user info from uri path
         if (!userInfoOptions.isEmpty()) {
             int idx = uriPath.indexOf('@');
@@ -459,7 +464,7 @@ public abstract class AbstractCamelCatalog {
         }
 
         // parse the syntax and find the names of each option
-        Matcher matcher = SYNTAX_PATTERN.matcher(syntax);
+        matcher = SYNTAX_PATTERN.matcher(syntax);
         List<String> word = new ArrayList<>();
         while (matcher.find()) {
             String s = matcher.group(1);

Reply via email to