You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by "atiaomar1978-hub (via GitHub)" <gi...@apache.org> on 2026/07/25 22:34:16 UTC

[PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

atiaomar1978-hub opened a new pull request, #25113:
URL: https://github.com/apache/camel/pull/25113

   ## Summary
   
   - Extends SensitiveUtils with value-shape helpers for URI userinfo passwords and PEM private-key bodies.
   - DefaultMaskingFormatter applies these after name-based masking.
   - Docs + AssertJ tests.
   
   ## Context
   Follow-up to MCP redaction rework (#25093).
   
   ## Test plan
   - [x] SensitiveUtilsTest / DefaultMaskingFormatterTest
   - [ ] CI
   
   _AI-generated PR description on behalf of Omar Atie (@atiaomar1978-hub)._
   
   Made with [Cursor](https://cursor.com)


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "atiaomar1978-hub (via GitHub)" <gi...@apache.org>.
atiaomar1978-hub commented on PR #25113:
URL: https://github.com/apache/camel/pull/25113#issuecomment-5084320023

   @davsclaus — re **review §3 (empty-keyword formatter no longer a no-op)**, also addressed in `77607275443`:
   
   - `DefaultMaskingFormatter.format()` still skips name-based masking when `keywords` is empty, but **always** runs `SensitiveUtils.maskSensitiveValueShapes()` afterward so embedded URI/PEM secrets are redacted.
   - Documented in `DefaultMaskingFormatter` Javadoc and the Camel 4.22 upgrade guide (`camel-support - DefaultMaskingFormatter masks URI userinfo and PEM private keys`).
   - Test: `formatMasksValueShapesWhenKeywordsEmpty` (URI/PEM masked; bare `password=visible` unchanged without keywords).
   
   That covers all three items from the review summary plus the three inline threads. Happy to re-request your review when CI is green.
   
   _AI-generated reply on behalf of @atiaomar1978-hub._


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus commented on code in PR #25113:
URL: https://github.com/apache/camel/pull/25113#discussion_r3651965481


##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -21,9 +21,30 @@
 import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public final class SensitiveUtils {
 
+    /**
+     * Matches URI userinfo credentials ({@code scheme://user:password@host} or {@code scheme://:password@host}) and
+     * captures the password as group 2. The scheme may contain {@code +} / {@code .} / {@code -} (e.g.
+     * {@code mongodb+srv}). Does not match user-only userinfo without a password ({@code scheme://user@host}).
+     * <p>

Review Comment:
   `URISupport.java` (line 67) already has a field named `USERINFO_PASSWORD` with a different regex. Having two static patterns with the same name in different classes doing subtly different things will confuse future maintainers. Consider renaming this one (e.g. `USERINFO_PASSWORD_IN_TEXT`) or reconciling the two.



##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -256,4 +277,54 @@ public static boolean containsSensitive(String text) {
         return SENSITIVE_KEYS.contains(text);
     }
 
+    /**
+     * Masks passwords embedded in URI userinfo ({@code scheme://user:password@host}) within free text. Complements
+     * name-based secret detection: the password has no {@code password=} key, so key/value maskers never see it.
+     * <p>
+     * Query-parameter forms such as {@code ?password=secret} are not handled here; use a key/value masker or
+     * {@link URISupport#sanitizeUri(String)} for those.
+     *
+     * @param  source the text that may contain connection-string style URIs
+     * @param  mask   the replacement string for the password (for example {@code xxxxx})
+     * @return        the source with userinfo passwords replaced, or the original source when null/empty or when mask
+     *                is null
+     */

Review Comment:
   This should have a fast `String.contains("://")` guard before invoking the regex — the old masking code deliberately avoided regex overhead for the common case (most log messages don't contain URI schemes):
   
   ```suggestion
       public static String maskUserInfoCredentials(String source, String mask) {
           if (source == null || source.isEmpty() || mask == null) {
               return source;
           }
           if (!source.contains("://")) {
               return source;
           }
           return USERINFO_PASSWORD.matcher(source).replaceAll("$1" + Matcher.quoteReplacement(mask) + "$3");
       }
   ```



##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -256,4 +277,54 @@ public static boolean containsSensitive(String text) {
         return SENSITIVE_KEYS.contains(text);
     }
 
+    /**
+     * Masks passwords embedded in URI userinfo ({@code scheme://user:password@host}) within free text. Complements
+     * name-based secret detection: the password has no {@code password=} key, so key/value maskers never see it.
+     * <p>
+     * Query-parameter forms such as {@code ?password=secret} are not handled here; use a key/value masker or
+     * {@link URISupport#sanitizeUri(String)} for those.
+     *
+     * @param  source the text that may contain connection-string style URIs
+     * @param  mask   the replacement string for the password (for example {@code xxxxx})
+     * @return        the source with userinfo passwords replaced, or the original source when null/empty or when mask
+     *                is null
+     */
+    public static String maskUserInfoCredentials(String source, String mask) {
+        if (source == null || source.isEmpty() || mask == null) {
+            return source;
+        }
+        return USERINFO_PASSWORD.matcher(source).replaceAll("$1" + Matcher.quoteReplacement(mask) + "$3");
+    }
+
+    /**
+     * Masks the body of PEM private-key blocks within free text, keeping the BEGIN/END markers. Public keys and
+     * certificates ({@code BEGIN PUBLIC KEY}, {@code BEGIN CERTIFICATE}) are left unchanged.
+     *
+     * @param  source the text that may contain PEM private-key material
+     * @param  mask   the replacement string for the key body (for example {@code xxxxx})
+     * @return        the source with private-key bodies replaced, or the original source when null/empty or when mask
+     *                is null

Review Comment:
   Same here — add a fast `String.contains("-----BEGIN")` guard before the regex:
   
   ```suggestion
       public static String maskPemPrivateKeyBlocks(String source, String mask) {
           if (source == null || source.isEmpty() || mask == null) {
               return source;
           }
           if (!source.contains("-----BEGIN")) {
               return source;
           }
           return PEM_PRIVATE_KEY.matcher(source).replaceAll("$1" + Matcher.quoteReplacement(mask) + "$3");
       }
   ```



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #25113:
URL: https://github.com/apache/camel/pull/25113#issuecomment-5083185664

   :star2: Thank you for your contribution to the Apache Camel project! :star2:
     :robot: CI automation will test this PR automatically.
   
     :camel: Apache Camel Committers, please review the following items:
   
     * First-time contributors **require MANUAL approval** for the GitHub Actions to run
     * You can use the command `/component-test (camel-)component-name1 (camel-)component-name2..` to request a test from the test bot although they are normally detected and executed by CI.
     * You can label PRs using `skip-tests` and `test-dependents` to fine-tune the checks executed by this PR.
     * Build and test logs are available in the summary page. **Only** [Apache Camel committers](https://camel.apache.org/community/team/#committers) have access to the summary.
     
     :warning: Be careful when sharing logs. Review their contents before sharing them publicly.


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "atiaomar1978-hub (via GitHub)" <gi...@apache.org>.
atiaomar1978-hub commented on code in PR #25113:
URL: https://github.com/apache/camel/pull/25113#discussion_r3652904773


##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -256,4 +277,54 @@ public static boolean containsSensitive(String text) {
         return SENSITIVE_KEYS.contains(text);
     }
 
+    /**
+     * Masks passwords embedded in URI userinfo ({@code scheme://user:password@host}) within free text. Complements
+     * name-based secret detection: the password has no {@code password=} key, so key/value maskers never see it.
+     * <p>
+     * Query-parameter forms such as {@code ?password=secret} are not handled here; use a key/value masker or
+     * {@link URISupport#sanitizeUri(String)} for those.
+     *
+     * @param  source the text that may contain connection-string style URIs
+     * @param  mask   the replacement string for the password (for example {@code xxxxx})
+     * @return        the source with userinfo passwords replaced, or the original source when null/empty or when mask
+     *                is null
+     */

Review Comment:
   Fixed in `77607275443`. Added the `://` fast path exactly as suggested (`maskUserInfoCredentials` returns early when the source has no URI scheme). Tests: `maskValueShapeHelpersSkipRegexWhenMarkersAbsent` and `formatPlainTextUnchanged`.
   
   _AI-generated reply on behalf of @atiaomar1978-hub._



##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -256,4 +277,54 @@ public static boolean containsSensitive(String text) {
         return SENSITIVE_KEYS.contains(text);
     }
 
+    /**
+     * Masks passwords embedded in URI userinfo ({@code scheme://user:password@host}) within free text. Complements
+     * name-based secret detection: the password has no {@code password=} key, so key/value maskers never see it.
+     * <p>
+     * Query-parameter forms such as {@code ?password=secret} are not handled here; use a key/value masker or
+     * {@link URISupport#sanitizeUri(String)} for those.
+     *
+     * @param  source the text that may contain connection-string style URIs
+     * @param  mask   the replacement string for the password (for example {@code xxxxx})
+     * @return        the source with userinfo passwords replaced, or the original source when null/empty or when mask
+     *                is null
+     */
+    public static String maskUserInfoCredentials(String source, String mask) {
+        if (source == null || source.isEmpty() || mask == null) {
+            return source;
+        }
+        return USERINFO_PASSWORD.matcher(source).replaceAll("$1" + Matcher.quoteReplacement(mask) + "$3");
+    }
+
+    /**
+     * Masks the body of PEM private-key blocks within free text, keeping the BEGIN/END markers. Public keys and
+     * certificates ({@code BEGIN PUBLIC KEY}, {@code BEGIN CERTIFICATE}) are left unchanged.
+     *
+     * @param  source the text that may contain PEM private-key material
+     * @param  mask   the replacement string for the key body (for example {@code xxxxx})
+     * @return        the source with private-key bodies replaced, or the original source when null/empty or when mask
+     *                is null

Review Comment:
   Fixed in `77607275443`. Added a fast path before the PEM regex. The guard uses `StringHelper.containsIgnoreCase(source, \"-----BEGIN\")` so it stays consistent with the `CASE_INSENSITIVE` PEM pattern (Bugbot/Grok flagged plain `contains` missing lowercase headers). Test added for lowercase `-----begin rsa private key-----`.
   
   _AI-generated reply on behalf of @atiaomar1978-hub._



##########
core/camel-util/src/main/java/org/apache/camel/util/SensitiveUtils.java:
##########
@@ -21,9 +21,30 @@
 import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public final class SensitiveUtils {
 
+    /**
+     * Matches URI userinfo credentials ({@code scheme://user:password@host} or {@code scheme://:password@host}) and
+     * captures the password as group 2. The scheme may contain {@code +} / {@code .} / {@code -} (e.g.
+     * {@code mongodb+srv}). Does not match user-only userinfo without a password ({@code scheme://user@host}).
+     * <p>

Review Comment:
   Fixed in `77607275443`. Renamed to `URI_USERINFO_PASSWORD_IN_TEXT` and documented how it differs from `URISupport.USERINFO_PASSWORD` (stricter free-text rules). Also made the userinfo prefix non-greedy (`*?:`) so passwords with embedded `:` mask fully, aligned with `URISupport` sanitization.
   
   _AI-generated reply on behalf of @atiaomar1978-hub._



-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "davsclaus (via GitHub)" <gi...@apache.org>.
davsclaus merged PR #25113:
URL: https://github.com/apache/camel/pull/25113


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "atiaomar1978-hub (via GitHub)" <gi...@apache.org>.
atiaomar1978-hub commented on PR #25113:
URL: https://github.com/apache/camel/pull/25113#issuecomment-5084307651

   Thanks for the review, @davsclaus — the latest push (`77607275443`) addresses your feedback and follow-ups from automated review (Bugbot + Grok). _AI-generated comment on behalf of @atiaomar1978-hub._
   
   ---
   
   ## @davsclaus review
   
   ### 1. Fast pre-checks before regex
   
   `SensitiveUtils.maskUserInfoCredentials`, `maskPemPrivateKeyBlocks`, and the call path from `DefaultMaskingFormatter.format()` now skip the regex engine when markers are absent:
   
   - URI userinfo: return early when the text does not contain `://`
   - PEM private keys: return early when the text does not contain `-----BEGIN` (case-insensitive via `StringHelper.containsIgnoreCase`, consistent with the `CASE_INSENSITIVE` PEM pattern)
   
   Plain log lines such as `Hello World` no longer pay regex cost. Covered by `maskValueShapeHelpersSkipRegexWhenMarkersAbsent` and `formatPlainTextUnchanged`.
   
   ### 2. Duplicate `USERINFO_PASSWORD` pattern name
   
   The log-masking pattern in `SensitiveUtils` is renamed to **`URI_USERINFO_PASSWORD_IN_TEXT`**, with Javadoc explaining how it differs from `URISupport`'s `USERINFO_PASSWORD` used in `sanitizeUri()` (stricter scheme/userinfo rules for free text vs. URI sanitization).
   
   The regex prefix is **non-greedy** (`*?:`) so passwords containing `:` are fully masked (e.g. `http://user:pass:word@host` → password replaced in one shot), aligned with `URISupport`'s non-greedy userinfo handling.
   
   ### 3. Empty-keyword formatter behavior
   
   Previously, `format()` with an empty keyword set skipped all masking. Value-shape masking (URI userinfo + PEM) now **always** runs after name-based passes, which is intentional so embedded credentials in connection strings are still redacted when no sensitive key names appear.
   
   Documented in:
   
   - `DefaultMaskingFormatter` class Javadoc
   - Camel 4.22 upgrade guide (`camel-support - DefaultMaskingFormatter masks URI userinfo and PEM private keys`)
   
   Test: `formatMasksValueShapesWhenKeywordsEmpty` (URI/PEM still masked; bare `password=visible` unchanged without keywords).
   
   ---
   
   ## Bugbot
   
   | Pass | Finding | Resolution |
   |------|---------|------------|
   | Pre-fix | PEM fast path was case-sensitive while the regex is `CASE_INSENSITIVE` → lowercase `-----begin ...` could skip masking | PEM pre-check uses `StringHelper.containsIgnoreCase(source, "-----BEGIN")`; test added for lowercase PEM headers |
   | Post-fix (branch vs `main`) | — | **No bugs reported** |
   
   ---
   
   ## Grok (second review)
   
   | Severity | Topic | Resolution |
   |----------|--------|------------|
   | Medium | Colon in password only partly masked (greedy userinfo prefix) | Non-greedy `[^/@\\s\"']*?:` + test `http://user:pass:word@host` |
   | Medium | PEM fast path vs case-insensitive regex mismatch | Same as Bugbot fix above |
   | Low | Orphaned duplicate Javadoc on the pattern field | Merged into a single block |
   | Low | Missing tests for colon-in-password / lowercase PEM | Added in `SensitiveUtilsTest` |
   
   Items already in good shape per Grok: empty-username Redis (`redis://:pass@`), `mailto:`, user-only userinfo, naming/docs distinction from `URISupport`, empty-keywords + upgrade guide.
   
   ---
   
   ## Tests (local)
   
   ```text
   JAVA_HOME=/opt/homebrew/opt/openjdk@21 \
     ./mvnw -pl core/camel-util,core/camel-core -am test \
     -Dtest=SensitiveUtilsTest,DefaultMaskingFormatterTest
   ```
   
   All tests passed locally; awaiting CI.
   
   ---
   
   Happy to adjust further if anything should stay a strict no-op (e.g. empty keywords) or if we should share/reconcile regex with `URISupport` more directly in a follow-up.


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #25113:
URL: https://github.com/apache/camel/pull/25113#issuecomment-5085480207

   <!-- ci-tested-modules -->
   :test_tube: **CI tested the following changed modules:**
   
   - `catalog/camel-catalog`
   - `core/camel-core-engine`
   - `core/camel-core`
   - `core/camel-support`
   - `core/camel-util`
   - `docs`
   
   > :information_source: Dependent modules were not tested because the total number of affected modules exceeded the threshold (50). Use the `test-dependents` label to force testing all dependents.
   
   ---
   
   <details><summary>:microscope: Scalpel shadow comparison — Scalpel: 564 tested, 27 compile-only — current: 562 all tested</summary>
   
   [Maveniverse Scalpel](https://github.com/maveniverse/scalpel) detected **591 affected modules** (current approach: 562).
   
   <details><summary>:warning: Modules only in Scalpel (29)</summary>
   
   - `apache-camel`
   - `camel-allcomponents`
   - `camel-catalog`
   - `camel-catalog-console`
   - `camel-catalog-lucene`
   - `camel-catalog-maven`
   - `camel-catalog-suggest`
   - `camel-componentdsl`
   - `camel-csimple-maven-plugin`
   - `camel-endpointdsl`
   - `camel-endpointdsl-support`
   - `camel-itest`
   - `camel-jbang-core`
   - `camel-jbang-it`
   - `camel-jbang-main`
   - `camel-jbang-plugin-edit`
   - `camel-jbang-plugin-generate`
   - `camel-jbang-plugin-kubernetes`
   - `camel-jbang-plugin-test`
   - `camel-kamelet-main`
   - `camel-launcher`
   - `camel-report-maven-plugin`
   - `camel-route-parser`
   - `camel-yaml-dsl`
   - `camel-yaml-dsl-deserializers`
   - `camel-yaml-dsl-maven-plugin`
   - `coverage`
   - `docs`
   - `dummy-component`
   
   </details>
   
   **Skip-tests mode would test 564 modules** (6 direct + 558 downstream), **skip tests for 27** (generated code, meta-modules)
   
   <details><summary>Modules Scalpel would test (564)</summary>
   
   - `archetypes`
   - `camel-a2a`
   - `camel-activemq`
   - `camel-activemq6`
   - `camel-ai-parent`
   - `camel-ai-tool`
   - `camel-amqp`
   - `camel-api`
   - `camel-api-component-maven-plugin`
   - `camel-arangodb`
   - `camel-archetype-api-component`
   - `camel-archetype-component`
   - `camel-archetype-dataformat`
   - `camel-archetype-java`
   - `camel-archetype-main`
   - `camel-archetype-spring`
   - `camel-as2`
   - `camel-as2-api`
   - `camel-as2-parent`
   - `camel-asn1`
   - `camel-asterisk`
   - `camel-atmosphere-websocket`
   - `camel-atom`
   - `camel-attachments`
   - `camel-avro`
   - `camel-avro-rpc`
   - `camel-avro-rpc-jetty`
   - `camel-avro-rpc-parent`
   - `camel-avro-rpc-spi`
   - `camel-aws-bedrock`
   - `camel-aws-cloudtrail`
   - `camel-aws-common`
   - `camel-aws-config`
   - `camel-aws-parameter-store`
   - `camel-aws-parent`
   - `camel-aws-secrets-manager`
   - `camel-aws-security-hub`
   - `camel-aws2-athena`
   - `camel-aws2-comprehend`
   - `camel-aws2-cw`
   - `camel-aws2-ddb`
   - `camel-aws2-ec2`
   - `camel-aws2-ecs`
   - `camel-aws2-eks`
   - `camel-aws2-eventbridge`
   - `camel-aws2-iam`
   - `camel-aws2-kinesis`
   - `camel-aws2-kms`
   - `camel-aws2-lambda`
   - `camel-aws2-mq`
   - `camel-aws2-msk`
   - `camel-aws2-polly`
   - `camel-aws2-redshift`
   - `camel-aws2-rekognition`
   - `camel-aws2-s3`
   - `camel-aws2-s3-vectors`
   - `camel-aws2-ses`
   - `camel-aws2-sns`
   - `camel-aws2-sqs`
   - `camel-aws2-step-functions`
   - `camel-aws2-sts`
   - `camel-aws2-textract`
   - `camel-aws2-timestream`
   - `camel-aws2-transcribe`
   - `camel-aws2-translate`
   - `camel-azure-common`
   - `camel-azure-cosmosdb`
   - `camel-azure-eventgrid`
   - `camel-azure-eventhubs`
   - `camel-azure-files`
   - `camel-azure-functions`
   - `camel-azure-key-vault`
   - `camel-azure-parent`
   - `camel-azure-schema-registry`
   - `camel-azure-servicebus`
   - `camel-azure-storage-blob`
   - `camel-azure-storage-datalake`
   - `camel-azure-storage-queue`
   - `camel-barcode`
   - `camel-base`
   - `camel-base-engine`
   - `camel-base64`
   - `camel-bean`
   - `camel-bean-validator`
   - `camel-beanio`
   - `camel-bindy`
   - `camel-bonita`
   - `camel-box`
   - `camel-box-api`
   - `camel-box-parent`
   - `camel-braintree`
   - `camel-browse`
   - `camel-caffeine`
   - `camel-camunda`
   - `camel-cassandraql`
   - `camel-catalog`
   - `camel-catalog-common`
   - `camel-cbor`
   - `camel-chatscript`
   - `camel-chunk`
   - `camel-cli-connector`
   - `camel-cli-debug`
   - `camel-clickhouse`
   - `camel-clickup`
   - `camel-cloudevents`
   - `camel-cluster`
   - `camel-cm-sms`
   - `camel-coap`
   - `camel-cometd`
   - `camel-console`
   - `camel-consul`
   - `camel-controlbus`
   - `camel-core`
   - `camel-core-all`
   - `camel-core-catalog`
   - `camel-core-engine`
   - `camel-core-languages`
   - `camel-core-model`
   - `camel-core-processor`
   - `camel-core-reifier`
   - `camel-core-xml`
   - `camel-couchbase`
   - `camel-couchdb`
   - `camel-cron`
   - `camel-crypto`
   - `camel-crypto-pgp`
   - `camel-csimple-joor`
   - `camel-csv`
   - `camel-cxf-common`
   - `camel-cxf-parent`
   - `camel-cxf-rest`
   - `camel-cxf-soap`
   - `camel-cxf-spring-common`
   - `camel-cxf-spring-rest`
   - `camel-cxf-spring-soap`
   - `camel-cxf-spring-transport`
   - `camel-cxf-transport`
   - `camel-cyberark-vault`
   - `camel-dapr`
   - `camel-dataformat`
   - `camel-dataset`
   - `camel-datasonnet`
   - `camel-debezium-common`
   - `camel-debezium-common-parent`
   - `camel-debezium-db2`
   - `camel-debezium-maven-plugin`
   - `camel-debezium-mongodb`
   - `camel-debezium-mysql`
   - `camel-debezium-oracle`
   - `camel-debezium-parent`
   - `camel-debezium-postgres`
   - `camel-debezium-sqlserver`
   - `camel-debug`
   - `camel-dependencies`
   - `camel-dfdl`
   - `camel-dhis2`
   - `camel-dhis2-api`
   - `camel-dhis2-parent`
   - `camel-diagram`
   - `camel-digitalocean`
   - `camel-direct`
   - `camel-disruptor`
   - `camel-djl`
   - `camel-dns`
   - `camel-docker`
   - `camel-docling`
   - `camel-drill`
   - `camel-dropbox`
   - `camel-dsl-modeline`
   - `camel-dsl-support`
   - `camel-duckdb`
   - `camel-dynamic-router`
   - `camel-ehcache`
   - `camel-eip-documentation-enricher-maven-plugin`
   - `camel-elasticsearch`
   - `camel-elasticsearch-rest-client`
   - `camel-event`
   - `camel-exec`
   - `camel-fastjson`
   - `camel-fhir`
   - `camel-fhir-api`
   - `camel-fhir-parent`
   - `camel-file`
   - `camel-file-watch`
   - `camel-flatpack`
   - `camel-flink`
   - `camel-flowable`
   - `camel-fop`
   - `camel-fory`
   - `camel-freemarker`
   - `camel-ftp`
   - `camel-ftp-common`
   - `camel-geocoder`
   - `camel-git`
   - `camel-github2`
   - `camel-google-bigquery`
   - `camel-google-calendar`
   - `camel-google-common`
   - `camel-google-drive`
   - `camel-google-firestore`
   - `camel-google-functions`
   - `camel-google-mail`
   - `camel-google-parent`
   - `camel-google-pubsub`
   - `camel-google-secret-manager`
   - `camel-google-sheets`
   - `camel-google-speech-to-text`
   - `camel-google-storage`
   - `camel-google-text-to-speech`
   - `camel-google-vertexai`
   - `camel-google-vision`
   - `camel-graphql`
   - `camel-grok`
   - `camel-groovy`
   - `camel-grpc`
   - `camel-gson`
   - `camel-hashicorp-vault`
   - `camel-hazelcast`
   - `camel-headersmap`
   - `camel-health`
   - `camel-hl7`
   - `camel-http`
   - `camel-http-base`
   - `camel-http-common`
   - `camel-huawei-parent`
   - `camel-huaweicloud-common`
   - `camel-huaweicloud-dms`
   - `camel-huaweicloud-frs`
   - `camel-huaweicloud-functiongraph`
   - `camel-huaweicloud-iam`
   - `camel-huaweicloud-imagerecognition`
   - `camel-huaweicloud-obs`
   - `camel-huaweicloud-smn`
   - `camel-huggingface`
   - `camel-ibm-cos`
   - `camel-ibm-parent`
   - `camel-ibm-secrets-manager`
   - `camel-ibm-watson-discovery`
   - `camel-ibm-watson-language`
   - `camel-ibm-watson-speech-to-text`
   - `camel-ibm-watson-text-to-speech`
   - `camel-ibm-watsonx-ai`
   - `camel-ibm-watsonx-data`
   - `camel-ical`
   - `camel-iec60870`
   - `camel-iggy`
   - `camel-ignite`
   - `camel-infinispan`
   - `camel-infinispan-common`
   - `camel-infinispan-embedded`
   - `camel-infinispan-parent`
   - `camel-influxdb`
   - `camel-influxdb2`
   - `camel-irc`
   - `camel-ironmq`
   - `camel-iso8583`
   - `camel-jackson`
   - `camel-jackson-avro`
   - `camel-jackson-protobuf`
   - `camel-jackson3`
   - `camel-jackson3-avro`
   - `camel-jackson3-protobuf`
   - `camel-jackson3xml`
   - `camel-jacksonxml`
   - `camel-jactl`
   - `camel-jandex`
   - `camel-jasypt`
   - `camel-java-io`
   - `camel-java-joor-dsl`
   - `camel-javascript`
   - `camel-jaxb`
   - `camel-jbang-console`
   - `camel-jbang-mcp`
   - `camel-jbang-plugin-mcp`
   - `camel-jbang-plugin-route-parser`
   - `camel-jbang-plugin-tui`
   - `camel-jbang-plugin-validate`
   - `camel-jcache`
   - `camel-jcr`
   - `camel-jdbc`
   - `camel-jetty`
   - `camel-jetty-common`
   - `camel-jfr`
   - `camel-jgroups`
   - `camel-jgroups-raft`
   - `camel-jira`
   - `camel-jms`
   - `camel-jmx`
   - `camel-jolt`
   - `camel-jooq`
   - `camel-joor`
   - `camel-jpa`
   - `camel-jq`
   - `camel-jsch`
   - `camel-jslt`
   - `camel-json-patch`
   - `camel-json-validator`
   - `camel-jsonapi`
   - `camel-jsonata`
   - `camel-jsonb`
   - `camel-jsonpath`
   - `camel-jsoup`
   - `camel-jt400`
   - `camel-jta`
   - `camel-jte`
   - `camel-kafka`
   - `camel-kamelet`
   - `camel-kamelet-main-support`
   - `camel-keycloak`
   - `camel-knative`
   - `camel-knative-api`
   - `camel-knative-http`
   - `camel-knative-parent`
   - `camel-kserve`
   - `camel-kubernetes`
   - `camel-kudu`
   - `camel-langchain4j-agent`
   - `camel-langchain4j-agent-api`
   - `camel-langchain4j-chat`
   - `camel-langchain4j-core`
   - `camel-langchain4j-embeddings`
   - `camel-langchain4j-embeddingstore`
   - `camel-langchain4j-embeddingstore-api`
   - `camel-langchain4j-tokenizer`
   - `camel-langchain4j-tools`
   - `camel-langchain4j-web-search`
   - `camel-language`
   - `camel-launcher-container`
   - `camel-ldap`
   - `camel-ldif`
   - `camel-leveldb`
   - `camel-log`
   - `camel-lra`
   - `camel-lucene`
   - `camel-lumberjack`
   - `camel-lzf`
   - `camel-mail`
   - `camel-mail-microsoft-oauth`
   - `camel-main`
   - `camel-management`
   - `camel-management-api`
   - `camel-mapstruct`
   - `camel-master`
   - `camel-maven-plugin`
   - `camel-mdc`
   - `camel-metrics`
   - `camel-micrometer`
   - `camel-micrometer-observability`
   - `camel-micrometer-prometheus`
   - `camel-microprofile-config`
   - `camel-microprofile-fault-tolerance`
   - `camel-microprofile-health`
   - `camel-microprofile-parent`
   - `camel-milo`
   - `camel-milvus`
   - `camel-mina`
   - `camel-mina-sftp`
   - `camel-minio`
   - `camel-mllp`
   - `camel-mock`
   - `camel-mongodb`
   - `camel-mongodb-gridfs`
   - `camel-mustache`
   - `camel-mvel`
   - `camel-mybatis`
   - `camel-nats`
   - `camel-neo4j`
   - `camel-netty`
   - `camel-netty-http`
   - `camel-oaipmh`
   - `camel-oauth`
   - `camel-observability-services`
   - `camel-observation`
   - `camel-ocsf`
   - `camel-ognl`
   - `camel-olingo2`
   - `camel-olingo2-api`
   - `camel-olingo2-parent`
   - `camel-olingo4`
   - `camel-olingo4-api`
   - `camel-olingo4-parent`
   - `camel-once`
   - `camel-openai`
   - `camel-openapi-java`
   - `camel-openapi-rest-dsl-generator`
   - `camel-openapi-validator`
   - `camel-opensearch`
   - `camel-openstack`
   - `camel-opentelemetry`
   - `camel-opentelemetry-metrics`
   - `camel-opentelemetry2`
   - `camel-optaplanner`
   - `camel-paho`
   - `camel-paho-mqtt5`
   - `camel-parquet-avro`
   - `camel-pdf`
   - `camel-pg-replication-slot`
   - `camel-pgevent`
   - `camel-pgvector`
   - `camel-pinecone`
   - `camel-platform-http`
   - `camel-platform-http-jolokia`
   - `camel-platform-http-main`
   - `camel-platform-http-vertx`
   - `camel-plc4x`
   - `camel-pqc`
   - `camel-printer`
   - `camel-protobuf`
   - `camel-pubnub`
   - `camel-pulsar`
   - `camel-python`
   - `camel-qdrant`
   - `camel-quartz`
   - `camel-quickfix`
   - `camel-reactive-executor-tomcat`
   - `camel-reactive-executor-vertx`
   - `camel-reactive-streams`
   - `camel-reactor`
   - `camel-redis`
   - `camel-ref`
   - `camel-resilience4j`
   - `camel-resilience4j-micrometer`
   - `camel-resourceresolver-github`
   - `camel-rest`
   - `camel-rest-openapi`
   - `camel-restdsl-openapi-plugin`
   - `camel-robotframework`
   - `camel-rocketmq`
   - `camel-rss`
   - `camel-rxjava`
   - `camel-saga`
   - `camel-salesforce`
   - `camel-salesforce-codegen`
   - `camel-salesforce-maven-plugin`
   - `camel-salesforce-parent`
   - `camel-sap-netweaver`
   - `camel-saxon`
   - `camel-scheduler`
   - `camel-schematron`
   - `camel-seda`
   - `camel-servicenow`
   - `camel-servicenow-maven-plugin`
   - `camel-servicenow-parent`
   - `camel-servlet`
   - `camel-shell`
   - `camel-shiro`
   - `camel-sjms`
   - `camel-sjms2`
   - `camel-slack`
   - `camel-smb`
   - `camel-smooks`
   - `camel-smpp`
   - `camel-snakeyaml`
   - `camel-snmp`
   - `camel-soap`
   - `camel-solr`
   - `camel-splunk`
   - `camel-splunk-hec`
   - `camel-spring`
   - `camel-spring-ai-chat`
   - `camel-spring-ai-embeddings`
   - `camel-spring-ai-image`
   - `camel-spring-ai-parent`
   - `camel-spring-ai-tools`
   - `camel-spring-ai-vector-store`
   - `camel-spring-batch`
   - `camel-spring-cloud-config`
   - `camel-spring-jdbc`
   - `camel-spring-ldap`
   - `camel-spring-main`
   - `camel-spring-parent`
   - `camel-spring-rabbitmq`
   - `camel-spring-redis`
   - `camel-spring-security`
   - `camel-spring-ws`
   - `camel-spring-xml`
   - `camel-sql`
   - `camel-ssh`
   - `camel-stax`
   - `camel-stitch`
   - `camel-stream`
   - `camel-streamcaching-test`
   - `camel-stringtemplate`
   - `camel-stripe`
   - `camel-stub`
   - `camel-support`
   - `camel-swift`
   - `camel-syslog`
   - `camel-tahu`
   - `camel-tarfile`
   - `camel-telegram`
   - `camel-telemetry`
   - `camel-telemetry-dev`
   - `camel-tensorflow-serving`
   - `camel-test-infra-all`
   - `camel-test-infra-artemis`
   - `camel-test-infra-cli`
   - `camel-test-infra-core`
   - `camel-test-infra-jetty`
   - `camel-test-infra-qdrant`
   - `camel-test-infra-smb`
   - `camel-test-junit5`
   - `camel-test-junit6`
   - `camel-test-main-junit5`
   - `camel-test-main-junit6`
   - `camel-test-parent`
   - `camel-test-spring-junit5`
   - `camel-test-spring-junit6`
   - `camel-threadpoolfactory-vertx`
   - `camel-thrift`
   - `camel-thymeleaf`
   - `camel-tika`
   - `camel-timer`
   - `camel-tooling-maven`
   - `camel-tracing`
   - `camel-twilio`
   - `camel-twitter`
   - `camel-undertow`
   - `camel-undertow-spring-security`
   - `camel-univocity-parsers`
   - `camel-util`
   - `camel-validator`
   - `camel-velocity`
   - `camel-vertx`
   - `camel-vertx-common`
   - `camel-vertx-http`
   - `camel-vertx-parent`
   - `camel-vertx-websocket`
   - `camel-wal`
   - `camel-wasm`
   - `camel-weather`
   - `camel-weaviate`
   - `camel-web3j`
   - `camel-webhook`
   - `camel-whatsapp`
   - `camel-wordpress`
   - `camel-workday`
   - `camel-xchange`
   - `camel-xj`
   - `camel-xml-io`
   - `camel-xml-io-dsl`
   - `camel-xml-jaxb`
   - `camel-xml-jaxb-dsl`
   - `camel-xml-jaxb-dsl-test-definition`
   - `camel-xml-jaxb-dsl-test-spring`
   - `camel-xml-jaxp`
   - `camel-xmlsecurity`
   - `camel-xmpp`
   - `camel-xpath`
   - `camel-xslt`
   - `camel-xslt-saxon`
   - `camel-yaml-dsl-common`
   - `camel-yaml-dsl-validator`
   - `camel-yaml-dsl-validator-maven-plugin`
   - `camel-yaml-io`
   - `camel-zeebe`
   - `camel-zendesk`
   - `camel-zip-deflater`
   - `camel-zipfile`
   - `camel-zookeeper`
   - `camel-zookeeper-master`
   - `components`
   - `docs`
   - `sync-properties-maven-plugin`
   
   </details>
   
   <details><summary>Modules with tests skipped (27)</summary>
   
   - `apache-camel`
   - `camel-allcomponents`
   - `camel-catalog-console`
   - `camel-catalog-lucene`
   - `camel-catalog-maven`
   - `camel-catalog-suggest`
   - `camel-componentdsl`
   - `camel-csimple-maven-plugin`
   - `camel-endpointdsl`
   - `camel-endpointdsl-support`
   - `camel-itest`
   - `camel-jbang-core`
   - `camel-jbang-it`
   - `camel-jbang-main`
   - `camel-jbang-plugin-edit`
   - `camel-jbang-plugin-generate`
   - `camel-jbang-plugin-kubernetes`
   - `camel-jbang-plugin-test`
   - `camel-kamelet-main`
   - `camel-launcher`
   - `camel-report-maven-plugin`
   - `camel-route-parser`
   - `camel-yaml-dsl`
   - `camel-yaml-dsl-deserializers`
   - `camel-yaml-dsl-maven-plugin`
   - `coverage`
   - `dummy-component`
   
   </details>
   
   > :information_source: Shadow mode — Scalpel observes but does not affect test execution. [Learn more](https://github.com/maveniverse/scalpel)
   
   </details>
   
   :warning: **Some tests are disabled on GitHub Actions** (`@DisabledIfSystemProperty(named = "ci.env.name")`) and require manual verification:
   
   - `core/camel-core`: 2 test(s) disabled on GitHub Actions
   
   <details><summary>Build reactor — dependencies compiled but only changed modules were tested (590 modules)</summary>
   
   - Camel :: AI :: A2A
   - Camel :: AI :: ChatScript
   - Camel :: AI :: Deep Java Library
   - Camel :: AI :: Docling
   - Camel :: AI :: Hugging Face
   - Camel :: AI :: KServe
   - Camel :: AI :: LangChain4j :: Agent
   - Camel :: AI :: LangChain4j :: Agent :: API
   - Camel :: AI :: LangChain4j :: Chat
   - Camel :: AI :: LangChain4j :: Core
   - Camel :: AI :: LangChain4j :: Embedding
   - Camel :: AI :: LangChain4j :: Embedding Store :: API
   - Camel :: AI :: LangChain4j :: EmbeddingStore
   - Camel :: AI :: LangChain4j :: Tokenizer
   - Camel :: AI :: LangChain4j :: Tools
   - Camel :: AI :: LangChain4j :: Web Search
   - Camel :: AI :: Milvus
   - Camel :: AI :: Neo4j
   - Camel :: AI :: OpenAI
   - Camel :: AI :: PGVector
   - Camel :: AI :: Parent
   - Camel :: AI :: Pinecone
   - Camel :: AI :: Qdrant
   - Camel :: AI :: TensorFlow Serving
   - Camel :: AI :: Tool
   - Camel :: AI :: Weaviate
   - Camel :: AMQP
   - Camel :: API
   - Camel :: AS2 :: API
   - Camel :: AS2 :: Component
   - Camel :: AS2 :: Parent
   - Camel :: ASN.1
   - Camel :: AWS :: Common
   - Camel :: AWS :: Parent
   - Camel :: AWS CloudTrail
   - Camel :: AWS Config
   - Camel :: AWS Redshift Data
   - Camel :: AWS Rekognition
   - Camel :: AWS Security Hub
   - Camel :: AWS Step Functions
   - Camel :: AWS Timestream
   - Camel :: AWS2 :: Transcribe
   - Camel :: AWS2 Athena
   - Camel :: AWS2 Bedrock
   - Camel :: AWS2 CW
   - Camel :: AWS2 Comprehend
   - Camel :: AWS2 DDB
   - Camel :: AWS2 EC2
   - Camel :: AWS2 ECS
   - Camel :: AWS2 EKS
   - Camel :: AWS2 Eventbridge
   - Camel :: AWS2 IAM
   - Camel :: AWS2 KMS
   - Camel :: AWS2 Kinesis
   - Camel :: AWS2 Lambda
   - Camel :: AWS2 MQ
   - Camel :: AWS2 MSK
   - Camel :: AWS2 Parameter Store
   - Camel :: AWS2 Polly
   - Camel :: AWS2 S3
   - Camel :: AWS2 S3 Vectors
   - Camel :: AWS2 SES
   - Camel :: AWS2 SNS
   - Camel :: AWS2 SQS
   - Camel :: AWS2 STS
   - Camel :: AWS2 Secrets Manager
   - Camel :: AWS2 Textract
   - Camel :: AWS2 Translate
   - Camel :: ActiveMQ 5.x
   - Camel :: ActiveMQ 6.x
   - Camel :: All Components Sync point
   - Camel :: All Core Sync point
   - Camel :: ArangoDB
   - Camel :: Archetypes
   - Camel :: Archetypes :: API Component
   - Camel :: Archetypes :: Component
   - Camel :: Archetypes :: Data Format
   - Camel :: Archetypes :: Java Router
   - Camel :: Archetypes :: Main
   - Camel :: Archetypes :: Spring XML Based Router (deprecated)
   - Camel :: Assembly
   - Camel :: Asterisk
   - Camel :: Atmosphere WebSocket Servlet
   - Camel :: Atom
   - Camel :: Attachments
   - Camel :: Avro
   - Camel :: Avro RPC
   - Camel :: Avro RPC :: Jetty
   - Camel :: Avro RPC :: Parent
   - Camel :: Avro RPC :: Spi
   - Camel :: Azure :: Common
   - Camel :: Azure :: CosmosDB
   - Camel :: Azure :: Event Grid
   - Camel :: Azure :: Event Hubs
   - Camel :: Azure :: Files
   - Camel :: Azure :: Functions
   - Camel :: Azure :: Key Vault
   - Camel :: Azure :: Parent
   - Camel :: Azure :: Schema Registry
   - Camel :: Azure :: ServiceBus
   - Camel :: Azure :: Storage Blob
   - Camel :: Azure :: Storage Datalake
   - Camel :: Azure :: Storage Queue
   - Camel :: Barcode
   - Camel :: Base
   - Camel :: Base Engine
   - Camel :: Base64
   - Camel :: Bean
   - Camel :: Bean validator
   - Camel :: BeanIO
   - Camel :: Bindy
   - Camel :: Bonita
   - Camel :: Box :: API
   - Camel :: Box :: Component
   - Camel :: Box :: Parent
   - Camel :: Braintree
   - Camel :: Browse
   - Camel :: CBOR
   - Camel :: CM SMS
   - Camel :: CSV
   - Camel :: CXF :: Common
   - Camel :: CXF :: Common :: Spring
   - Camel :: CXF :: Parent
   - Camel :: CXF :: REST
   - Camel :: CXF :: REST :: Spring
   - Camel :: CXF :: SOAP
   - Camel :: CXF :: SOAP :: Spring
   - Camel :: CXF :: Transport
   - Camel :: CXF :: Transport :: Spring
   - Camel :: Caffeine
   - Camel :: Camunda
   - Camel :: Cassandra CQL
   - Camel :: Catalog :: CSimple Maven Plugin (deprecated)
   - Camel :: Catalog :: Camel Catalog
   - Camel :: Catalog :: Camel Report Maven Plugin
   - Camel :: Catalog :: Camel Route Parser
   - Camel :: Catalog :: Common
   - Camel :: Catalog :: Console
   - Camel :: Catalog :: Dummy Component
   - Camel :: Catalog :: Lucene (deprecated)
   - Camel :: Catalog :: Maven
   - Camel :: Catalog :: Suggest
   - Camel :: Chunk
   - Camel :: ClickHouse
   - Camel :: ClickUp
   - Camel :: CloudEvents
   - Camel :: Cluster
   - Camel :: CoAP
   - Camel :: Cometd
   - Camel :: Common Telemetry
   - Camel :: Common Tracing (deprecated)
   - Camel :: Component DSL
   - Camel :: Components
   - Camel :: Console
   - Camel :: Consul
   - Camel :: Controlbus
   - Camel :: Core
   - Camel :: Core Catalog
   - Camel :: Core Engine
   - Camel :: Core Languages
   - Camel :: Core Model
   - Camel :: Core Processor
   - Camel :: Core Reifier
   - Camel :: Core XML
   - Camel :: CouchDB
   - Camel :: Couchbase
   - Camel :: Coverage
   - Camel :: Cron
   - Camel :: Crypto
   - Camel :: Crypto PGP
   - Camel :: CyberArk Vault
   - Camel :: DFDL
   - Camel :: DHIS2
   - Camel :: DHIS2 :: Parent
   - Camel :: DHIS2 API
   - Camel :: DNS
   - Camel :: DSL :: CLI Connector
   - Camel :: DSL :: CLI Debug
   - Camel :: DSL :: Modeline
   - Camel :: DSL :: Support
   - Camel :: Dapr
   - Camel :: DataSet
   - Camel :: DataSonnet
   - Camel :: Dataformat
   - Camel :: Debezium :: Common
   - Camel :: Debezium :: Common :: Parent
   - Camel :: Debezium :: DB2
   - Camel :: Debezium :: Maven Plugin
   - Camel :: Debezium :: MongoDB
   - Camel :: Debezium :: MySQL
   - Camel :: Debezium :: Oracle
   - Camel :: Debezium :: Parent
   - Camel :: Debezium :: PostgreSQL
   - Camel :: Debezium :: SQL Server
   - Camel :: Debugging
   - Camel :: Dependencies
   - Camel :: Diagram
   - Camel :: DigitalOcean (deprecated)
   - Camel :: Direct
   - Camel :: Disruptor
   - Camel :: Docker
   - Camel :: Docs
   - Camel :: Drill
   - Camel :: Dropbox
   - Camel :: DuckDB
   - Camel :: Dynamic Router
   - Camel :: Ehcache
   - Camel :: ElasticSearch Rest Client
   - Camel :: Elasticsearch Java API Client
   - Camel :: Endpoint DSL
   - Camel :: Endpoint DSL :: Support
   - Camel :: Event
   - Camel :: Exec
   - Camel :: FHIR
   - Camel :: FHIR :: API
   - Camel :: FHIR :: Parent
   - Camel :: FOP
   - Camel :: FTP
   - Camel :: FTP Common
   - Camel :: Fastjson
   - Camel :: File
   - Camel :: File Watch
   - Camel :: FlatPack
   - Camel :: Flink
   - Camel :: Flowable
   - Camel :: Fory
   - Camel :: Freemarker
   - Camel :: Geocoder
   - Camel :: Git
   - Camel :: GitHub2
   - Camel :: Google :: BigQuery
   - Camel :: Google :: Calendar
   - Camel :: Google :: Common
   - Camel :: Google :: Drive
   - Camel :: Google :: Firestore
   - Camel :: Google :: Functions
   - Camel :: Google :: Mail
   - Camel :: Google :: Parent
   - Camel :: Google :: PubSub
   - Camel :: Google :: Secret Manager
   - Camel :: Google :: Sheets
   - Camel :: Google :: Speech To Text
   - Camel :: Google :: Storage
   - Camel :: Google :: Text To Speech
   - Camel :: Google :: Vertex AI
   - Camel :: Google :: Vision
   - Camel :: GraphQL
   - Camel :: Grok
   - Camel :: Groovy
   - Camel :: Gson
   - Camel :: HL7
   - Camel :: HTTP
   - Camel :: HTTP :: Base
   - Camel :: HTTP :: Common
   - Camel :: HashiCorp :: Key Vault
   - Camel :: HazelCast
   - Camel :: Headers Map (deprecated)
   - Camel :: Health
   - Camel :: Huawei Cloud :: Common
   - Camel :: Huawei Cloud :: DMS
   - Camel :: Huawei Cloud :: FaceRecognition
   - Camel :: Huawei Cloud :: FunctionGraph
   - Camel :: Huawei Cloud :: IAM
   - Camel :: Huawei Cloud :: ImageRecognition
   - Camel :: Huawei Cloud :: OBS
   - Camel :: Huawei Cloud :: Parent
   - Camel :: Huawei Cloud :: SimpleNotification
   - Camel :: IBM :: Cloud Object Storage
   - Camel :: IBM :: Parent
   - Camel :: IBM :: Secrets Manager
   - Camel :: IBM :: Watson Discovery
   - Camel :: IBM :: Watson Language
   - Camel :: IBM :: Watson Speech to Text
   - Camel :: IBM :: Watson Text to Speech
   - Camel :: IBM :: watsonx.ai
   - Camel :: IBM :: watsonx.data
   - Camel :: IEC 60870 (deprecated)
   - Camel :: IRC (deprecated)
   - Camel :: ISO-8583
   - Camel :: Iggy
   - Camel :: Ignite
   - Camel :: Infinispan :: Common
   - Camel :: Infinispan :: Embedded
   - Camel :: Infinispan :: Parent
   - Camel :: Infinispan :: Remote
   - Camel :: InfluxDB
   - Camel :: InfluxDB2
   - Camel :: Integration Tests
   - Camel :: Integration Tests :: Stream Caching Tests
   - Camel :: IronMQ
   - Camel :: JAXB
   - Camel :: JBang :: Console
   - Camel :: JBang :: Core
   - Camel :: JBang :: Integration tests
   - Camel :: JBang :: MCP
   - Camel :: JBang :: Main
   - Camel :: JBang :: Plugin :: Edit
   - Camel :: JBang :: Plugin :: Generate
   - Camel :: JBang :: Plugin :: Kubernetes
   - Camel :: JBang :: Plugin :: MCP
   - Camel :: JBang :: Plugin :: Route Parser
   - Camel :: JBang :: Plugin :: TUI
   - Camel :: JBang :: Plugin :: Testing
   - Camel :: JBang :: Plugin :: Validate
   - Camel :: JCR
   - Camel :: JCache
   - Camel :: JDBC
   - Camel :: JGroups
   - Camel :: JGroups Raft
   - Camel :: JIRA
   - Camel :: JMS
   - Camel :: JMX
   - Camel :: JOOQ
   - Camel :: JPA
   - Camel :: JQ
   - Camel :: JSON validator
   - Camel :: JSON-B
   - Camel :: JSONATA
   - Camel :: JSon Path
   - Camel :: JSonApi
   - Camel :: JSoup
   - Camel :: JTA
   - Camel :: Jackson
   - Camel :: Jackson 3
   - Camel :: Jackson 3 Avro
   - Camel :: Jackson 3 Protobuf
   - Camel :: Jackson 3 XML
   - Camel :: Jackson Avro
   - Camel :: Jackson Protobuf
   - Camel :: Jackson XML
   - Camel :: Jactl
   - Camel :: Jandex
   - Camel :: Jasypt
   - Camel :: Java DSL IO
   - Camel :: Java DSL with jOOR
   - Camel :: Java Flight Recorder
   - Camel :: Java Template Engine
   - Camel :: Java Toolbox for IBM i
   - Camel :: JavaScript
   - Camel :: Jetty
   - Camel :: Jetty :: Common
   - Camel :: Jolt
   - Camel :: Jsch
   - Camel :: Jslt
   - Camel :: JsonPatch (deprecated)
   - Camel :: Kafka
   - Camel :: Kamelet
   - Camel :: Kamelet Main
   - Camel :: Kamelet Main :: Support
   - Camel :: Keycloak
   - Camel :: Knative :: Parent
   - Camel :: Knative API
   - Camel :: Knative Component
   - Camel :: Knative HTTP
   - Camel :: Kubernetes
   - Camel :: Kudu
   - Camel :: LDAP
   - Camel :: LDIF
   - Camel :: LZF
   - Camel :: Language
   - Camel :: Launcher
   - Camel :: Launcher :: Container
   - Camel :: LevelDB (deprecated)
   - Camel :: Log
   - Camel :: Long-Running-Action
   - Camel :: Lucene
   - Camel :: Lumberjack
   - Camel :: MDC
   - Camel :: MINA
   - Camel :: MINA SFTP
   - Camel :: MLLP
   - Camel :: MVEL
   - Camel :: Mail
   - Camel :: Mail :: Microsoft OAuth
   - Camel :: Main
   - Camel :: Management
   - Camel :: Management API
   - Camel :: MapStruct
   - Camel :: Master
   - Camel :: Maven Plugins :: Camel API Component Plugin
   - Camel :: Maven Plugins :: Camel Maven Plugin
   - Camel :: Maven Plugins :: OpenApi REST DSL Generator
   - Camel :: Maven Plugins :: Sync Properties
   - Camel :: Maven Plugins :: XML DSL Doc Enricher
   - Camel :: Metrics
   - Camel :: MicroProfile :: Config
   - Camel :: MicroProfile :: Fault Tolerance
   - Camel :: MicroProfile :: Health
   - Camel :: MicroProfile :: Parent
   - Camel :: Micrometer
   - Camel :: Micrometer :: Observability 2
   - Camel :: Micrometer :: Observation (deprecated)
   - Camel :: Micrometer :: Prometheus
   - Camel :: Milo
   - Camel :: MinIO
   - Camel :: Mock
   - Camel :: MongoDB
   - Camel :: MongoDB GridFS
   - Camel :: Mustache
   - Camel :: MyBatis
   - Camel :: Nats
   - Camel :: Netty
   - Camel :: Netty HTTP
   - Camel :: OAIPMH
   - Camel :: OAuth
   - Camel :: OCSF
   - Camel :: OGNL (deprecated)
   - Camel :: Observability Services
   - Camel :: Olingo2 (Deprecated) :: API
   - Camel :: Olingo2 (Deprecated) :: Component
   - Camel :: Olingo2 (Deprecated) :: Parent
   - Camel :: Olingo4 (Deprecated) :: API
   - Camel :: Olingo4 (Deprecated) :: Component
   - Camel :: Olingo4 (Deprecated) :: Parent
   - Camel :: Once
   - Camel :: OpenAPI :: Validator
   - Camel :: OpenApi Java
   - Camel :: OpenSearch Java API Client
   - Camel :: OpenStack
   - Camel :: OpenTelemetry (deprecated)
   - Camel :: Opentelemetry 2
   - Camel :: Opentelemetry Metrics
   - Camel :: OptaPlanner
   - Camel :: PDF
   - Camel :: PLC4X
   - Camel :: PQC
   - Camel :: Paho (deprecated)
   - Camel :: Paho MQTT 5
   - Camel :: Parquet Avro
   - Camel :: PgEvent
   - Camel :: PgReplicationSlot
   - Camel :: Platform HTTP
   - Camel :: Platform HTTP :: Jolokia
   - Camel :: Platform HTTP :: Main
   - Camel :: Platform HTTP :: Vert.x
   - Camel :: Printer
   - Camel :: Protobuf
   - Camel :: PubNub
   - Camel :: Pulsar
   - Camel :: Python
   - Camel :: Quartz
   - Camel :: QuickFIX/J
   - Camel :: REST
   - Camel :: REST OpenApi
   - Camel :: RSS
   - Camel :: Reactive Executor :: Tomcat
   - Camel :: Reactive Executor :: Vert.x (deprecated)
   - Camel :: Reactive Streams
   - Camel :: Reactor
   - Camel :: Redis
   - Camel :: Ref
   - Camel :: Resilience4j
   - Camel :: Resilience4j :: Micrometer
   - Camel :: ResourceResolver GitHub
   - Camel :: RobotFramework
   - Camel :: RocketMQ
   - Camel :: RxJava
   - Camel :: SAP NetWeaver
   - Camel :: SMB
   - Camel :: SMPP
   - Camel :: SNMP
   - Camel :: SOAP
   - Camel :: SQL
   - Camel :: SSH
   - Camel :: SWIFT
   - Camel :: Saga
   - Camel :: Salesforce
   - Camel :: Salesforce :: CodeGen
   - Camel :: Salesforce :: Maven Plugin
   - Camel :: Salesforce :: Parent
   - Camel :: Saxon
   - Camel :: Scheduler
   - Camel :: Schematron
   - Camel :: Seda
   - Camel :: ServiceNow :: Component
   - Camel :: ServiceNow :: Maven Plugin
   - Camel :: ServiceNow :: Parent
   - Camel :: Servlet
   - Camel :: Shell
   - Camel :: Shiro
   - Camel :: Simple JMS
   - Camel :: Simple JMS2
   - Camel :: Slack
   - Camel :: Smooks :: Parent
   - Camel :: SnakeYAML
   - Camel :: Solr
   - Camel :: Splunk (deprecated)
   - Camel :: Splunk HEC
   - Camel :: Spring
   - Camel :: Spring :: Parent
   - Camel :: Spring AI :: Chat
   - Camel :: Spring AI :: Embeddings
   - Camel :: Spring AI :: Image
   - Camel :: Spring AI :: Parent
   - Camel :: Spring AI :: Tools
   - Camel :: Spring AI :: Vector Store
   - Camel :: Spring Batch
   - Camel :: Spring Cloud Config
   - Camel :: Spring JDBC
   - Camel :: Spring LDAP
   - Camel :: Spring Main
   - Camel :: Spring RabbitMQ
   - Camel :: Spring Redis
   - Camel :: Spring Security
   - Camel :: Spring Web Services
   - Camel :: Spring XML
   - Camel :: StAX
   - Camel :: Stitch
   - Camel :: Stream
   - Camel :: StringTemplate
   - Camel :: Stripe
   - Camel :: Stub
   - Camel :: Support
   - Camel :: Syslog
   - Camel :: Tahu
   - Camel :: Tar File
   - Camel :: Telegram
   - Camel :: Telemetry :: Dev
   - Camel :: Test :: JUnit5
   - Camel :: Test :: JUnit6
   - Camel :: Test :: Main :: JUnit5
   - Camel :: Test :: Main :: JUnit6
   - Camel :: Test :: Parent
   - Camel :: Test :: Spring :: JUnit5
   - Camel :: Test Infra :: All test services
   - Camel :: Test Infra :: Artemis
   - Camel :: Test Infra :: Cli (Camel CLI)
   - Camel :: Test Infra :: Core
   - Camel :: Test Infra :: Jetty
   - Camel :: Test Infra :: Server Message Block
   - Camel :: Test Infra :: qdrant
   - Camel :: Thread Pool Factory :: Vert.x (deprecated)
   - Camel :: Thrift
   - Camel :: Thymeleaf
   - Camel :: Tika
   - Camel :: Timer
   - Camel :: Tooling :: Maven
   - Camel :: Tooling :: OpenApi REST DSL Generator
   - Camel :: Twilio
   - Camel :: Twitter
   - Camel :: Undertow
   - Camel :: Undertow Spring Security
   - Camel :: UniVocity Parsers
   - Camel :: Util
   - Camel :: Validator
   - Camel :: Velocity
   - Camel :: Vert.x :: Common
   - Camel :: Vert.x :: HTTP
   - Camel :: Vert.x :: Parent
   - Camel :: Vert.x :: WebSocket
   - Camel :: Vertx
   - Camel :: WAL
   - Camel :: Wasm
   - Camel :: Weather
   - Camel :: Web3j
   - Camel :: Webhook
   - Camel :: Whatsapp
   - Camel :: Wordpress
   - Camel :: Workday
   - Camel :: XChange
   - Camel :: XJ
   - Camel :: XML DSL Jaxb :: Test :: Definition
   - Camel :: XML DSL Jaxb :: Test :: Spring
   - Camel :: XML DSL with camel-xml-io
   - Camel :: XML DSL with camel-xml-jaxb
   - Camel :: XML IO
   - Camel :: XML JAXB
   - Camel :: XML JAXP
   - Camel :: XML Security
   - Camel :: XMPP
   - Camel :: XPath
   - Camel :: XSLT
   - Camel :: XSLT Saxon
   - Camel :: YAML DSL
   - Camel :: YAML DSL :: Common
   - Camel :: YAML DSL :: Deserializers
   - Camel :: YAML DSL :: Maven Plugins
   - Camel :: YAML DSL :: Validator
   - Camel :: YAML DSL :: Validator Maven Plugin
   - Camel :: YAML IO
   - Camel :: Zeebe (deprecated)
   - Camel :: Zendesk
   - Camel :: Zip Deflater
   - Camel :: Zip File
   - Camel :: Zookeeper
   - Camel :: Zookeeper Master
   - Camel :: csimple jOOR (deprecated)
   - Camel :: gRPC
   - Camel :: iCal
   - Camel :: jOOR
   
   </details>
   
   ---
   :gear: [View full build and test results](https://github.com/apache/camel/actions/runs/30209802202)


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] CAMEL-24256: Mask URI userinfo credentials and PEM private keys [camel]

Posted by "atiaomar1978-hub (via GitHub)" <gi...@apache.org>.
atiaomar1978-hub commented on PR #25113:
URL: https://github.com/apache/camel/pull/25113#issuecomment-5085588750

   ## Review follow-up on `CAMEL-24256-mask-userinfo-pem`
   
   Checked out the PR branch (was on `CAMEL-23969-openai-responses-api` locally) and pushed **`ae028bd8cb3`**.
   
   ### Already addressed (earlier `77607275443`, @davsclaus blocking items)
   
   - Fast `://` / case-insensitive `-----BEGIN` guards in `SensitiveUtils`
   - `URI_USERINFO_PASSWORD_IN_TEXT` rename + Javadoc vs `URISupport`
   - Empty-keyword value-shape masking documented + tested
   
   ### New in `ae028bd8cb3` (minor / @gnodet + @davsclaus nits)
   
   - **`DefaultMaskingFormatter`**: keyword/XML/JSON/key-value `replaceAll` paths now use `Matcher.quoteReplacement(maskString)` (same as value-shape helpers) so `$` / `\` in custom masks are literal
   - Comment typo: **key=value pairs** (was “paris”)
   - **`DefaultMaskingFormatterTest`**: AssertJ only in this class (no mixed JUnit `assertEquals`)
   - **`formatKeywordMaskingUsesLiteralMaskStringWithRegexMetacharacters`**: regression for `maskString="$1"`
   
   Ready for CI. Thanks @davsclaus @gnodet.
   
   _AI-generated comment on behalf of @atiaomar1978-hub._


-- 
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: commits-unsubscribe@camel.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org