oscerd opened a new issue, #2972:
URL: https://github.com/apache/camel-kamelets/issues/2972

   Three related gaps in how properties constrain what operators can put in 
them. Grouping because the fix for all three is schema metadata plus, ideally, 
a `kamelets-maven-plugin` check.
   
   ### 1. URL/URI properties mostly declare no `pattern`
   
   Roughly 88 URL/URI-titled properties across the catalog, of which about 25 
carry a `pattern:`. `jms-amqp-10-sink`'s `remoteURI` is a good example — the 
description asks for `amqps://` and nothing enforces it.
   
   Some Kamelets already do this well (`privateKeyUri` uses 
`^(http|https|file|classpath|ref|bean)://.*`). Worth applying the same shape 
catalog-wide and then enforcing co-occurrence in the plugin so it does not 
drift back.
   
   ### 2. Passwords interpolated into endpoint URIs without `RAW()`
   
   Only four Kamelets currently use `RAW(`: `jira-oauth-source`, 
`ibm-watson-language-sink`, `azure-storage-blob-event-based-source`, 
`nominatim-geocode-action`. Everywhere else a password containing 
URI-significant characters (`&`, `?`, `%`, `+`) is re-parsed as URI syntax 
rather than taken literally.
   
   The sharpest case is the three Azure schema-registry Kamelets, which embed 
the password unquoted inside a JAAS config string:
   
   ```
   saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule 
required username="$ConnectionString" password={{password}};'
   ```
   
   (`kafka-azure-schema-registry-sink:125`, 
`kafka-azure-schema-registry-source:137`, 
`kafka-batch-azure-schema-registry-source:157`)
   
   A password containing a space, a quote or a `;` either breaks JAAS parsing 
or changes the module configuration. Quoting the value — or better, using the 
component's `saslUsername`/`saslPassword` options instead of hand-building JAAS 
— would fix it.
   
   ### 3. `redis` `serializer` instantiates an arbitrary class with no 
constraint
   
   `redis-source.kamelet.yaml:58` and `redis-sink.kamelet.yaml:58` declare a 
free-form string:
   
   ```yaml
   serializer:
     description: RedisSerializer fully qualified name implementation
     type: string
     default: org.springframework.data.redis.serializer.StringRedisSerializer
   ```
   
   used as `serializer: "#class:{{serializer}}"`. This is the catalog's only 
placeholder-driven `#class:`. An `enum` of the supported `RedisSerializer` 
implementations, or at minimum a `pattern`, would turn a typo into a schema 
error instead of a class-loading failure at startup.
   
   _Claude Code on behalf of Andrea Cosentino_
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to