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]