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);