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

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


The following commit(s) were added to refs/heads/main by this push:
     new 7e058efd3fb CAMEL-20674: camel-xml-io - Allow parser to santize uris 
from XML that may be set by end user using multi line which causes uri to be 
with whitespace noise.
7e058efd3fb is described below

commit 7e058efd3fbd9c40c1641eda66c6f217f8540e6f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Apr 15 11:54:25 2024 +0200

    CAMEL-20674: camel-xml-io - Allow parser to santize uris from XML that may 
be set by end user using multi line which causes uri to be with whitespace 
noise.
---
 .../java/org/apache/camel/xml/in/ModelParser.java      | 18 +++++++++---------
 .../main/java/org/apache/camel/xml/in/BaseParser.java  |  4 ++++
 .../maven/packaging/ModelXmlParserGeneratorMojo.java   |  7 ++++++-
 3 files changed, 19 insertions(+), 10 deletions(-)

diff --git 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 8b16a1acddd..1c430a68830 100644
--- 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -479,7 +479,7 @@ public class ModelParser extends BaseParser {
     protected FromDefinition doParseFromDefinition() throws IOException, 
XmlPullParserException {
         return doParse(new FromDefinition(), (def, key, val) -> {
             switch (key) {
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 case "variableReceive": def.setVariableReceive(val); break;
                 default: return 
optionalIdentifiedDefinitionAttributeHandler().accept(def, key, val);
             }
@@ -536,7 +536,7 @@ public class ModelParser extends BaseParser {
     protected InterceptFromDefinition doParseInterceptFromDefinition() throws 
IOException, XmlPullParserException {
         return doParse(new InterceptFromDefinition(), (def, key, val) -> {
             if ("uri".equals(key)) {
-                def.setUri(val);
+                def.setUri(sanitizeUri(val));
                 return true;
             }
             return processorDefinitionAttributeHandler().accept(def, key, val);
@@ -547,7 +547,7 @@ public class ModelParser extends BaseParser {
             switch (key) {
                 case "afterUri": def.setAfterUri(val); break;
                 case "skipSendToOriginalEndpoint": 
def.setSkipSendToOriginalEndpoint(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 default: return 
processorDefinitionAttributeHandler().accept(def, key, val);
             }
             return true;
@@ -1564,7 +1564,7 @@ public class ModelParser extends BaseParser {
     protected <T extends SendDefinition> AttributeHandler<T> 
sendDefinitionAttributeHandler() {
         return (def, key, val) -> {
             if ("uri".equals(key)) {
-                def.setUri(val);
+                def.setUri(sanitizeUri(val));
                 return true;
             }
             return processorDefinitionAttributeHandler().accept(def, key, val);
@@ -1578,7 +1578,7 @@ public class ModelParser extends BaseParser {
                 case "cacheSize": def.setCacheSize(val); break;
                 case "ignoreInvalidEndpoint": 
def.setIgnoreInvalidEndpoint(val); break;
                 case "pattern": def.setPattern(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 case "variableReceive": def.setVariableReceive(val); break;
                 case "variableSend": def.setVariableSend(val); break;
                 default: return 
processorDefinitionAttributeHandler().accept(def, key, val);
@@ -1985,7 +1985,7 @@ public class ModelParser extends BaseParser {
                 case "serviceChooserRef": def.setServiceChooserRef(val); break;
                 case "serviceDiscoveryRef": def.setServiceDiscoveryRef(val); 
break;
                 case "serviceFilterRef": def.setServiceFilterRef(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 default: return identifiedTypeAttributeHandler().accept(def, 
key, val);
             }
             return true;
@@ -2039,7 +2039,7 @@ public class ModelParser extends BaseParser {
                 case "serviceChooserRef": def.setServiceChooserRef(val); break;
                 case "serviceDiscoveryRef": def.setServiceDiscoveryRef(val); 
break;
                 case "serviceFilterRef": def.setServiceFilterRef(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 default: return 
processorDefinitionAttributeHandler().accept(def, key, val);
             }
             return true;
@@ -3447,7 +3447,7 @@ public class ModelParser extends BaseParser {
         return doParse(new EndpointTransformerDefinition(), (def, key, val) -> 
{
             switch (key) {
                 case "ref": def.setRef(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 default: return 
transformerDefinitionAttributeHandler().accept(def, key, val);
             }
             return true;
@@ -3499,7 +3499,7 @@ public class ModelParser extends BaseParser {
         return doParse(new EndpointValidatorDefinition(), (def, key, val) -> {
             switch (key) {
                 case "ref": def.setRef(val); break;
-                case "uri": def.setUri(val); break;
+                case "uri": def.setUri(sanitizeUri(val)); break;
                 default: return 
validatorDefinitionAttributeHandler().accept(def, key, val);
             }
             return true;
diff --git 
a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java 
b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
index aa168ff15f5..f114b3f3123 100644
--- a/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
+++ b/core/camel-xml-io/src/main/java/org/apache/camel/xml/in/BaseParser.java
@@ -538,4 +538,8 @@ public class BaseParser {
         return false;
     }
 
+    protected static String sanitizeUri(String uri) {
+        return uri;
+    }
+
 }
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
index 02c1535d408..d16672bf2fe 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
@@ -299,7 +299,12 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
                         an = member instanceof Method ? propname(mn) : mn;
                     }
                     String sn = member instanceof Method ? mn : "set" + 
uppercase(mn);
-                    cases.put(an, "def." + sn + "(" + conversion(parser, type, 
"val", clazz.getName()) + ");");
+                    String val = "val";
+                    // special for uri
+                    if ("uri".equals(an)) {
+                        val = "sanitizeUri(val)";
+                    }
+                    cases.put(an, "def." + sn + "(" + conversion(parser, type, 
val, clazz.getName()) + ");");
                 }
                 String defaultCase = baseAttributeHandler != null ? 
baseAttributeHandler + ".accept(def, key, val)" : "false";
                 if (attributeMembers.size() == 1) {

Reply via email to