Thomas Cunningham created CAMEL-23534:
-----------------------------------------
Summary: Schema properties are URL-encoded when passed from Pipe
to Kamelet, breaking Protobuf/Avro schema parsers
Key: CAMEL-23534
URL: https://issues.apache.org/jira/browse/CAMEL-23534
Project: Camel
Issue Type: Bug
Components: camel-kamelet
Reporter: Thomas Cunningham
Assignee: Thomas Cunningham
Description:
When a Camel Pipe references a Kamelet with properties containing special
characters (e.g., Protobuf/Avro schemas), those property values are URL-encoded
by
YamlRoutesBuilderLoader.createQueryString() at line 605 but never decoded
before being passed to the kamelet's bean setters.
{code:java}
Location:
/Users/tcunning/fixingkamelets/camel/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java:605-608
if (params != null && !params.isEmpty()) {
String query = URISupport.createQueryString(params);
// CAMEL-23284: restore property placeholders that were URL-encoded
query = query.replace("%7B%7B", "{{").replace("%7D%7D", "}}");
uri = uri + "?" + query;
}
{code}
Example:
- Pipe YAML property: schema: "syntax = \"proto3\";"
- Becomes kamelet URI parameter: schema=syntax+%3D+%22proto3%22%3B
- Arrives at ProtobufSchemaResolver.setSchema(): "syntax+%3D+%22proto3%22%3B"
- Parser fails: Syntax error at 1:8: expected '=' (sees syntax+%3D instead of
syntax =)
Affected Components:
- camel-jackson-protobuf: ProtobufSchemaResolver
- camel-jackson-avro: AvroSchemaResolver
- camel-kamelet: MimeType enum
Affected Components:
- camel-jackson-protobuf: ProtobufSchemaResolver
- camel-jackson-avro: AvroSchemaResolver
- camel-kamelet: MimeType enum
- Any kamelet that passes complex string properties (schemas, expressions,
templates)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)