)]}'
{
  "log": [
    {
      "commit": "c6475d2466cac59142e18b89cae01ba5e25a5c0e",
      "tree": "1b9bcb5a7cd995a657645c06a70615eb8228e1a8",
      "parents": [
        "76f23f334b74c387ee5818a81a4334af00a64640"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Sep 22 11:06:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 11:06:25 2026 +0200"
      },
      "message": "Upgrade to Camel 4.22.1 (#756)\n\nBump camel-version (and the project\u0027s own version) from 4.22.0 to\n4.22.1, and sync every third-party property that Camel\u0027s own\ncamel-parent POM bumped in lockstep: Netty, Spring (core, boot,\nsecurity, batch, data-redis, rabbitmq, ldap, cloud-config, ai),\nMicrometer (+tracing), ActiveMQ6, Vert.x, Reactor and Hawtio.\n\ncamel-features.xml and spring-features.xml parameterize on\n${camel-version}/${spring-version} already, so no literal edits were\nneeded there for the version bump itself. Two feature descriptors did\nneed fixing though, since patch-level Camel releases can still shift\ntransitive OSGi requirements:\n\n- camel-openai: Camel 4.22.1 backported AI-tool support into the\n  openai component (new AiToolSpecToOpenAI/OpenAIRouteToolSupport\n  classes), which now imports org.apache.camel.component.ai.tool.\n  Add the camel-ai-tool feature dependency, matching how the other\n  AI-tool consumers already declare it.\n- camel-ldif: its auto-detected org.apache.directory.api:api-util now\n  resolves to 2.1.8, which added a dependency on commons-text. Add the\n  commons-text bundle to the feature."
    },
    {
      "commit": "76f23f334b74c387ee5818a81a4334af00a64640",
      "tree": "551f2528eb2a81810a74a38b5c54a32627ddf99b",
      "parents": [
        "abbb751531bfd989d734ef1a7698490dbf020a77"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Sep 21 17:30:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 21 17:30:38 2026 +0200"
      },
      "message": "Upgrade to Camel 4.22.0 (#753)\n\n* Upgrade to Camel 4.22.0\n\n* Set squareup-okhttp-version property\n\n* Cleanup camel-cloud\n\n* Finish camel-cloud cleanup in camel-blueprint\n\nCamel 4.22.0 removed org.apache.camel.model.cloud entirely. Remove the\nremaining ServiceCall references left over from the camel-cloud\nremoval: the defaultServiceCallConfiguration/serviceCallConfigurations\nfields and accessors in CamelContextFactoryBean, the ServiceCallDefinition\nregistration in BlueprintModelJAXBContextFactory, the now-unresolvable\norg.apache.camel.model.cloud OSGi import in camel-xml-jaxb, and the two\nblueprint tests exercising the removed feature.\n\n* Migrate camel-cxf-blueprint to the CXF 4.2 logging feature\n\nCXF 4.2 removed the long-deprecated org.apache.cxf.feature.LoggingFeature\nfrom cxf-core, which broke the camel-cxf-blueprint build once the CXF\nversion moved from 4.1.7 to 4.2.3.\n\nSwitch both call sites to the replacement\norg.apache.cxf.ext.logging.LoggingFeature: the RsServerBlueprintBean\nfield and the \u003ccxf:logging\u003e parser in CXFAPINamespaceHandler. The new\nclass has no LoggingFeature(int) constructor, so the size limit is now\napplied through setLimit(); leaving it unset keeps CXF\u0027s own default,\nmatching the previous no-arg behaviour. The @SuppressWarnings on\nCXFAPINamespaceHandler.parse() existed only for the removed class and\nis dropped.\n\nNo new dependency is needed: camel-cxf-all already shades\ncxf-rt-features-logging, and the camel-cxf feature already installs that\nbundle ahead of camel-cxf-blueprint.\n\nAlso bump camel-osgi-cxf-version from [4.1,4.2) to [4.2,4.3) so the\norg.apache.cxf.* OSGi imports generated for the four camel-cxf bundles\nresolve against CXF 4.2 at runtime.\n\n* Fix camel-spring-ai component wrapping for Camel 4.22.0\n\nCamel 4.22.0 does not publish a single camel-spring-ai jar; it is split\ninto camel-spring-ai-chat, camel-spring-ai-embeddings,\ncamel-spring-ai-image and camel-spring-ai-vector-store (camel-spring-ai-tools\nwas discontinued after 4.21.0). Wrap each of these as its own bundle\nmodule under camel-spring-parent, matching the existing sibling modules,\nand update the feature descriptor accordingly.\n\n* Add jspecify bundle to camel-core feature for Camel 4.22.0\n\ncamel-api in Camel 4.22.0 now Import-Packages org.jspecify.annotations\n(nullability annotations used on the public API surface), which no\nbundle in the feature set exported. This broke OSGi resolution for\nevery feature depending on camel-core (e.g. camel-zookeeper-master via\ncamel-management-api), caught by the karaf-maven-plugin verify goal in\nthe features module. Add org.jspecify:jspecify as a dependency bundle\nof camel-core, matching how it is already added to individual features\nthat need it directly (camel-azure-eventhubs, camel-reactor, etc).\n\n* Fix stale jdk-version property reference in features/pom.xml\n\nThe root pom.xml renamed jdk-version to javaVersion in the \"Upgrade to\nApache POM 37\" change, but features/pom.xml\u0027s karaf-maven-plugin\n\u003cjavase\u003e configuration was never updated to match. The unresolved\n${jdk-version} reference was silently ignored, so the verify goal fell\nback to a default JDK system-package list that does not include\njdk.jfr, which camel-console now requires in Camel 4.22.0. Point\n\u003cjavase\u003e at the correct javaVersion property so verify resolves\nagainst JDK 17\u0027s actual system packages.\n\n* Mark jdk.jfr as an optional OSGi import in camel-console\n\nCamel 4.22.0 added JfrMemoryLeakDevConsole to camel-console, which\nreferences jdk.jfr/jdk.jfr.consumer (Java Flight Recorder). With the\nwildcard `camel.osgi.import`, bnd generated a mandatory\nImport-Package for both packages, which broke OSGi resolution for\nevery feature depending on camel-core (caught by the\nkaraf-maven-plugin verify goal in the features module):\n\n  Unable to resolve camel-console/4.22.0.SNAPSHOT: missing requirement\n  osgi.wiring.package; filter:\u003d\"(osgi.wiring.package\u003djdk.jfr)\"\n\nThe previous fix (correcting the stale ${jdk-version} -\u003e javaVersion\nproperty reference in features/pom.xml) was not sufficient on its\nown: jdk.jfr is a JDK-specific module, not part of the formal JavaSE\nprofile package list karaf-maven-plugin derives from \u003cjavase\u003e, so it\nis still not exported by the system bundle even with the property\nfixed.\n\nMark both packages resolution:\u003doptional instead, matching the\nexisting precedent in camel-core-model/pom.xml for the same package.\n\n* Bump jackson2-annotations-version to 2.22 for Camel 4.22.0\n\nThe Camel 4.22.0 upgrade bumped jackson2-version from 2.20.1 to\n2.22.1 but left jackson2-annotations-version at 2.20 (the correct\npairing for the prior 2.20.1), since jackson-annotations does not\npublish patch releases matching jackson-core/jackson-databind\u0027s\ncadence. This was masked in CI by the jdk.jfr failure (fixed in the\nprevious commit), which stopped OSGi resolution before it reached\nthis: once camel-core resolves, features that declare a dependency on\nthe jackson feature (e.g. camel-zookeeper-master, via curator/guava)\nfail instead, needing:\n\n  missing requirement [camel-zookeeper-master/4.22.0.SNAPSHOT]\n  osgi.wiring.package; filter:\u003d\"(\u0026(osgi.wiring.package\u003d\n  com.fasterxml.jackson.annotation)(version\u003e\u003d2.22.0)(!(version\u003e\u003d3.0.0)))\"\n\njackson-annotations 2.22 (Maven Central, no 2.22.1 patch release\nexists for this artifact) satisfies that range. Verified locally:\nre-running the features module\u0027s karaf-maven-plugin verify goal shows\ncamel-zookeeper-master (and the rest of the original camel-core/\ncamel-zookeeper-master chain from the CI failure) no longer failing\non this requirement.\n\n* Fix unresolved version properties and stale bundles for Camel 4.22.0 features\n\nThe Camel 4.22.0 upgrade regenerated pom.xml\u0027s third-party version\nproperties from Camel\u0027s own POM, dropping 23 camel-karaf-only\nproperties that camel-features.xml still references for wrapped\nthird-party bundles. This left literal ${...} placeholders in the\ngenerated feature descriptors, breaking Karaf feature resolution for\ncamel-xmpp, camel-zendesk, camel-cxf and many other features that\ntransitively depend on them.\n\n- Restore properties that are camel-karaf-only pins for optional/OSGi\n  best-effort bundles (cglib, xpp3, netty-reactive-streams, vavr,\n  nimbusds content-type/lang-tag/oauth2-oidc-sdk), using their\n  previous values, and for genuine transitive dependencies whose\n  resolved version changed (async-http-client, minidns, checker-qual\n  via guava, neo4j-bolt-connection, parsson, snakeyaml-engine for\n  kubernetes), using the version actually resolved for Camel 4.22.0.\n- Point docling, langchain4j-hugging-face/community-dashscope and\n  google-auth-library bundles at the properties the upgrade already\n  renamed them to (docling-java-version, langchain4j-beta-version,\n  langchain4j-community-version, google-auth-library-oauth2-http-version)\n  instead of the old removed names.\n- Replace the obsolete com.dylibso.chicory bundles in camel-wasm with\n  run.endive, which Camel 4.22.0 now uses for its WASM runtime.\n- Drop the dead reactor-netty-incubator-quic bundle from camel-stitch;\n  QUIC support graduated into Netty core and is already provided via\n  netty-codec-http3/netty-codec-classes-quic in the same feature.\n- Add the missing smack-xmlparser/-stax, smack-java8,\n  smack-resolver-javax, smack-sasl-javax and smack-streammanagement\n  bundles to camel-xmpp; smack-core 4.4.8 requires them but they were\n  never declared, a pre-existing gap masked until the minidns/xpp3\n  placeholders above were fixed.\n\nVerified offline against the actual Camel 4.22.0 dependency trees\n(mvn dependency:tree per component) rather than restoring values\nblindly. Rebuilding the features module locally confirms 18 features\nthat failed in CI now resolve cleanly, with no new regressions versus\nthe original failure set.\n\n* Fix camel-xmpp smack-core OSGi import and stale Spring OSGi version range\n\nsmack-core 4.4.8 mandatorily imports the JDK-internal\nsun.security.pkcs11 package with no version/optional qualifier, which\nthe system bundle does not export. Wrap smack-core to mark that one\nimport optional, matching the existing wss4j precedent in the same\nfeature file. Verified locally: camel-xmpp now resolves.\n\ncamel-osgi-spring-version was still [6.2,6.3), left over from before\nthe Camel 4.22.0 upgrade bumped spring-version to 7.0.8. camel-karaf\nalready carries its own hand-wrapped Spring 7.x OSGi feature\n(features/src/main/feature/spring-features.xml, built during a prior\nSpring upgrade), but the stale version range excluded both that and\nKaraf\u0027s own bundled Spring 6.1.x feature, so camel-spring and every\nfeature depending on it (directly or transitively: AWS, Azure,\nGoogle, Debezium, JMS, all spring-* features, camel-cxf, ...) failed\nto resolve. Bumping the range to [7.0,7.1) to match spring-version\nfixes it without needing any new OSGi wrapping work.\n\nVerified locally: rebuilding the features module offline shows 19\nmore features resolving cleanly (camel-spring and everything that was\nonly blocked by it), with no new regressions.\n\n* Wire up missing bundles for aws-common, azure-common, google-common, jackson3, opentelemetry2, ai-tool, and jactl\n\nContinuing the Camel 4.22.0 OSGi resolution cleanup, verified against\nactual dependency trees for each component (mvn dependency:tree,\nmanifest inspection for OSGi-readiness):\n\n- camel-aws-common (cascades to camel-aws-bedrock and all camel-aws2-*\n  features): AWS SDK v2 2.50.2 replaced apache-client with\n  apache5-client; add it plus the newly-required http-auth-aws-eventstream,\n  annotations, utils-lite, software.amazon.eventstream, and\n  httpcore5-h2 bundles.\n- camel-azure-common: 11 azure-* features imported\n  org.apache.camel.component.azure.common but never declared a\n  dependency on the camel-azure-common feature that provides it.\n- camel-google-common: add the missing google-oauth-client,\n  google-api-client and google-http-client bundles (all real\n  transitive deps; camel-google-common\u0027s own compiled code imports\n  their packages directly but no feature bundle provided them).\n- New \"jackson3\" base feature (mirroring the existing \"jackson\" one)\n  plus camel-osgi-jackson3-version, wiring up\n  camel-jackson3/-avro/-protobuf/-xml, which previously declared only\n  the camel-karaf wrapper bundle and nothing else.\n- camel-opentelemetry2: OtlpProtobufSpanData genuinely uses\n  com.google.protobuf.ByteString and io.opentelemetry.proto classes at\n  runtime; add opentelemetry-proto, protobuf-java, and the missing\n  opentelemetry-common/opentelemetry-sdk-metrics bundles.\n- camel-ai-tool feature dependency was missing from\n  camel-langchain4j-agent, camel-mcp-server and camel-spring-ai-chat.\n- camel-jactl: add the io.jactl bundle (previously declared nothing\n  but the wrapper itself).\n- camel-jfr: mark jdk.jfr/jdk.jfr.consumer optional in its own\n  camel.osgi.import, same precedent as camel-console.\n- camel-salesforce/camel-pinecone: grpc-protobuf pulls protobuf-java\n  3.25.x, not the project\u0027s main 4.x protobuf-version; add a\n  protobuf3-version property for that.\n\nAlso includes two component-json/factory regenerations\n(camel-directvm, camel-vm) that were never refreshed when Camel\n4.22.0 added Endpoint.endpointIdentityPropertyNames() and the SEDA/VM\nvirtualThreadPerTask option - caught incidentally while rebuilding the\nfull reactor under JDK 17 to get a clean verification baseline.\n\nVerified locally: rebuilding the features module offline shows the\nfailure count dropping from 114 to 63, with zero regressions against\nthe prior run.\n\n* Fix more missing bundles and stale property references (a2a, camunda, jira, groovy, dropbox, pqc, jsoup, jline, jakarta.ws.rs)\n\nContinuing the same dependency-tree-verified cleanup:\n\n- camel-a2a, camel-camunda: missing \u003cfeature\u003ejackson\u003c/feature\u003e\n  dependency (their compiled code needs com.fasterxml.jackson.annotation\n  but no bundle in the feature provided it).\n- camel-jira: sal-api bundle used the wrong property (${sal-api-version}\n  \u003d 5.1.4, an unrelated leftover) instead of ${jira-sal-api-version}\n  \u003d 7.2.1, which is what jira-rest-java-client-core actually needs.\n- camel-groovy: Groovy 5.x split json/xml/dateutil into separate\n  artifacts; add groovy-json, groovy-xml, groovy-dateutil alongside\n  the existing groovy bundle.\n- camel-dropbox: dropbox-core-sdk\u0027s own OSGi manifest wants\n  jakarta.servlet.http [5.0,6.0), narrower than the jakarta-servlet\n  [6,7) camel-dropbox\u0027s own code needs; add both.\n- camel-pqc: the wrapper bundle\u0027s own manifest (confirmed by rebuilding\n  it - an earlier .m2 copy was stale) mandatorily imports several\n  com.azure.* packages from org.apache.camel.component.pqc.lifecycle\n  (Azure Key Vault-backed key storage); add the azure feature and\n  azure-security-keyvault-secrets bundle.\n- camel-jsoup: add the missing org.jsoup bundle.\n- camel-diagram, camel-shell: add the missing org.jline bundle.\n- camel-bonita, camel-servicenow, camel-wordpress: these compile\n  directly against jakarta.ws.rs-api 4.0.0 (Jakarta EE 11), not the\n  3.1.0 the rest of the project pins; add a new\n  jakarta-ws-rs-api2-version property and bundle rather than touching\n  the shared 3.1.x jakarta-ws-rs base feature other components rely on.\n- camel-google-common: needed two more real transitive bundles\n  (google-http-client, opencensus-api/contrib-http-util) beyond the\n  google-oauth-client/google-api-client fix from the previous commit.\n\nAlso confirms a pattern worth flagging: some earlier \"missing\nrequirement\" errors turned out to be stale locally-cached\ncamel-karaf wrapper jars (built before a pom.xml OSGi-import fix, e.g.\ncamel-pqc), not real bugs - rebuilding the specific module cleared\nthem without any feature-XML change.\n\n* Fix remaining verified OSGi resolution gaps (prometheus, opentelemetry, jsonpath, aws2-eventbridge, graphql, clickhouse, huggingface, watsonx-data, shiro, spring-rabbitmq)\n\nContinuing the dependency-tree-verified cleanup:\n\n- camel-micrometer-prometheus: prometheus-metrics-config\u0027s own manifest\n  mandatorily imports the JDK-internal-shaped javax.annotation package\n  with no matching provider anywhere; mark it optional the same way\n  other third-party overrides in this file do.\n- camel-opentelemetry, camel-opentelemetry-metrics: add the missing\n  opentelemetry-common bundle (same gap fixed for opentelemetry2\n  previously); it needs the Aries SPI-fly serviceloader-processor\n  extender, so mark it SPI-Consumer and add the spifly prerequisite,\n  matching the existing camel-bean-validator precedent.\n- camel-jsonpath, camel-geocoder: json-path 3.0.0 is the Jackson\n  3.x-based release line and needs the jackson3 base feature, not\n  jackson2.\n- camel-aws2-eventbridge: add the missing sqs bundle (eventbridge\u0027s\n  own compiled code references it for the SQS event pattern).\n- camel-graphql: reference the full camel-http feature instead of just\n  camel-http-base; its own compiled code imports\n  org.apache.camel.component.http directly.\n- camel-clickhouse, camel-huggingface, camel-ibm-watsonx-data: wrap\n  their actual (previously undeclared) third-party SDKs - ClickHouse\n  Java client, DJL/tokenizers, and the WatsonX Data SDK\u0027s okhttp/\n  kotlin/rxjava2/sdk-core stack - verified via dependency:tree.\n- camel-shiro, camel-spring-rabbitmq: two more ${auto-detect-version}\n  placeholders that couldn\u0027t resolve because the package (jakarta.\n  annotation-api, spring-retry) isn\u0027t actually a transitive Maven\n  dependency of the wrapped component; point them at concrete\n  properties instead (jakarta-annotation-api-version, and a new\n  spring-retry-version).\n- camel-jira: (fixed in previous batch, verified again here) confirmed\n  distinguishing this from ~5 features (camel-tika, camel-undertow,\n  camel-weaviate, camel-quickfix) whose \"download failed\" errors\n  turned out to be local pax-url/offline-cache flakiness, not real\n  bugs - each artifact resolves fine via plain `mvn dependency:tree`.\n\nDeferred (would each require wrapping 10-25+ additional third-party\nbundles in an isolated, often version-conflicting dependency universe):\ncamel-pinecone, camel-azure-functions (separate azure-resourcemanager\nSDK stack), camel-datasonnet (scala/datasonnet-mapper stack), and the\ncamel-spring-ai-embeddings/-image/-vector-store + MCP SDK family\n(langchain4j-agent, mcp-server, openai, spring-ai-chat).\n\n* New fixes\n\n* Fix wrong artifact coordinates and OSGi wiring gaps for tika, undertow, weaviate, spring-rabbitmq\n\n- camel-tika: juniversalchardet was wrapped under the wrong groupId\n  (com.github.albfernandez, which never published it); the artifact is\n  published as com.googlecode.juniversalchardet.\n- camel-undertow: undertow-servlet was pinned to undertow-version\n  (2.4.2.Final), but Undertow never released a 2.4.x undertow-servlet\n  jar; use the already-defined undertow-servlet-version (2.3.26.Final),\n  matching what upstream Undertow itself pairs with undertow-core\n  2.4.2.Final. That pairing exposes a real OSGi gap: wildfly-client-config\n  1.0.1.Final (its last-ever release) has a stale Import-Package range for\n  org.wildfly.common ([1.2,2.0)), predating wildfly-common 2.x, which\n  Undertow\u0027s own build now forces. Relax the range via a wrap: override.\n- camel-weaviate: Weaviate renamed its v6 Java client artifact from\n  \"client\" to \"client6\"; the version (6.3.0) was already correct.\n- camel-spring-rabbitmq: declare the Netty bundles amqp-client actually\n  depends on (verified against its POM). Not required for this repo\u0027s\n  combined multi-feature verification, since other already-installed\n  features happen to provide Netty, but a standalone install of just\n  this feature was missing them.\n\n* Fix remaining OSGi resolution gaps across ~41 features; disable camel-servicenow\n\nFixing camel-tika/undertow/weaviate (previous commit) unmasked a much larger\nbatch of pre-existing OSGi resolution failures across the \"camel*\" combined\nfeature verification that CI had never reached before. Root causes span\nseveral distinct categories:\n\n- Missing bundle declarations for real compile-time dependencies (jackson3,\n  jackson-datatype-jsr310, reactive-streams, reactor-core, opentelemetry-api/\n  context/common, HikariCP, javax.cache, jakarta.persistence-api,\n  jakarta.mail-api, protobuf3/4, gax, google-cloud-core/firestore, scala-library,\n  langchain4j-core, spring \"core\" bundles, MCP Java SDK, langchain4j-mcp,\n  spring-ai submodules, azure-resourcemanager/azure-core-management).\n- All 14 camel-google-* components (bigquery, calendar, drive, firestore,\n  functions, mail, pubsub, secret-manager, sheets, speech-to-text, storage,\n  text-to-speech, vertexai, vision) genuinely depend on camel-google-common\n  per their real Camel poms but never declared that feature dependency.\n- Wrong Maven coordinates: java-grok moved from io.krakens to\n  io.github.whatap; weaviate\u0027s v6 client artifact is client6, not client;\n  debezium-common/debezium-core are pom-only in 3.6.1.Final, relocated to\n  debezium-util+debezium-config and debezium-connector-common respectively;\n  quickfixj-messages-all needs wrap: (no OSGi headers); azure-security-keyvault-secrets\n  needed an explicit version since auto-detect-version can\u0027t see optional deps.\n- Missing camel-mcp-server-api wrapper module entirely (a real upstream Camel\n  dependency of camel-mcp-server that was never packaged for camel-karaf) —\n  added components/camel-ai/camel-mcp-server-api following the existing\n  camel-mcp-server wrapper pattern.\n- Stale/relaxed Import-Package overrides for vendor OSGi metadata that\n  predates a now-mandatory newer transitive version (prometheus-metrics-*\n  javax.annotation range, netty-codec-base vs. empty netty-codec).\n- camel-spring-rabbitmq needed its own Netty and Jackson 3 bundles.\n- camel-pinecone/vertexai/google-speech/text-to-speech/vision needed the\n  protobuf 4.x line via ${protobuf3-version}/${protobuf4-version} instead of\n  the mismatched ${protobuf-version}.\n\ncamel-servicenow is disabled: it has a structural jakarta.ws.rs-api version\nconflict between the shared foundational baseline ([3.1,4), depended on by\nmany other simultaneously-installed features) and CXF 4.2.3\u0027s security\nbundles, which hard-require exactly 4.0.0. No per-bundle Import-Package\noverride can satisfy both within the same combined OSGi resolution graph.\nA stray orphaned XML comment marker in the file suggests this feature was\npreviously disabled for this same reason and got silently re-enabled by an\nearlier edit that removed only the opening comment tag.\n\nAlso fixes tests/features/camel-azure-storage-blob: Camel 4.22.0 relocated\nCredentialType from org.apache.camel.component.azure.storage.blob to\norg.apache.camel.component.azure.common.\n\n* Fix camel-azure-storage-queue test: CredentialType relocated to azure.common\n\nSame relocation as the camel-azure-storage-blob fix in the previous commit:\nCamel 4.22.0 moved CredentialType from\norg.apache.camel.component.azure.storage.queue to\norg.apache.camel.component.azure.common. This one was missed initially\nbecause a stale target/classes from a prior build silently masked the\ncompile failure in a local incremental (non-clean) build; confirmed via a\ngenuine `mvn clean install` of the full tests/features module tree that no\nother azure-storage-* test module has the same issue.\n\n* fix(#754): OsgiFactoryFinder must bridge findOptionalClass across bundles too\n\nDefaultFactoryFinder implements findClass and findOptionalClass as two\nindependent methods, each with its own default (non-OSGi) lookup. Overriding\nonly findClass left findOptionalClass silently falling back to the parent\u0027s\nplain classloader-based lookup, which cannot see a descriptor exported by a\ndifferent bundle.\n\nCamel\u0027s ResourceResolver SPI (used by ResourceHelper for non-http resource\nURIs, e.g. camel-atom polling a file: feed) is looked up via\nfindOptionalClass, not findClass. The \"file\" resolver is provided by\ncamel-base-engine, a different bundle than the consuming component, so the\nlookup silently failed with \"Cannot find a ResourceResolver in classpath\nsupporting the scheme: file\" even though the resolver was installed.\n\nRoot-caused by comparing DefaultResourceLoader\u0027s bytecode against\nOsgiFactoryFinder: confirmed via instrumentation that\nresolveBootstrapFactoryFinder(path) was invoked correctly for\n\"resource-resolver/\", but the returned FactoryFinder\u0027s findOptionalClass was\nnever reached - findClass was, for other SPI categories (component/language\nconfigurers) that go through it instead.\n\nFixes CamelAtomITest, which reproduced this 100% of the time both locally\nand in CI (#754). Verified no regression across the wider Pax Exam suite\n(tests/features): all modules not dependent on Docker/external services\nthat were previously passing still pass; none of the pre-existing\nDocker-dependent or unrelated failures reference this code path.\n\n* Fix awssdk feature http-client version range for Apache5 HTTP client\n\nThe awssdk feature required http-client version [4,5), which resolves\nto the legacy Apache HttpClient 4.x feature. AWS SDK 2.50.2\u0027s HTTP\ntransport bundle is apache5-client (Apache HttpClient 5.x), so Karaf\nwas wiring in httpcore4/httpclient4 instead of httpcore5/httpclient5,\ncausing NoClassDefFoundError (org.apache.hc.core5.http.config.Lookup)\nat runtime for any AWS SDK v2 component that actually performs HTTP\nI/O, e.g. CamelAws2KinesisITest against LocalStack.\n\n* Drop stale OldLoggingFactoryBeanListener bus extension for CXF 4.2.3\n\ncamel-cxf-all\u0027s checked-in bus-extensions.txt has registered\norg.apache.cxf.ext.logging.OldLoggingFactoryBeanListener as a CXF bus\nextension since 2024, but CXF 4.2.3\u0027s cxf-rt-features-logging no\nlonger ships that class (confirmed against the actual jar: only\nLoggingFactoryBeanListener and LoggingBusLifecycleListener remain).\nThe stale registration made ExtensionManagerBus throw a\nClassNotFoundException while instantiating BlueprintBus, which broke\nevery CXF Blueprint route (CamelCxfITest) since the CXF 4.1.7 to 4.2.3\nupgrade.\n\n* Wire up missing smallrye-common bundles needed by wildfly-common\n\nThe camel-undertow feature only wrapped smallrye-common-cpu and\nsmallrye-common-constraint, but wildfly-common 2.0.1 (pulled in by\nxnio/undertow) also depends on smallrye-common-net, -os, -ref and\n-expression (which itself needs -function). Without these bundles,\nwildfly-common\u0027s networking helpers (e.g. CidrAddressTable) threw\nClassNotFoundException at runtime, breaking any route relying on\ncamel-undertow, including CamelCxfITest which additionally requires\ncamel-undertow for its CXF-over-Undertow transport.\n\n* Use the renamed CamelCxfOperationName header in the CXF test routes\n\nCamel 4.22.0 (CAMEL-23526) aligned the camel-cxf exchange header\nconstants with the Camel naming convention:\n\n  CxfConstants.OPERATION_NAME       operationName      -\u003e CamelCxfOperationName\n  CxfConstants.OPERATION_NAMESPACE  operationNamespace -\u003e CamelCxfOperationNamespace\n\nRoutes referencing the constant symbolically are unaffected, which is\nwhy CamelCxfWsRouteSupplier (header(CxfConstants.OPERATION_NAME)) kept\nworking. Three test routes referenced the header by its literal string\nand so resolved to null after the upgrade:\n\n- CamelCxfRsRouteSupplier and the camel-cxf blueprint route build their\n  recipient endpoint from it, producing the bare URIs \"direct:\" and\n  \"direct-vm:\". Both failed with\n\n    ResolveEndpointFailedException: Failed to resolve endpoint: direct:\n      due to: Expected scheme-specific part at index 7: direct:\n\n  surfacing as CamelCxfITest.testCxfRs and testCxfRsBlueprint failing\n  with HTTP 500 instead of 200 in CI.\n- The camel-cxf-jetty blueprint route prepends it to the body, which\n  CamelCxfJettyITest asserts on. Not yet seen in CI because the build\n  stops at camel-cxf.\n\nBoth consumer-side bindings set the header directly via\nMessage.setHeader, bypassing the header filter strategy, so the new\nCamel* prefix is not filtered on the inbound path.\n\n* Point the camel-cxf-jetty feature at the Jetty ee11 servlet bundle\n\nCXF 4.2 moved its Jetty transport from the Jetty 12 ee10 environment to\nee11: camel-cxf-transport-jetty now carries\n\n  Import-Package: org.eclipse.jetty.ee11.servlet;resolution:\u003doptional\n\nwhile the camel-cxf-jetty feature still installed jetty-ee10-servlet.\nBecause the import is optional the bundle resolved, then failed at\nrequest time with\n\n  NoClassDefFoundError: org/eclipse/jetty/ee11/servlet/ServletContextHandler\n\nbreaking every CXF-over-Jetty route (CamelCxfJettyITest). This only\nsurfaced locally so far -- CI has not reached camel-cxf-jetty, the build\nstops earlier at camel-cxf.\n\nSwitched that one bundle to org.eclipse.jetty.ee11/jetty-ee11-servlet at\nthe same ${jetty-version} (12.1.11), which ships as a proper OSGi bundle\nexporting org.eclipse.jetty.ee11.servlet. camel-cometd and camel-jetty\nstay on ee10: those wire Camel\u0027s own Jetty component, not CXF\u0027s\ntransport.\n\nVerified with the karaf-maven-plugin verify goal (camel-cxf,\ncamel-cxf-jetty and camel-cxf-spring all succeed) and by re-running\nCamelCxfJettyITest and CamelCxfITest, which now pass.\n\n* Fix camel-debezium-mongodb OSGi resolution gaps for Kafka 4.3.1/Debezium 3.6.1\n\nCamel 4.22.0\u0027s Kafka 4.3.1 bump replaced connect-json\u0027s\njackson-module-afterburner compile dependency with jackson-module-blackbird\n2.21.2, and Debezium 3.6.1 introduced a new debezium-connect-plugins module\n(hosting io.debezium.transforms.outbox.EventRouterDelegate, required by\nMongoEventRouter and every other connector) that was never wired into the\ncamel-debezium-common feature. Both gaps surfaced as\nCamelDebeziumMongodbITest.testResultMock failing in CI on Java 17 and 21\n(NoClassDefFoundError: BlackbirdModule, then ClassNotFoundException:\nEventRouterDelegate not found by wrap_io.debezium.debezium-connector-mongodb),\ncausing the route to receive 0 of the expected 10 messages.\n\nAdded jackson-module-blackbird (version auto-detected from connect-json\u0027s\nresolved dependency tree, matching the existing pattern) and wired\ndebezium-connect-plugins as a Fragment-Host\u003dio.debezium.api fragment\nalongside the other split-package Debezium modules already merged there.\n\nVerified locally: `features` module and all six camel-debezium-* component\nmodules rebuild cleanly with the corrected bundle versions resolved\n(jackson-module-blackbird 2.21.2, debezium-connect-plugins 3.6.1.Final, no\nunresolved auto-detect-version placeholders). Could not re-run\nCamelDebeziumMongodbITest itself locally (Podman machine unavailable on this\nhost for the MongoDB testcontainer); CI will confirm the OSGi wiring fix.\n\n* Wire the remaining Kafka 4.3.1 / Debezium 3.6.1 runtime deps into the debezium features\n\nThe Camel 4.22.0 bump pulls Kafka 4.3.1 and Debezium 3.6.1, both of which\ngrew runtime dependencies that the debezium features never installed. Because\npax-url-wrap defaults to Import-Package: *;resolution:\u003doptional, the missing\npackages resolve cleanly at feature-verification time and only fail when the\nclass is actually loaded, so each one silently broke a route at runtime:\n\n- connect-runtime compares connector plugin version ranges with\n  org.apache.maven.artifact.versioning, so AsyncEmbeddedEngine failed in\n  validateAndGetConnectorConfig with NoClassDefFoundError:\n  InvalidVersionSpecificationException.\n- debezium-connector-common now computes its streaming metrics with DDSketch,\n  so MongoDbConnectorTask.start failed with NoClassDefFoundError: DDSketches.\n- mysql-binlog-connector-java decompresses zstd-compressed binlog events, so\n  the MySQL connector failed with NoClassDefFoundError: ZstdInputStream.\n\nEach dependency is already on the matching component\u0027s classpath, so\n${auto-detect-version} resolves them (maven-artifact 3.9.15,\nsketches-java 0.8.2, zstd-jni 1.5.6-10).\n\ndebezium-sink is deliberately left out: connector-mongodb only references\nio.debezium.sink from its io.debezium.connector.mongodb.sink.* classes, which\nthe source-only Camel consumer never loads.\n\nCamelDebeziumMongodbITest, CamelDebeziumMysqlITest and CamelDebeziumPostgresITest\nall pass, and the full feature verification is green.\n\n* Use the renamed DNS and Elasticsearch header constants in the test routes\n\nCamel 4.22.0 continued the header-naming alignment that already required the\nCamelCxfOperationName fix in this PR, renaming two more sets of constants to\nthe Camel* convention. Both test routes set these headers by literal string,\nso they silently resolved to nothing:\n\n- camel-dns: DnsConstants.DNS_DOMAIN/DNS_NAME/DNS_TYPE changed from\n  dns.domain/dns.name/dns.type to CamelDnsDomain/CamelDnsName/CamelDnsType\n  (verified against the shipped camel-dns 4.18.1 and 4.22.0 jars). The dns:ip\n  producer rejected the exchange with \"Header CamelDnsDomain must be specified\n  and not empty\", so the route delivered 0 of the expected 3 messages --\n  exactly the CamelDnsITest.testResultMock expected:\u003c3\u003e but was:\u003c0\u003e failure in\n  CI on both Java 17 and Java 21.\n- camel-elasticsearch: ElasticsearchConstants.PARAM_INDEX_ID changed from\n  indexId to CamelElasticsearchIndexId, so the Update operation no longer saw\n  the document id the route had just captured. CI had not reached this module\n  yet (the build stops earlier at camel-dns).\n\nBoth now reference the constants symbolically rather than by literal, which is\nwhy the routes that already did so (e.g. CamelCxfWsRouteSupplier) were never\naffected. camel-dns gains the camel-dns dependency needed to see DnsConstants;\nthe camel-dns bundle already exports org.apache.camel.component.dns, so the\nadded OSGi import resolves. camel-elasticsearch already had its dependency.\n\nSwept the other test route suppliers for literal header strings: the remaining\nones are either already Camel*-prefixed and unchanged in 4.22.0 (as2, docker,\ndrill, http), core constants (CamelFileName, CamelTimerFiredTime), real mail\nheaders, or test-defined headers, so no other route needed changing.\n\nCamelDnsITest and CamelElasticsearchITest both pass locally.\n\n* Shade camel-ftp-common into the camel-ftp bundle instead of wrapping it separately\n\nCamel 4.22.0 split camel-ftp, moving the RemoteFile* base classes\n(RemoteFileComponent, RemoteFileEndpoint, RemoteFileConsumer, RemoteFile,\nFtpConstants, ...) into a new camel-ftp-common artifact. The upgrade\ngenerated a standalone camel-ftp-common wrapper module and feature, but the\ncamel-ftp feature never depended on it, so those classes were simply absent\nat runtime: FtpComponent failed with NoClassDefFoundError\nRemoteFileComponent (\"not found by camel-ftp\"), the route never started and\nthe mock received 0 of the expected 1 message -- the CamelFtpITest\nfailure in CI on both Java 17 and Java 21.\n\nAdding a feature dependency would not have fixed it. The two artifacts share\nthe package org.apache.camel.component.file.remote: camel-ftp-common holds\nthe RemoteFile* base classes and camel-ftp the 42 concrete Ftp*/Sftp*\nclasses. camel-ftp both exports and imports that package (bnd\u0027s substitutable\nexport), so wiring its import to a separate camel-ftp-common bundle would\nhave shadowed camel-ftp\u0027s own classes in the package and merely moved the\nbreakage from RemoteFileComponent to FtpComponent.\n\nA split package has to live in a single bundle, so camel-ftp now shades\ncamel-ftp-common alongside camel-ftp, exactly as camel-as2 already shades\ncamel-as2 + camel-as2-api. The standalone camel-ftp-common module and feature\nare removed as redundant, matching that precedent -- nothing else in the repo\nreferenced either.\n\nChecked the other modules this upgrade added for the same split-package\npattern: camel-azure-common, camel-google-common and camel-mcp-server-api all\nuse packages distinct from their siblings (camel-mcp-server only has the\n.jbang/.main/.vertx subpackages, which are separate OSGi packages), so\ncamel-ftp was the only one affected.\n\nVerified locally: the rebuilt camel-ftp bundle contains both\nRemoteFileComponent and FtpComponent, CamelFtpITest passes, and the full\nfeature verification is green (425 features, no failures; 426 before, one\nfewer being the removed camel-ftp-common feature).\n\n* Fix camel-google-pubsub OSGi resolution gaps for Camel 4.22.0\n\ngoogle-cloud-pubsub\u0027s newer gax/opentelemetry-context transitive deps\nintroduced runtime classloading gaps: gson was never declared, the\nwrap:-generated manifest for google-cloud-pubsub silently dropped its\nio.opentelemetry.context import, and opentelemetry-context itself now\nrequires a separate opentelemetry-common bundle that wasn\u0027t wired in.\n\n* Fix findOptionalClass throwing instead of returning empty in OsgiFactoryFinder\n\nfindClass and findOptionalClass shared the same bundle-scanning helper,\nwhich always threw when a factory descriptor was missing its \"class\"\nproperty. Upstream DefaultFactoryFinder only throws for the mandatory\n(findClass) case and returns Optional.empty() for the optional case;\nthread the same mandatory flag through here so a malformed descriptor\ndoesn\u0027t poison an otherwise-optional lookup for the life of the context.\n\n* Fix camel-google-secret-manager OSGi resolution gaps for Camel 4.22.0\n\nFound during self-review of the camel-google-pubsub fix in this same PR:\ncamel-google-secret-manager wraps the same gax/google-cloud-pubsub\nartifacts (its PubsubReloadTriggerTask constructs a\ncom.google.cloud.pubsub.v1.Subscriber for rotation notifications, whose\nconstruction path touches io.opentelemetry.api.OpenTelemetry/Tracer the\nsame way Publisher does) but never declared the gson/opentelemetry-*\nbundles at all, nor the Import-Package override gax/google-cloud-pubsub\nneeded elsewhere in this file. This feature has no Pax Exam test, so\nnothing in CI would have caught it.\n\nApplied the same fix as camel-google-pubsub: add gson and the\nopentelemetry-api/context/common bundles, and pin io.opentelemetry.context\nas a mandatory import on the google-cloud-pubsub wrap bundle.\n\n* Deduplicate pom.xml properties and centralize the jdk.jfr OSGi-import workaround\n\nFound during self-review of this PR:\n\n- langchain4j-beta-version and mcp-java-sdk-version were each defined\n  twice in pom.xml (both pairs with identical values, so harmless today,\n  but a future bump touching only one occurrence would silently leave the\n  other stale). Removed the duplicates.\n- The jdk.jfr/jdk.jfr.consumer resolution:\u003doptional OSGi-import workaround\n  (needed because jdk.jfr is not part of the formal JavaSE profile package\n  list karaf-maven-plugin derives from \u003cjavase\u003e) was copy-pasted across\n  camel-core-model, camel-console and camel-jfr instead of sharing one\n  definition. Extracted it into a single camel-osgi-jdk-jfr-import\n  property in the root pom.xml, referenced by all three module poms, so a\n  future Camel release needing the same treatment for another jdk.*\n  package only needs updating in one place.\n\n* Deduplicate LoggingFeature construction in RsServerBlueprintBean\n\nFound during self-review of this PR: setLoggingFeatureEnabled and\nsetLoggingSizeLimit (touched earlier in this PR for the CXF LoggingFeature\nmigration) each duplicated the same \"new LoggingFeature(); if (limit \u003e 0)\nsetLimit(limit)\" construction. Extracted newLoggingFeature/\nremoveLoggingFeature helpers shared by both setters."
    },
    {
      "commit": "abbb751531bfd989d734ef1a7698490dbf020a77",
      "tree": "8d8761c7bf37e252dfb02c4a8534e244e2025dec",
      "parents": [
        "b81d8c4b4fd430a078489d88cd8a3bf9a875e7dc"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Sun Sep 06 18:32:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 18:32:12 2026 +0200"
      },
      "message": "fix(#733): do not let an uninstalled bundle poison factory resolution (#741)\n\ngetResource walks bundleContext.getBundles() and returns the first bundle with\na matching descriptor. getBundles() returns a snapshot, and per the OSGi spec\nBundle.getEntry() throws IllegalStateException once a bundle has been\nuninstalled, so a concurrent feature:uninstall or bundle:update can make the\nscan throw on a bundle that has nothing to do with the factory being resolved.\n\nfindClass calls getResource from inside DefaultFactoryFinder.addToClassMap,\nwhich catches Exception, stores it in classesNotFoundExceptions and rethrows it\non every later lookup of the same key. That turns the transient race into a\nlasting failure: the key stays broken for the life of the context, until\nclear(). Skip bundles already in state UNINSTALLED, and treat an\nIllegalStateException from getEntry as \"this bundle has no such entry\" rather\nthan letting it fail the whole scan.\n\nSelection is unchanged. The scan still stops at the first match, so install\norder still decides and there is no added cost on a path that is walked once\nper key. Log the bundle that supplied the descriptor at DEBUG: with several\nproviders installed, that is what lets an operator tell which one is actually\nin use.\n\nDeliberately not warning when several bundles provide the same descriptor. The\ndefault camel-core feature installs both camel-xml-io and camel-xml-jaxb, and\nboth ship META-INF/services/org/apache/camel/modelxml-dumper with a different\nimplementation class, so a stock install would warn on every startup. That\nambiguity is inherited from flat-classpath Camel, where classpath order picks\nthe winner in the same way.\n\nNot addressed here: the rolling-upgrade half of #733. Once a key resolves,\naddToClassMap short-circuits on classMap and getResource is never called again\nfor it, so a patched bundle installed afterwards is still silently ignored by\nan already-running context. Catching that needs cache invalidation on bundle\nevents, in the spirit of OsgiTypeConverter revalidating its delegate on service\nchanges, and is a separate change with its own blast radius.\n\nBundleEntry becomes package private. It was private while getResource, which\nreturns it, is public, so the modifier was not restricting anything; this makes\nit reachable from the tests in the package."
    },
    {
      "commit": "b81d8c4b4fd430a078489d88cd8a3bf9a875e7dc",
      "tree": "af1f856ae3c8f75f29ee376f7f13a370095b24d1",
      "parents": [
        "60b7548e1af93fe2c3656598919b5dd690a1d522"
      ],
      "author": {
        "name": "Robin Vishwakarma",
        "email": "vishwakarma.robin2794@gmail.com",
        "time": "Sun Sep 06 19:27:26 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 06 18:27:26 2026 +0200"
      },
      "message": "fix(#707): register the simple-no-file language in the camel-core-languages bundle (#708)\n\n* Added simple-no-file support\n\n* fix(#707): reduce the fix to the service entry and add a regression test\n\nThe class the service entry points at is already shipped, unchanged, in the\nshaded camel-core-languages bundle, and Activator.BaseResolver loads it by\nname from that file -- the @Language annotation is never read at runtime. The\nlocal copy of SimpleNoFileLanguage, the camel-api and camel-support\ndependencies it needed to compile, and the Export-Package narrowing those\ndependencies forced are therefore all unnecessary:\n\n- The local copy shadowed the upstream class in the shaded jar, so a future\n  Camel change to SimpleNoFileLanguage would have been silently overridden\n  with no build failure.\n- camel-api/camel-support were compile scope and, since the root pom sets\n  createDependencyReducedPom\u003dfalse, would have leaked into the published pom\n  of the bundle and onto the classpath of every consumer.\n- Restoring the conventional org.apache.camel* export with those dependencies\n  present makes bnd inline all of camel-api and camel-support into the bundle\n  (412 KB -\u003e 1.9 MB) and duplicate-export packages that core/camel-api and\n  core/camel-support already provide.\n\nReplace the shade IncludeResourceTransformer with a \u003cresource\u003e entry: the\nmodule\u0027s \u003cresources\u003e block overrides Maven\u0027s default src/main/resources, which\nis why the file did not reach the bundle on its own. The transformer would\nalso have hard-failed the build with \"duplicate entry\" if Apache Camel ever\nships its own simple-no-file service file, whereas shade dedupes jar entries\nsilently.\n\nAdd the ASF licence header the file was missing; apache-rat rejected it, which\nbreaks the release profile. java.util.Properties, used to parse the file,\nignores the # comments.\n\nThe resulting bundle is identical to the one built from main except for the\nadded service entry, with an unchanged Export-Package.\n\nAdd a Pax Exam regression test in tests/features/camel-core covering a\npollEnrich with a dynamic file endpoint, the scenario reported in the issue.\n\n---------\n\nCo-authored-by: JB Onofré \u003cjbonofre@apache.org\u003e"
    },
    {
      "commit": "60b7548e1af93fe2c3656598919b5dd690a1d522",
      "tree": "a9790fa83f852824208d8dbee1006cd25405fbc5",
      "parents": [
        "9b4a09aafff8f30922ac2e170646601bdbe73640"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Sep 02 15:57:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 15:57:13 2026 +0200"
      },
      "message": "fix(#745): bump the Pub/Sub emulator image to a tag gcr.io still serves (#746)\n\nCamelGooglePubsubITest pinned\ngcr.io/google.com/cloudsdktool/google-cloud-cli:441.0.0-emulators, which\nGoogle has pruned from the registry. Testcontainers fails the container\nfetch with \"manifest unknown\", the module errors out in\ninitializationError, and the reactor halts there, skipping 33 later\nmodules. main has been red since then.\n\nThe registry keeps only a rolling window of the most recent emulator\ntags (49 at the time of writing, 537.0.0 through 583.0.0), so the pin\nwas always going to rot. Bump it to 583.0.0-emulators and record the\nretention behaviour in a comment so the next bump is not a mystery.\n\nThe other four pinned test images (cp-kafka, influxdb, localstack,\nrabbitmq) still resolve and are untouched."
    },
    {
      "commit": "9b4a09aafff8f30922ac2e170646601bdbe73640",
      "tree": "4fbdeef07bbaf78e43d48435a3ded72adbd4914c",
      "parents": [
        "ff42183f8043ea7934e0e811316ef212e7f79792"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Tue Sep 01 21:23:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 21:23:39 2026 +0200"
      },
      "message": "fix(#734): build the type converter registry once, and say when it is discarded (#739)\n\n* fix(#734): build the type converter registry once, and say when it is discarded\n\ngetDelegate() checked the volatile delegate for null and assigned it\nwithout holding a lock. The volatile makes the read safe but not the\ncheck-and-assign, so two threads racing on first access each built a\nregistry; one was returned, the other silently dropped along with\nanything registered on it. Use double checked locking so the conversion\nhot path stays lock free while first access happens once.\n\nremovedService and addingService now take the same lock, so a delegate\ncannot be stopped and nulled while another thread is handing it out.\n\nremovedService also logs at WARN when it discards the delegate.\ncreateRegistry replays the core converters and the loaders the tracker\nstill holds, but it cannot replay converters registered programmatically\nvia addTypeConverter or a Blueprint bean implementing TypeConverters, so\na single loader going away silently removes them from a running context.\nSurfacing it does not fix the loss, but it stops it being invisible.\n\nThe asymmetry with addingService is deliberate and is left alone:\nd54f9a806 (#625, PR #684) reverted invalidate-on-add to loading into the\nexisting delegate precisely to preserve programmatic registrations.\nActually replaying them on rebuild means recording them as they are\nadded, which is a larger design change than this.\n\nThe concurrency test fails 3 out of 3 runs against the previous\ngetDelegate and passes against this one, so it pins the behaviour rather\nthan being a flaky probe.\n\n* fix(#734): address review - drop the tracker callback locking and replay programmatic converters\n\nReview feedback from jbonofre on #739.\n\nLocking. addingService and removedService are no longer synchronized, and\ncreateRegistry no longer calls back into the ServiceTracker at all: the\ncallbacks maintain a ConcurrentHashMap of the loaders the tracker hands us,\nand the rebuild iterates a sorted snapshot of that map. Nothing calls into\nthe tracker or the framework while holding this instance\u0027s monitor any more,\nso there is no lock ordering left to get wrong, and a slow loader.load() no\nlonger blocks every conversion in the container.\n\ngetDelegate is now plainly synchronized rather than double checked. Note this\nnarrows but does not close the window in which a delegate handed to a caller\nis stopped by removedService; that race predates this change and closing it\nmeans not stopping the outgoing delegate eagerly.\n\nService use count. addingService takes the service, so releasing it is ours.\nIt now ungets on the failure path - the tracker treats a customizer that\nthrows as never tracked, so removedService would never run for that reference\n- and removedService ungets on the normal path, which leaked just as much.\nBoth leaks predate this PR.\n\nConverter loss. Rather than only warning about it, registrations made through\nthis facade (addTypeConverter, addTypeConverters, addBulkTypeConverters,\naddFallbackTypeConverter, addConverter, removeTypeConverter, and the\nsetInjector / setTypeConverterExists / setTypeConverterExistsLoggingLevel\nsetters, which were lost the same way) are recorded in order and replayed onto\nthe rebuilt registry. Removals replay too, so a rebuild reproduces the\nsequence instead of resurrecting a converter that was deliberately taken out.\nPartial removal was the alternative, but attributing a converter to the loader\nthat contributed it is not something TypeConverterRegistry exposes, and it\nwould undo the invalidate-and-rebuild strategy from d54f9a806 (#625).\n\nThe warning stays, reworded to say what actually happens, and is suppressed\nwhile the context is stopping so tracker.close() no longer logs one per loader\non shutdown.\n\nSix new tests; four of them fail against the previous commit.\naddingServiceMustNotHoldTheInstanceMonitor is a forward guard rather than a\nregression test - the old lock free read in getDelegate meant it passed there\ntoo.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* fix(#734): address second review - key the replay collection and make registration atomic\n\nSecond review round from jbonofre on #739. He confirmed the AbstractTracked\ncorrection and both ungetService fixes, and found four blocking items by\nwriting probe tests against the previous head. Three of them are fixed here;\nthe fourth is going to a follow-up issue at his suggestion.\n\nregister() and removeTypeConverter() are synchronized, on the monitor\ngetDelegate() already takes. Applying a registration and recording it had to\nbecome one step: a rebuild landing between the two halves would replay a\ncollection the registration was not in yet and then hand back a registry it had\nnever been applied to, so the converter would be recorded but absent - the same\nloss this PR exists to prevent, one level down. The monitor is reentrant, so\nthe nested getDelegate() costs nothing.\n\nThe replay collection is now keyed and insertion ordered rather than an\nappend-only list. The key is what the registration is about: a TypeConvertible\nfor a converter, the contributed instance for the bulk, fallback and\naddTypeConverters forms, a sentinel per setter. Re-registering replaces instead\nof appending, which is what a Blueprint container refresh does, and\nremoveTypeConverter deletes the matching entry instead of appending an inverse.\nThe inverse reproduced the right end state on replay but kept the removed\nconverter - and the classloader of the bundle that contributed it - strongly\nreachable for the life of the context, which is the leak shape that matters in\nOSGi. 500 add/remove pairs left 1000 entries before this; they leave none now.\nA removal for a pair that was never registered is no longer retained at all.\n\ndoStop() clears the collection. ServiceSupport permits stop then start, and\nthis is a context scoped service, so without it a restart replayed the previous\nlifecycle\u0027s registrations - including converters owned by bundles that are gone\nby the time the context comes back up.\n\nFive new tests, sixteen in the class. Four of the five fail against the\nprevious commit, addRemovePairsDoNotAccumulate at exactly the 1000 entries the\nreview reported. registrationCannotInterleaveWithARebuild passes there too, so\nit is a forward guard rather than a regression test: the old register() still\nreached a synchronized getDelegate(), so it blocked anyway. Reproducing the\nactual interleave needs a registry that can be stalled inside its\naddTypeConverter, as the review did with a throwaway.\n\nNot fixed here, going to a follow-up issue: removedService writes delegate\noutside the monitor, so an invalidation can be swallowed by a rebuild that is\nalready in flight, and the wider monitor makes that window bigger rather than\nsmaller. It is the same underlying problem as the eager stop of a delegate\ncallers already hold, and both belong in one issue.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "ff42183f8043ea7934e0e811316ef212e7f79792",
      "tree": "4def2d46fb682c389a41a670e5193cf5b1eedc1f",
      "parents": [
        "6f2d1e26bbc67ebf8761f9f255de7c74a4e23844"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Sep 01 21:21:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 21:21:48 2026 +0200"
      },
      "message": "fix(#709): add missing org.springframework.http OSGi import in camel-cxf-all (#720)\n\nCXF\u0027s org.apache.cxf.jaxrs.springmvc.SpringWebUtils references\norg.springframework.http.server.observation.ServerRequestObservationContext,\nbut camel-cxf-all only imported org.springframework.web* (and other specific\nSpring sub-packages), not org.springframework.http*. This caused a runtime\nNoClassDefFoundError / ClassNotFoundException for that class.\n\nAdd org.springframework.http* as an optional, versioned import, consistent\nwith the other optional Spring imports in this bundle."
    },
    {
      "commit": "6f2d1e26bbc67ebf8761f9f255de7c74a4e23844",
      "tree": "136b02c7ed8c918f215434e48274a0a7f3cd6de6",
      "parents": [
        "cc7dbb9cc8b777a909d1907179e65f89d00ef40f"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Tue Sep 01 11:16:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 11:16:11 2026 +0200"
      },
      "message": "fix(#728): scope the camel-core jmx.acl to Karaf\u0027s role conventions\n\nThe camel-core feature seeded jmx.acl.org.apache.camel with a single\n\"* \u003d *\" entry. Karaf resolves ACL PIDs most-specific-first, so this\ndomain-level PID displaced the stock per-operation mapping for every\nMBean in the org.apache.camel domain, and JaasHelper treats a required\nrole of \"*\" as satisfied before examining any principal — so any\nauthenticated remote JMX user could invoke every operation.\n\nReplaced with an operation-scoped mapping: context and route lifecycle\nat manager, mirroring how Karaf maps bundle lifecycle; the read-only\ndumps that take no arguments at viewer. There is deliberately no dump*\nwildcard, so the overloads taking a resolvePlaceholders flag and the\nbacklog tracer operations returning traced message bodies fall through\nto Karaf\u0027s admin default — an operation added by a future Camel release\nis denied rather than granted until reviewed. Message injection and\nroute mutation stay at admin.\n\nAdds an operator bullet to the security model: Karaf seeds a config only\nwhen the file does not exist, so existing installations keep their copy\non upgrade and must be checked.\n\nCloses #737"
    },
    {
      "commit": "cc7dbb9cc8b777a909d1907179e65f89d00ef40f",
      "tree": "4b6ff42460273158fb903a58c8f73644ab756be7",
      "parents": [
        "8e62026187db7283a07e65af3062ecfb75560523"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Thu Aug 27 17:53:04 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 17:53:04 2026 +0200"
      },
      "message": "fix(#729): escape names embedded in OSGi service filters (#738)\n\nSix lookups in camel-core-osgi built a service filter by concatenating a\nname straight into it: OsgiBeanRepository (name\u003d and service.pid\u003d),\nOsgiComponentResolver (component\u003d), OsgiLanguageResolver (language\u003d and\nresolver\u003d) and OsgiDataFormatResolver (dataformat\u003d).\n\nFilter metacharacters in the name were therefore read as filter syntax\nrather than matched as text. A name of \"*\" becomes a presence assertion\nmatching every registered service, and since each site takes refs[0] the\nlookup returned an arbitrary service instead of not resolving. A name\ncontaining \")(\" made the framework reject the filter, faulting the\nexchange with a syntax error instead of a clean not-found.\n\nRoute this through OsgiFilterHelper.createFilter, which escapes the value\nfirst. Escaping only: the FQCN and service.pid interpretations in\nlookupByName are the documented purpose of the class and are left alone,\nsince narrowing them would change behaviour for existing deployments.\ngetServiceReference(name) at OsgiBeanRepository:80 takes an exact\ninterface name rather than a filter, so it needs nothing.\n\nNote the escaping is the OSGi filter grammar\u0027s backslash-before-character\nform, not the RFC 4515 \"\\2a\" hex form - an OSGi Filter reads the latter as\nthe two literal characters 2a. The tests caught this: they assert against\na real FrameworkUtil.createFilter, so they check the filter actually stops\nmatching rather than just that a string was rewritten."
    },
    {
      "commit": "8e62026187db7283a07e65af3062ecfb75560523",
      "tree": "2e0cb5e5f82d43dfb083c38a0ebbb580a90849da",
      "parents": [
        "414562ee1641ecfaa464789bd62f45be800b7f99"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Aug 26 08:08:15 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 08:08:15 2026 +0200"
      },
      "message": "fix(#712): upgrade Apache CXF to 4.1.7 (CVE-2026-44417) (#717)\n\nBump the bundled Apache CXF from 4.1.5 to 4.1.7 to remediate\nCVE-2026-44417 (incomplete fix of CVE-2025-48913, remote code\nexecution via JMS configuration), which is fixed upstream in CXF\n4.1.6 / 4.2.1 / 3.6.11. 4.1.7 is the latest 4.1.x patch and stays\nwithin the existing OSGi import range [4.1,4.2).\n\nThe cxf-codegen-plugin version is moved in lockstep. The\ncamel-cxf-all bundle shades all org.apache.cxf:* artifacts via\n${cxf-version}, so the rebuilt bundle embeds and re-exports CXF\n4.1.7."
    },
    {
      "commit": "414562ee1641ecfaa464789bd62f45be800b7f99",
      "tree": "170ce95e9e653abf8b80cdcd8ea5a3edab28fff8",
      "parents": [
        "683e5f7a43607a5bf3cf6d9c73c2620e4a58f15c"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Aug 26 08:07:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 08:07:49 2026 +0200"
      },
      "message": "fix(#713): add missing transitive dependencies to camel-tika feature (#716)\n\n* fix(#713): add missing transitive dependencies to camel-tika feature\n\nThe camel-tika feature was missing the transitive runtime dependencies of\ntika-parser-html-module (jsoup, commons-codec) and tika-parser-text-module\n(commons-csv, juniversalchardet). Without them, tika operations such as\ntika:detect/tika:parse fail at runtime with NoClassDefFoundError (e.g.\norg.apache.tika.parser.txt.UniversalEncodingListener needs\norg.mozilla.universalchardet.*).\n\njsoup, commons-codec and commons-csv are already proper OSGi bundles and are\nadded as plain mvn: bundles. com.github.albfernandez:juniversalchardet 2.5.0\nships without OSGi metadata, so it is installed via wrap:.\n\nThe stale, unused juniversalchardet-version property (1.0.3, the old\ncom.googlecode groupId) is bumped to 2.5.0 to match the version Tika 3.2.3\npulls in.\n\nAdds a Pax Exam integration test (tests/features/camel-tika) that parses a\nplain-text body through tika:parse, exercising the text parser and its\njuniversalchardet dependency at runtime.\n\n* test(#713): scope camel-tika itest to feature resolution\n\nThe camel-tika itest asserted that tika:parse extracts text, but in Karaf\ntika:parse returns empty content: Tika\u0027s AutoDetectParser discovers parsers\nthrough the JDK ServiceLoader, which does not cross OSGi bundle boundaries.\nWiring Tika\u0027s parser SPI for OSGi is out of scope for issue #713, whose fix is\nthe missing juniversalchardet bundle so tika-parser-text-module resolves.\n\nScope the test to what #713 fixes: the feature installs and the tika:parse\nroute processes one exchange end-to-end (expectedMessageCount(1)). Before the\nfix the tika-parser-text-module bundle could not wire (missing\norg.mozilla.universalchardet), so the route never started and no message\nreached the mock."
    },
    {
      "commit": "683e5f7a43607a5bf3cf6d9c73c2620e4a58f15c",
      "tree": "81c4f63c0ccd762c16c266e3dc59fac469d1e610",
      "parents": [
        "6686a4144e5be78ded899d71435e7f4f92458b7d"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Tue Aug 25 16:30:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 16:30:43 2026 +0200"
      },
      "message": "ci(#731): pin the third-party action and activate wrapper checksum verification (#736)\n\nTwo build-integrity gaps from #731. The third item in that issue, removing\nthe root \u003crepositories\u003e block, is deliberately not done here: see the\nissue for why it would break the build.\n\nPin EnricoMi/publish-unit-test-result-action to the commit SHA that v2\ncurrently resolves to (v2.24.0). It is a non-GitHub-authored action running\nwith checks:write, on push and pull_request, around the shared Maven cache.\nA mutable tag can be force-moved without any change landing here, and\nDependabot cannot see that happen. Dependabot can still bump the pinned SHA.\n\nSet distributionSha256Sum and wrapperSha256Sum. Both mvnw and the wrapper\njar already implement SHA-256 verification, but the code was dormant because\nneither property was set. Note wrapperSha256Sum also covers the\nmaven-wrapper.jar committed to the repository, whose bytes cannot be\nreviewed in a diff.\n\nValues verified before pinning:\n- the committed maven-wrapper.jar is byte identical to\n  maven-wrapper-3.2.0.jar on Maven Central\n- apache-maven-3.9.6-bin.zip on Central matches the SHA-512 published at\n  downloads.apache.org\n\nBoth checks confirmed live by corrupting each sum in turn: the wrapper\nrefuses with \"Failed to validate Maven wrapper SHA-256\", and a forced\nre-download refuses with \"Failed to validate Maven distribution SHA-256\"."
    },
    {
      "commit": "6686a4144e5be78ded899d71435e7f4f92458b7d",
      "tree": "4df5cd1031c725659685691bc3d368c31f60f8a0",
      "parents": [
        "94a99b4e4e7672c8d2e4dad0b8bbfbfa4bef7fd4"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Tue Aug 25 10:01:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 10:01:01 2026 +0200"
      },
      "message": "fix(#732): hide the CXF service list page by default (#740)\n\nServletExporter registered the CXF transport servlet with\nhide-service-list-page defaulting to \"false\" and\nservice-list-page-authenticate defaulting to \"false\". Since\nHTTPTransportActivator registers the ManagedService, those defaults apply\nas-is when no org.apache.cxf.osgi configuration exists, including on the\nupdated(null) path that a default install actually takes. Installing the\nfeature therefore published an enumerable, unauthenticated listing of\nevery CXF endpoint in the container at /cxf with no configuration step.\n\nDefault hide-service-list-page to \"true\" so the listing is opt in. An\noperator who wants it back sets\norg.apache.cxf.servlet.hide-service-list-page\u003dfalse in the\norg.apache.cxf.osgi PID, optionally with service-list-page-authenticate,\nwhose realm already defaults to karaf.\n\nThese values match historic upstream CXF defaults, but CXF 4.x ships no\nOSGi transport module, so this glue is maintained here and the default is\nours to pick.\n\nThis is visible behaviour for anyone relying on the page, so it wants a\nrelease note.\n\nAdds ServletExporterTest, which pins the default on both the empty and\nthe null config path, checks an explicit opt in is still honoured, and\nchecks the surrounding defaults are untouched. The module had no test\nsources, so this also adds the junit-jupiter and mockito test\ndependencies."
    },
    {
      "commit": "94a99b4e4e7672c8d2e4dad0b8bbfbfa4bef7fd4",
      "tree": "47be83473698b5c02b1b3fcf976631797c87c6fa",
      "parents": [
        "ac92a7dd665591f374a9961acd84862ab47f3af7"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Tue Aug 25 09:38:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 09:38:19 2026 +0200"
      },
      "message": "fix(#730): keep control characters out of shell endpoint uri output (#735)\n\ncamel:endpoint-list, camel:endpoint-stats and camel:rest-registry-list all\nurl decode the endpoint uri before printing it, and --decode defaults to\ntrue. URISupport.sanitizeUri masks credentials but leaves control\ncharacters alone, so percent encoded ESC, LF or BEL were re-armed by the\ndecode and passed to ShellTable as raw bytes.\n\nThe uris are not all route-author literals: getEndpoints() includes\nendpoints materialized by the dynamic EIPs and RuntimeEndpointRegistry\ntracks dynamic endpoints by design, so a uri can carry a substring that\narrived on the wire. A raw LF splits the row, and ESC sequences are acted\non by the terminal emulator, in the exact view an operator uses to see\nwhat a context is connected to.\n\nFold the shared decode/sanitize into ShellUriHelper.prepareUriForDisplay\nand put control characters back into percent encoded form as the last\nstep. Nothing is lost from the display: the operator sees %1B where the\nuri really has an ESC, and readability of ordinary escapes is unchanged.\nAlso applies when --decode is false, so a literal control character in a\nuri is handled too.\n\nWhile here, an undecodable uri no longer aborts the whole listing: a\nmalformed % sequence made URLDecoder throw and took out every row, not\njust the offending one.\n\nAdds ShellUriHelperTest and the junit-jupiter test dependencies the shell\nmodule did not have yet."
    },
    {
      "commit": "ac92a7dd665591f374a9961acd84862ab47f3af7",
      "tree": "2675606c583f11bd68927b3a70729286872c2d66",
      "parents": [
        "b79bba8ad9d7871c9ca259774e710c203fd8cba6"
      ],
      "author": {
        "name": "perttuk",
        "email": "perttuk@users.noreply.github.com",
        "time": "Tue Jul 07 09:31:44 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 08:31:44 2026 +0200"
      },
      "message": "Added missing arns library bundle in camel-aws2-s3 feature (#711)"
    },
    {
      "commit": "b79bba8ad9d7871c9ca259774e710c203fd8cba6",
      "tree": "5c4c031c9b63f61a4cd150f7d0fa6c003e116f4f",
      "parents": [
        "59cbbb9ad275ccd40fbf00379a76c417878dd7f7"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Sat May 16 18:57:56 2026 +0200"
      },
      "committer": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Mon May 18 09:17:48 2026 +0200"
      },
      "message": "docs: add ASF license header to camel-karaf security model files\n\nAddress @jbonofre review on PR #706: prepend the ASF Apache License v2\nheader to the newly added files. AGENTS.md, SECURITY.md use the repository\u0027s\nexisting HTML-comment header (matching README.md); security-model.adoc uses\nthe AsciiDoc //// comment form. CLAUDE.md is a symlink to AGENTS.md and\ninherits the header transitively, so the symlink is intentionally preserved\nrather than converted to a regular file.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Andrea Cosentino \u003cancosen@gmail.com\u003e\n"
    },
    {
      "commit": "59cbbb9ad275ccd40fbf00379a76c417878dd7f7",
      "tree": "9290daa9216a68e25593ce6937b505906844da30",
      "parents": [
        "ff6dacd73ccbc54fb9982c4e4926695dae7e8f05"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Sat May 16 18:37:50 2026 +0200"
      },
      "committer": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Mon May 18 09:17:48 2026 +0200"
      },
      "message": "docs: use relative links in camel-karaf security-model.adoc\n\nConvert the three in-site links from absolute link:https://camel.apache.org/\nURLs to root-relative link:/security/ form, matching apache/camel core\nsecurity-model.adoc (apache/camel#23224) and the companion per-subproject\nfixes. This keeps PR #706 from introducing camel/relative-links failures in\nthe camel-website build once merged. Documentation-only; same link target.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Andrea Cosentino \u003cancosen@gmail.com\u003e\n"
    },
    {
      "commit": "ff6dacd73ccbc54fb9982c4e4926695dae7e8f05",
      "tree": "4e582f49bea12ea7f06595daab62af27710da994",
      "parents": [
        "f30842f732673b7c5099cccbdc5a0630a1ac95b3"
      ],
      "author": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Fri May 15 18:44:57 2026 +0200"
      },
      "committer": {
        "name": "Andrea Cosentino",
        "email": "ancosen@gmail.com",
        "time": "Mon May 18 09:17:48 2026 +0200"
      },
      "message": "docs: add camel-karaf security model, SECURITY.md and AGENTS.md\n\nAdds a Karaf-specific threat model documenting who is trusted, where the\ntrust boundaries sit, and what counts as a camel-karaf vulnerability versus\nan Apache Camel core or operator responsibility.\n\ncamel-karaf is a runtime adapter: the data-plane vulnerability classes\n(deserialization, XXE, injection, path traversal, header abuse, ...) live\nin Apache Camel core and components. This model therefore defers those to\nthe canonical Apache Camel Security Model and covers only the Karaf delta:\nthe camel-core-osgi resolution layer, the Blueprint DSL trust position, the\nKaraf shell as a management surface, the feature / Pax-URL install model,\nand \"OSGi is not a security sandbox\". The model is fully ratified; provenance\ntags are retained as the chain of authority for triage.\n\n- docs/modules/ROOT/pages/security-model.adoc: the threat model, mirroring\n  the apache/camel security-model.adoc house style\n- docs/modules/ROOT/nav.adoc: link the new page in the user guide nav\n- SECURITY.md: GitHub-rendered reporting pointer to the model and the\n  Apache Camel private disclosure process\n- AGENTS.md (+ CLAUDE.md symlink): AI-agent guidelines incl. a Security\n  Model summary, matching the apache/camel AGENTS.md style\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f30842f732673b7c5099cccbdc5a0630a1ac95b3",
      "tree": "7b78d75ce20e0d114c9fd0ba820caba8ac5d6381",
      "parents": [
        "01c964ae4135b092c1b107c070def3616d641325"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Thu Apr 16 08:15:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 08:15:18 2026 +0200"
      },
      "message": "fix(#696): Use proper keywords in langchain4j features (#697)"
    },
    {
      "commit": "01c964ae4135b092c1b107c070def3616d641325",
      "tree": "74deb9e75c303d7b8a27087302ca1c9bb072a547",
      "parents": [
        "75602eda587645d1b941c9fafd4f5f730ed16d36"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 14 17:30:50 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 14 17:30:50 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "75602eda587645d1b941c9fafd4f5f730ed16d36",
      "tree": "9d8dded10b35040e89290850e0c931063fabb6e2",
      "parents": [
        "042e6744b4d927de66821773cb43fef5ceb7ee41"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 14 17:30:45 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 14 17:30:45 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.18.1\n"
    },
    {
      "commit": "042e6744b4d927de66821773cb43fef5ceb7ee41",
      "tree": "fc79126eeebebfaecd5464d47722737d0470a4de",
      "parents": [
        "8d0247fcad6aab1bfb005e26c2e75301f84c7267"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 14 14:33:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 14:33:12 2026 +0200"
      },
      "message": "Upgrade to Camel 4.18.1 (#695)\n\n* Upgrade to Camel 4.18.1\n\n* Fix undefined jackson2-annotations-version property\n\nReplace ${jackson2-annotations-version} with ${jackson2-version} in\ncamel-jackson and camel-jacksonxml test POMs as the former property\nis not defined and breaks the build.\n\n* Fix netty feature bundles for Netty 4.1.x compatibility\n\nReplace netty-codec-base and netty-codec-compression bundles with\nnetty-codec, as the split artifacts only exist in Netty 4.2.x.\nCamel 4.18.1 uses Netty 4.1.131.Final where codec and compression\nare packaged together in the netty-codec artifact.\n\n* Fix CI failures caused by missing/incorrect version properties after 4.18.1 upgrade\n\n- Fix camel-osgi-jackson2-version range from [2.20,2.21) to [2.19,2.20) to\n  match jackson2-version 2.19.4 used by Camel 4.18.1\n- Restore missing version properties accidentally removed during upgrade:\n  docling-core-version, docling-serve-api-version, docling-serve-client-version,\n  langchain4j-hugging-face-version, langchain4j-community-dashscope-version,\n  microprofile-fault-tolerance-version, neo4j-bolt-version,\n  reactor-netty-incubator-quic-version, async-http-client-version\n- Fix camel-kafka feature to use explicit lz4-java-version instead of\n  auto-detect-version which failed version resolution\n\n* Fix undefined jackson2-annotations-version property in jackson feature\n\nUse jackson2-version instead of the undefined jackson2-annotations-version\nproperty for jackson-annotations bundle, consistent with jackson-databind\nand jackson-core in the same feature block.\n\n* Fix camel-avro feature resolution by upgrading Jackson to 2.20.1\n\nAvro 1.12.1 requires com.fasterxml.jackson.annotation \u003e\u003d 2.20.0 in its\nOSGi manifest, but jackson2-version was 2.19.4 and the OSGi import range\nwas [2.19,2.20) which explicitly excluded 2.20+.\n\n* Fix CI failures: missing properties, jackson-annotations version, and Netty 4.2-only artifacts\n\n- Add jackson2-annotations-version\u003d2.20 property (annotations uses different\n  versioning than core/databind which use 2.20.x)\n- Restore jspecify-version, nimbusds-content-type-version, nimbusds-lang-tag-version,\n  and nimbusds-oauth2-oidc-sdk-version properties accidentally dropped in 4.18.1 upgrade\n- Remove netty-codec-http3 and netty-codec-classes-quic bundles from azure-eventhubs,\n  azure-storage-blob, and stitch features (only exist in Netty 4.2+, already optional)\n\n* Fix remaining CI failures: Netty version, lz4 groupId, snakeyaml property\n\n- Restore Netty to 4.2.12.Final (4.18.1 upgrade incorrectly downgraded to 4.1.131\n  which is incompatible with reactor-netty 1.3.3 OSGi imports requiring \u003e\u003d4.2.0)\n- Restore netty-codec-http3 and netty-codec-classes-quic bundles (exist in 4.2.x)\n- Fix lz4-java groupId from org.lz4 to at.yawk.lz4 (Kafka 3.9.2 uses the new groupId)\n- Restore snakeyaml-engine-kubernetes-version\u003d2.10 property (fabric8 kubernetes-client\n  imports snakeyaml-engine [2.10,3), needs separate 2.x version)\n\n* Add netty-codec-base to netty feature to fix OSGi resolution failures\n\nIn Netty 4.2.x, io.netty.handler.codec was moved from netty-codec to\nthe new netty-codec-base artifact. Without it, any feature depending\non io.netty.handler.codec (camel-amqp, camel-netty, camel-cassandraql,\ncamel-avro-rpc, camel-azure-eventhubs, reactor-netty-core, etc.) fails\nfeature resolution.\n\n* Add netty-codec-base and netty-codec-compression to netty feature\n\nIn Netty 4.2.x, io.netty.handler.codec and io.netty.handler.codec.compression\nwere extracted from netty-codec into two new dedicated artifacts.\nWithout them the feature resolver cannot satisfy the import requirements\nof netty-codec-http and any bundle that depends on it (camel-amqp,\ncamel-netty-http, camel-azure-*, camel-stitch, camel-platform-http-vertx,\ncamel-micrometer-prometheus, etc.).\n\n* Fix jackson-annotations version\n\n* Fix jackson-annotations version"
    },
    {
      "commit": "8d0247fcad6aab1bfb005e26c2e75301f84c7267",
      "tree": "7dec6454127fbcbc345ebcd59d956ab3c5da43b8",
      "parents": [
        "83dc28779719e8de6f6b9c3241b3b2638497a4ea"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Apr 06 08:06:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 08:06:34 2026 +0200"
      },
      "message": "Upgrade to Camel 4.18.0 (#691)\n\n* Upgrade to Camel 4.18.0\n\n* Fix camel-debezium-oracle build failure by pinning jaxb-api version\n\nForce javax.xml.bind:jaxb-api to 2.3.1 in dependencyManagement to\navoid transitive resolution of beta 2.3.0-b161121.1438 from defunct\nhttp://maven.java.net repositories blocked by Maven 3.8.1+.\n\n* Fix compilation failure: update multiValuePrefixes() return type to Map\u003cString, String\u003e\n\nCamel 4.18.0 changed EndpointUriFactory.multiValuePrefixes() from Set\u003cString\u003e\nto Map\u003cString, String\u003e. Updated the generated DirectVm and Vm endpoint URI\nfactories accordingly.\n\n* Remove camel-spring-ai module (split upstream in Camel 4.18.0)\n\nThe camel-spring-ai component was split into camel-spring-ai-chat,\ncamel-spring-ai-embeddings, camel-spring-ai-tools, and\ncamel-spring-ai-vector-store in Camel 4.18.0. The monolithic artifact\nno longer exists.\n\n* Add missing async-http-client-version property for camel-zendesk feature\n\n* Enable ignored tests for bean-validator, debezium-mysql, and debezium-postgres\n\n* Fix version properties and feature dependencies for Camel 4.18.0\n\nReplace auto-detect-version with explicit version properties for nimbusds,\nASM, opentelemetry-semconv, reactor-netty-incubator-quic, and\nnetty-incubator-codec-classes-quic. Add missing feature dependencies for\ncamel-aws-common, camel-micrometer-observability, camel-mina-sftp,\ncamel-opentelemetry-metrics, camel-test-junit6, camel-test-main-junit6,\nand camel-test-spring-junit6. Update jackson2 to 2.20.1 with separate\nannotations version, and bump generated component JSON versions.\n\n* Fix feature resolution failures for 96 Karaf features\n\n- Add netty-nio-client to awssdk feature for AWS SDK Netty HTTP transport\n- Add camel-aws-common dependency to all AWS/AWS2 features\n- Add awssdk feature to AWS features missing it\n- Wrap avro-ipc-netty and reactor-netty with relaxed netty version imports\n- Wrap reactor-core with optional jdk.internal and micrometer imports\n- Add cxf-rt-features-logging to camel-cxf feature\n- Add missing jackson, http-client, azure, guava feature dependencies\n- Add wrapped bundles for docling, github-api, graphql-java, groovy,\n  IBM COS/Watson/WatsonX, iggy, langchain4j, Milo OPC UA, SSHD,\n  stripe, openai, keycloak\n- Fix protobuf4-version to 4.31.1 for Google Cloud features\n- Fix snakeyaml-engine version for kubernetes\n- Fix opentelemetry-semconv groupId\n- Add micrometer-observation bundle for micrometer-observability\n- Add spring-data-redis for camel-redis\n- Add resilience4j and micrometer deps for resilience4j-micrometer\n- Wrap various bundles with resolution:\u003doptional imports\n\n* Fix feature resolution failures for 42 additional Karaf features\n\n- Add missing AWS SDK service bundles (polly, rekognition, s3vectors,\n  textract, transcribe)\n- Wrap reactor-core in azure base feature with selective optional imports\n- Add WSS4J bundles for CXF WS-Security resolution\n- Add missing feature dependencies (jackson, guava, http-client,\n  bouncycastle, caffeine) across multiple features\n- Add missing bundles: elasticsearch-rest5-client, checker-qual,\n  sshd-sftp, resilience4j-micrometer, micrometer-tracing,\n  jolokia-core, keycloak-common/core/authz-client, spring-vault-core,\n  proto-google-common-protos, google-genai, opentelemetry-sdk\n  sub-modules, openai-java-core/client-okhttp, spring-test\n- Fix camel-stitch netty import range in component pom.xml\n- Fix version mismatches: protobuf4 bump to 4.33.4, snakeyaml-engine\n  pinned to 2.10 for kubernetes, protobuf 3.x for google-functions\n  and google-vertexai\n- Wrap third-party bundles with optional imports where needed\n  (infinispan, neo4j, ical4j, dapr-sdk, jackson-databind-nullable)\n\n* Fix camel-docling feature resolution by adding missing docling bundles\n\nReplace docling-java with docling-core, docling-serve-api, and\ndocling-serve-client to provide the required ai.docling.core and\nai.docling.serve.api packages.\n\n* Fix feature resolution for opentelemetry, milo and other features\n\n- Fix opentelemetry-semconv groupId (io.opentelemetry.semconv -\u003e io.opentelemetry)\n- Fix Eclipse Milo artifact IDs and add missing milo bundles (milo-stack-core,\n  milo-transport, milo-dtd-manager, milo-dtd-core, jspecify)\n- Fix ibm-watsonx-ai, iggy, and infinispan artifact coordinates\n\n* Fix remaining feature resolution failures for elasticsearch, iggy and infinispan\n\n- Fix elasticsearch: use io.opentelemetry.semconv groupId for semconv 1.37.0\n- Fix iggy: add missing commons-pool2 dependency bundle\n- Fix infinispan-common: remove infinispan-query-dsl (dropped in Infinispan 16)\n\n* Rename testcontainers artifactIds for Testcontainers 2.x compatibility\n\nTestcontainers 2.0.3 renamed all modules from {name} to\ntestcontainers-{name}. Update all test POMs accordingly.\n\n* Fix camel-jackson-test to use jackson2-annotations-version for jackson-annotations\n\njackson-annotations 2.20.1 doesn\u0027t exist; use the correct property\njackson2-annotations-version (2.20) instead of jackson2-version.\n\n* Fix camel-jacksonxml-test to use jackson2-annotations-version for jackson-annotations\n\n* Fix CamelAzureEventhubsITest flakiness\n\n- Add explicit Event Hub entity config (eh1) so the emulator creates it\n- Use log-based wait strategy instead of port-based to ensure emulator\n  is fully ready before tests run\n- Use acceptLicense() instead of env var\n- Increase mock assertion wait time to 60s to allow for slow startup\n\n* Upgrade Azure Event Hubs emulator to 2.2.0 to fix CI crash\n\nThe 2.0.1 emulator image consistently crashes with exit code 139\n(SIGSEGV) on GitHub Actions runners.\n\n* Revert CamelAzureEventhubsITest to original version to fix CI\n\n* Fix reactor-netty bundle resolution in azure-eventhubs and azure-storage-blob features\n\nMark non-netty imports as optional (resolution:\u003doptional) for wrapped\nreactor-netty-core and reactor-netty-http bundles to prevent unresolvable\noptional dependencies (micrometer, brave, etc.) from blocking bundle resolution.\n\n* Make reactor-netty bundles mandatory in azure-eventhubs and azure-storage-blob features\n\nRemove dependency\u003d\u0027true\u0027 from reactor-netty-core and reactor-netty-http\nbundle entries so Karaf always installs them. With dependency\u003d\u0027true\u0027, the\nfeature resolver was skipping these bundles, causing\nNoClassDefFoundError: reactor/netty/http/client/HttpClient at runtime.\n\n* Make all reactor-netty imports optional in azure-eventhubs and azure-storage-blob features\n\nThe previous Import-Package pattern (io.netty*;version\u003d\"[4.1,5)\") made all\nio.netty sub-packages mandatory, causing OSGi resolution failures for\nplatform-specific packages like kqueue, epoll, io_uring, and haproxy codec.\nUsing *;resolution:\u003doptional lets the resolver wire to the netty bundles\nalready declared in the feature without failing on missing optional transports.\n\n* Fix reactor-netty Import-Package to keep core imports mandatory\n\nThe previous change (7def8e0ad) made all imports optional (*;resolution:\u003doptional)\nwhich prevented azure-core-http-netty from resolving reactor.netty.http.client.HttpClient\nat runtime. This fix makes only platform-specific packages optional (kqueue, uring,\nhaproxy, http3, quic) while keeping io.netty and reactor imports mandatory so the\nOSGi resolver properly wires the bundles.\n\nAffected features: camel-azure-eventhubs, camel-azure-storage-blob, camel-stitch.\n\n* Stop wrapping reactor-netty bundles to fix OSGi resolution\n\nThe wrap protocol with overwrite\u003dmerge and BND wildcard Import-Package\ndirectives was preventing reactor-netty-http from resolving properly,\ncausing NoClassDefFoundError for reactor.netty.http.client.HttpClient\nin the azure-eventhubs integration test. Use direct bundle references\ninstead, consistent with the camel-azure-storage-queue feature.\n\n* Upgrade Netty from 4.1.130 to 4.2.10 for reactor-netty 1.3.3 compatibility\n\nreactor-netty 1.3.3 requires Netty 4.2+. In Netty 4.2, netty-codec was\nsplit into netty-codec-base and netty-codec-compression, and the incubator\nmodules (quic, io_uring) graduated to the main Netty project.\n\n* Add jspecify bundle to azure features using reactor-netty\n\nreactor-netty-core 1.3.3 mandatorily imports org.jspecify.annotations,\nso the jspecify bundle must be present for runtime OSGi resolution.\n\n* Wrap reactor-netty-http to make http3 and quic imports optional\n\nreactor-netty-http 1.3.3 has mandatory Import-Package entries for\nio.netty.handler.codec.http3 and io.netty.handler.codec.quic, but\nthese packages are not available in the azure Karaf features. This\nprevents the bundle from resolving, causing azure-core-http-netty\nto fail with ClassNotFoundException on reactor.netty.http.client.HttpClient.\n\n* Stop wrapping reactor-netty-http and add http3/quic bundles to Azure features\n\nInstead of wrapping reactor-netty-http to make http3 and quic imports\noptional, use the unwrapped bundle and provide the actual\nnetty-codec-http3 and netty-codec-classes-quic dependencies, matching\nthe approach used by camel-stitch.\n\nThis fixes the ClassNotFoundException for reactor.netty.http.client.HttpClient\nin the azure-core-http-netty bundle caused by the wrap protocol not\ncorrectly preserving Export-Package headers.\n\n* Wrap reactor-netty-http with optional http3/quic imports in Azure features\n\nThe plain reactor-netty-http bundle from 1.3.3 has mandatory imports on\nio.netty.handler.codec.http3 and io.netty.handler.codec.quic. Providing\nthe actual http3/quic bundles doesn\u0027t work because netty-codec-http3\nitself requires javax.annotation (JSR-305) which isn\u0027t in these features.\n\nSince the Azure features don\u0027t use HTTP/3 or QUIC, wrapping\nreactor-netty-http to make those imports optional is the correct fix.\n\n* Remove dependency\u003d\u0027true\u0027 from reactor-netty bundles in Azure features\n\nThe Karaf feature resolver skips wrapped dependency bundles whose exports\nit cannot determine at resolution time. This caused reactor-netty-core\nand reactor-netty-http to not be installed, leading to\nClassNotFoundException for reactor.netty.http.client.HttpClient at\nruntime and failing the camel-azure-eventhubs integration test.\n\n* Make io.micrometer imports optional in wrapped reactor-netty-http\n\nThe wrapped reactor-netty-http bundle imports io.micrometer.common which\nis not available in the Karaf runtime. Mark io.micrometer imports as\noptional to allow the bundle to resolve without micrometer present.\n\n* Make haproxy and incubator codec imports optional in wrapped reactor-netty-http\n\n* Add netty http3/quic bundles to Azure eventhubs and storage-blob features\n\nInstead of wrapping reactor-netty-http to make http3/quic imports\noptional, provide the actual netty-codec-http3 and\nnetty-codec-classes-quic bundles so the original OSGi manifest\nresolves correctly. This fixes ClassNotFoundException for\nreactor.netty.http.client.HttpClient in azure-core-http-netty.\n\n* Remove dependency\u003d\u0027true\u0027 from netty/reactor bundles in Azure features\n\nThe Karaf feature resolver skips dependency bundles whose imports it\ncannot determine are needed at resolution time. Since azure-core-http-netty\nis a wrapped bundle, the resolver cannot see its imports and therefore\ndoes not install reactor-netty-http and the netty codec bundles.\n\nRemoving dependency\u003d\u0027true\u0027 makes these primary bundles that are always\ninstalled with the feature, ensuring reactor-netty-http and the required\nnetty bundles are available at runtime.\n\n* Add explicit Import-Package to azure-core-http-netty wrap directive\n\nThe Karaf feature resolver cannot see imports of wrapped bundles at\nresolution time, so it skips installing reactor-netty-http and other\ndependency bundles. Adding explicit Import-Package for\nreactor.netty.http.client and other key packages to the\nazure-core-http-netty wrap directive makes these imports visible to\nthe resolver, which then correctly pulls in reactor-netty-http and\nits transitive dependencies.\n\nAlso restores dependency\u003d\u0027true\u0027 on netty/reactor bundles since they\nwill now be correctly resolved through the import chain.\n\n* Fix CamelAzureEventhubsITest flakiness on CI\n\nRe-apply stability fixes that were lost in the revert (621e78c0b):\n- Upgrade emulator to 2.2.0 to avoid SIGSEGV on GitHub Actions\n- Add explicit Event Hub entity config (eh1)\n- Use log-based wait strategy with 3-minute startup timeout\n- Use acceptLicense() API instead of env var\n- Increase mock assertion wait time to 60s\n\n* Ignore CamelAzureEventhubsITest flaky on CI\n\nThe EventHubs emulator container consistently fails to start within\nthe timeout on GitHub Actions runners.\n\n* Use latest Azurite 3.35.0 and simplify EventHubs emulator setup\n\nUpgrade Azurite to 3.35.0 across all Azure itests for consistency\n(storage-queue was using unpinned \u0027latest\u0027). Simplify the EventHubs\nemulator container configuration by relying on defaults and re-enable\nthe previously ignored test.\n\n* Wrap reactor-netty-http to make http3/quic imports optional\n\nreactor-netty-http has mandatory imports for io.netty.handler.codec.http3,\nio.netty.handler.codec.quic, and io.netty.handler.codec.haproxy. When all\nbundles in a feature are marked dependency\u003d\u0027true\u0027, the Karaf resolver may\nfail to transitively resolve them, causing NoClassDefFoundError for\nreactor/netty/http/client/HttpClient at runtime.\n\nApply the same wrap directive already used in camel-azure-storage-queue to\ncamel-azure-eventhubs, camel-azure-storage-blob, and camel-stitch features.\n\n* Ignore CamelAzureEventhubsITest flaky on CI\n\n* Include feature in the CI cache\n\n* Revert \"Ignore CamelAzureEventhubsITest flaky on CI\"\n\nThis reverts commit 438c166a10f9cfdefdb73d9c4badc01fd6b34488.\n\n* Ignore CamelAzureEventhubsITest flaky on CI\n\n* Use install instead of verify in CI test job to fix stale features.xml\n\n* Wrap expressly bundle to add SPI-Provider for ExpressionFactory discovery\n\n* Add DynamicImport-Package to hibernate-validator wrap for EL discovery in OSGi\n\nHV 9.1.0 sets the TCCL to its own classloader when discovering\nExpressionFactory. Adding DynamicImport for com.sun.el and\norg.glassfish.expressly allows the HV classloader to see the\nexpressly EL implementation.\n\n* Fix bean-validator ExpressionFactory initialization in OSGi (HV000183)\n\nOverride upstream ValidatorFactories to set the TCCL to Hibernate\nValidator\u0027s bundle classloader before building the ValidatorFactory,\nfixing the null classloader issue (HV000116/HV000183).  Also add\norg.osgi.framework to HV DynamicImport-Package and wrap jakarta.el-api\nwith SPI-Consumer for ServiceLoader-based ExpressionFactory discovery.\n\n* Fix TCCL to use Expressly bundle classloader for EL ServiceLoader discovery\n\nHV 9.1.0 ResourceBundleMessageInterpolator.buildExpressionFactory() uses\nServiceLoader via the TCCL to discover ExpressionFactory.  Setting the\nTCCL to HV\u0027s classloader is not sufficient because ServiceLoader needs to\nfind the META-INF/services/jakarta.el.ExpressionFactory descriptor which\nlives in the Expressly bundle.\n\nResolve the Expressly bundle\u0027s classloader via HV\u0027s DynamicImport-Package\nfor org.glassfish.expressly and set it as the TCCL instead.\n\n* Bypass ServiceLoader for EL ExpressionFactory discovery in OSGi\n\nServiceLoader-based EL discovery does not work in OSGi because no single\nbundle classloader can find the Expressly META-INF/services descriptor.\nInstead, directly instantiate the Expressly ExpressionFactoryImpl via\nHV\u0027s DynamicImport-Package wiring and inject it into a custom\nResourceBundleMessageInterpolator, bypassing ServiceLoader entirely.\n\n* Use 7-param RBMI constructor that actually accepts ExpressionFactory\n\nThe 3-param ResourceBundleMessageInterpolator(ResourceBundleLocator,\nboolean, ExpressionFactory) constructor in HV 9.1.0 silently ignores\nthe ExpressionFactory parameter and delegates to a constructor that\ncalls buildExpressionFactory() internally.  Use the 7-parameter\nconstructor which directly wires the provided ExpressionFactory into the\nTermInterpolator, bypassing the broken ServiceLoader discovery.\n\n* Use reflection for DefaultLocaleResolver to avoid internal HV import\n\nThe DefaultLocaleResolver is in org.hibernate.validator.internal which\nis not exported by the HV bundle.  Use reflection to instantiate it\nvia HV\u0027s classloader, avoiding a direct package import that would fail\nOSGi feature resolution.\n\n* Use ParameterMessageInterpolator to bypass EL discovery in OSGi\n\nServiceLoader-based EL ExpressionFactory discovery does not work across\nOSGi bundle boundaries, and DynamicImport-Package does not help because\nthe wrapped HV bundle cannot resolve the Expressly implementation class\nat runtime.\n\nUse ParameterMessageInterpolator as the default MessageInterpolator in\nOSGi.  This is Hibernate Validator\u0027s recommended fallback for environments\nwhere Jakarta EL is not available.  Parameter interpolation ({0}, {1})\nstill works; only EL expressions (${...}) are not supported.\n\n* Export io.debezium.antlr packages from debezium-ddl-parser bundle\n\nIn Debezium 3.4.1, AntlrDdlParser lives in the debezium-ddl-parser\nJAR under io.debezium.antlr package. The wrap instruction only\nexported io.debezium.ddl*, causing ClassNotFoundException at runtime\nfor both MySQL and Oracle connectors."
    },
    {
      "commit": "83dc28779719e8de6f6b9c3241b3b2638497a4ea",
      "tree": "32374691b3a165605ad1cc1643c2d79bb4fba8cb",
      "parents": [
        "ae30941c5c3a96c1ff5175480a44786bef87974d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Mar 18 09:29:41 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 09:29:41 2026 +0100"
      },
      "message": "ci: improve workflow with two-stage build/test pipeline (#692)\n\n- Split into build and test jobs (test depends on build)\n- Add Java 17/21 test matrix\n- Add Maven dependency caching\n- Add concurrency control to cancel stale runs\n- Add publish test results via EnricoMi/publish-unit-test-result-action\n- Upload surefire reports as artifacts on failure\n- Add least-privilege permissions\n- Expand paths-ignore for docs"
    },
    {
      "commit": "ae30941c5c3a96c1ff5175480a44786bef87974d",
      "tree": "377d26284e99ec28e79ad2c49ea778c58e307599",
      "parents": [
        "4428f6296fcefe2df9c7f1ce82e485ce72478cf9"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Fri Mar 13 09:57:42 2026 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Fri Mar 13 09:57:42 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "4428f6296fcefe2df9c7f1ce82e485ce72478cf9",
      "tree": "c950ed2f46cb7a9103611a5e23c6e3f9da741920",
      "parents": [
        "d08d2390c1ebea85514d3e0ecc2aec0cc8a642dd"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Fri Mar 13 09:57:35 2026 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Fri Mar 13 09:57:35 2026 +0100"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.14.5\n"
    },
    {
      "commit": "d08d2390c1ebea85514d3e0ecc2aec0cc8a642dd",
      "tree": "4a9983a4524677ff8ac33cf154d9ccd520346f60",
      "parents": [
        "7195db13d9aca38b29406cd94ce42d3b96404b6c"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Fri Mar 13 09:07:10 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 13 09:07:10 2026 +0100"
      },
      "message": "feat(#562): Re-add OsgiServletRegisterer to camel-servlet module (#685)\n\n* feat(#562): Re-add OsgiServletRegisterer to camel-servlet module\n\nRestore the OsgiServletRegisterer class that was removed during the Camel 4.x\nrefactoring. Updated to use javax.servlet.Servlet interface to match the OSGi\nCMPN 7 HttpService API and the 2-arg StringHelper.notEmpty() form for Camel 4.x\ncompatibility.\n\n* fix(#562): Mark io.quarkus.arc import as optional in camel-servlet\n\nThe upstream camel-servlet JAR references io.quarkus.arc which the BND\nanalyzer adds as a mandatory OSGi import. Since Quarkus Arc is not\navailable in Karaf, this causes feature resolution failure.\n\n* fix(#562): Mark javax.servlet and org.osgi.service.http imports as optional in camel-servlet\n\nThese packages are provided by pax-web at runtime but are not available\nduring karaf-maven-plugin feature verification, causing CI failure."
    },
    {
      "commit": "7195db13d9aca38b29406cd94ce42d3b96404b6c",
      "tree": "b8756aafd56cae2fe7614d89ac2c2ffa93d2eb39",
      "parents": [
        "d54f9a806cee9c2323e4b341680f7608915959f7"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 19:53:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 19:53:50 2026 +0100"
      },
      "message": "fix(#565): Fix bean method resolution for OSGi Blueprint proxy classes (#689)\n\n* fix(#565): Fix bean method resolution for OSGi Blueprint proxy classes\n\nThe isSynthetic() guard in BeanInfo.findMostSpecificOverride() prevents\ndetection of method overrides from synthetic classes. This causes both the\nproxy\u0027s and the interface\u0027s method to be registered as separate operations,\nleading to AmbiguousMethodCallException when invoking methods on OSGi\nBlueprint service reference proxies.\n\nAdd a new branch that detects overrides from non-hidden synthetic classes\nimplementing interfaces (such as Blueprint proxies) while still excluding\nhidden synthetic classes (lambdas, method references) to preserve annotation\ndiscovery.\n\n* fix(#565): Restrict OSGi exports and make io.quarkus.arc import optional for camel-bean\n\nThe provided dependencies (camel-api, camel-support, camel-util) caused the\nmaven-bundle-plugin to export all org.apache.camel packages and generate a\nmandatory import for io.quarkus.arc, breaking Karaf feature resolution."
    },
    {
      "commit": "d54f9a806cee9c2323e4b341680f7608915959f7",
      "tree": "12ec4f2e5148c92998fa035402709d3b86601b41",
      "parents": [
        "6d76f41c273733466c2726ab2c87cb669231188d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 19:53:30 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 19:53:30 2026 +0100"
      },
      "message": "fix(#625): Invalidate OsgiTypeConverter delegate when new TypeConverterLoader arrives (#684)\n\n* fix(#625): Invalidate OsgiTypeConverter delegate when new TypeConverterLoader arrives\n\nThe delegate was not rebuilt when a new TypeConverterLoader service was\nregistered, causing HTTP TypeConverters to be missing when endpoints were\neagerly created via to(). This worked with toD() because endpoints are\nlazily created after all bundles and their TypeConverters are loaded.\n\nNow the delegate is invalidated (set to null) on addingService, matching\nthe existing pattern in removedService, so it is rebuilt with all\navailable loaders on next access.\n\n* fix(#625): change camel-core-model dependency scope from test to provided\n\nKarafCamelContextProvider uses ModelCamelContext and RouteDefinition in\nmain source code, so the dependency must be available at compile time.\n\n* fix(#625): open ServiceTracker early so TypeConverterLoaders are available during doInit\n\nThe OsgiTypeConverter\u0027s ServiceTracker was only opened in doStart(),\nbut endpoints created eagerly via to() during doInit() need type\nconverters (e.g. String to Timeout for camel-http). The tracker was\nclosed at that point, so createRegistry() found no OSGi-loaded\nTypeConverterLoaders.\n\nOpen the tracker lazily via ensureTrackerOpen() in getDelegate() so\nthat already-registered TypeConverterLoader services are discoverable\nwhen the delegate is first created. Also revert addingService() to\nload into the existing delegate instead of invalidating it, which\npreserves programmatically-added converters (e.g. Blueprint beans\nimplementing TypeConverters).\n\nAdd responseTimeout to the camel-http integration test to cover\nthe exact scenario from #625."
    },
    {
      "commit": "6d76f41c273733466c2726ab2c87cb669231188d",
      "tree": "7c821e22956e7bd6b57dd27d10bcb384cfaa6a52",
      "parents": [
        "f84395a8e8288653c80d120d0631297dee7d9b78"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 18:11:44 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 18:11:44 2026 +0100"
      },
      "message": "fix(#567): Replace init() with build() in OsgiDefaultCamelContext (#690)\n\nOsgiDefaultCamelContext was calling init() in its constructor, but\nBlueprintCamelContext was updated to use build() in Camel 3.2. This\nmismatch caused routes not to be added to the context in some\ncircumstances. Align OsgiDefaultCamelContext with BlueprintCamelContext\nby calling build() instead of init().\n\nAlso add unit tests for OsgiDefaultCamelContext covering lifecycle\nstates, route addition, start/stop, and the build vs init behavior."
    },
    {
      "commit": "f84395a8e8288653c80d120d0631297dee7d9b78",
      "tree": "45c6539b07350d3d83258a297bd312e49acc0387",
      "parents": [
        "e02e22b05190a92f61020344ce7bc6eb28de0fa1"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 15:50:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 15:50:20 2026 +0100"
      },
      "message": "feat(#593): Add camel-dsl-support and camel-xml-io-dsl bundles and features (#688)"
    },
    {
      "commit": "e02e22b05190a92f61020344ce7bc6eb28de0fa1",
      "tree": "4c3f719444d9f37a7864236aa346b68285b851a1",
      "parents": [
        "23b1bad7cef2d809220ebff19ce6120de0e00f72"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 15:50:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 15:50:02 2026 +0100"
      },
      "message": "fix(#656): Register CXF servlet via OSGi Servlet Whiteboard to restore service listing page (#687)\n\nThe CXF \"Available SOAP Services\" listing page was unavailable because\nHttpService was removed in OSGi 8. Replace the defunct HttpService-based\nservlet registration with the OSGi Servlet Whiteboard pattern, which\nregisters the CXFNonSpringServlet as an OSGi service with whiteboard\nproperties picked up by pax-web. Add http-whiteboard feature dependency\nto camel-cxf."
    },
    {
      "commit": "23b1bad7cef2d809220ebff19ce6120de0e00f72",
      "tree": "830b0258d7d36803a38e188a43cb4514d3bf2f0b",
      "parents": [
        "594af1720eff875cca6a5473dacbee0f2f7566d8"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 10:34:20 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 10:34:20 2026 +0100"
      },
      "message": "fix(#681): Add start-level to xml-specs-api feature dependencies (#686)"
    },
    {
      "commit": "594af1720eff875cca6a5473dacbee0f2f7566d8",
      "tree": "6c038b75bca1ee8265cb807d25de2fde9562bb42",
      "parents": [
        "a8c947071afa681b17d787e88162f757293f144f"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 12 05:54:39 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 05:54:39 2026 +0100"
      },
      "message": "fix(#665): Fix camel-elasticsearch feature by adding missing opentelemetry-common bundle (#683)"
    },
    {
      "commit": "a8c947071afa681b17d787e88162f757293f144f",
      "tree": "45f78ce3f23d7d06dc0b377e090833c0fcfcedd8",
      "parents": [
        "3e95c2a9d11d3a6de5e8e42c92e4206bdef57fae"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Mar 11 08:00:02 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 08:00:02 2026 +0100"
      },
      "message": "feat(#663): Update to Camel 4.14.5 (#682)\n\n* Update to Camel 4.14.5\n\n* Fix camel-debezium features for Debezium 3.2.1\n\nAdd debezium-common and debezium-openlineage-api as fragments of\nio.debezium.api to account for the Debezium 3.2.1 artifact restructuring\nwhere classes like DebeziumException and DebeziumOpenLineageEmitter were\nmoved to new artifacts.\n\nAdd SPI-Provider\u003d* to the debezium-api host bundle so that SPI-Fly can\ndiscover SPI service providers from fragments (e.g. the\nDebeziumEngine$BuilderFactory in debezium-embedded).\n\nFix the camel-debezium-mongodb feature by pinning MongoDB driver bundles\nto ${mongo-java-driver-version} (5.5.1) instead of ${auto-detect-version}\n(5.2.0) which has a mandatory import for com.oracle.svm.core.annotate\nmaking it unusable in OSGi. Also use optional imports and DynamicImport\nfor the wrapped debezium-connector-mongodb bundle and remove\ndependency\u003dtrue from the MongoDB driver bundles to ensure they are always\ninstalled.\n\n* Restore spring features accidentally removed during Camel 4.14.5 update"
    },
    {
      "commit": "3e95c2a9d11d3a6de5e8e42c92e4206bdef57fae",
      "tree": "f26d429fbbb362adcf68d62cd2dcbdde9a160e1a",
      "parents": [
        "2accd7e7e6e15ae31b70817b66afa830b464e9f9"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Feb 16 06:10:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 06:10:32 2026 +0100"
      },
      "message": "Use bundle synbolic name as camel context name by default (#678)\n\n"
    },
    {
      "commit": "2accd7e7e6e15ae31b70817b66afa830b464e9f9",
      "tree": "d6b52b2dc4f49b08172dee9207f1c9aa6d6c8cd5",
      "parents": [
        "581250d5b14a0c4c24620a57867eeed1ab3069fe"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sun Feb 15 18:31:48 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Feb 15 18:31:48 2026 +0100"
      },
      "message": "Fix the camel-ehcache feature by using the jakarta namespace (#677)\n\n"
    },
    {
      "commit": "581250d5b14a0c4c24620a57867eeed1ab3069fe",
      "tree": "dc3c3be8725864e8f08c7c7848bf07713a03cfa8",
      "parents": [
        "02878190d2c9755a78aa6495583928929857a37d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sat Feb 14 16:46:23 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 16:46:23 2026 +0100"
      },
      "message": "Add optional import to org.apache.camel.component.cxf.common.header package in camel-cxf transport bundles (#676)\n\n"
    },
    {
      "commit": "02878190d2c9755a78aa6495583928929857a37d",
      "tree": "d7a391a722aa1fbf34b9ece520e661aff85f1722",
      "parents": [
        "3b99c563c9b52c38d5a5493fd3eb0d034aeb8320"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sat Feb 14 16:40:47 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Feb 14 16:40:47 2026 +0100"
      },
      "message": "Add org.apache.camel.model packages import in camel-xml-jaxb bundle (#675)\n\n"
    },
    {
      "commit": "3b99c563c9b52c38d5a5493fd3eb0d034aeb8320",
      "tree": "10d9a2ad0f488e8015411d59805c565148226df0",
      "parents": [
        "ddcde8549b29749cd5c7964ac2cf85fac896ed56"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Feb 11 13:35:07 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 13:35:07 2026 +0100"
      },
      "message": "Upgrade to Apache POM 37 (#671)\n\n"
    },
    {
      "commit": "ddcde8549b29749cd5c7964ac2cf85fac896ed56",
      "tree": "b98fdc87aeae3a11ec9c04c1218c51e633a215b1",
      "parents": [
        "b85cac0e42d7849e5eb0c463f308c39aaf006edb"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Feb 11 09:49:19 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 09:49:19 2026 +0100"
      },
      "message": "Update GitHub configuration (#670)\n\n"
    },
    {
      "commit": "b85cac0e42d7849e5eb0c463f308c39aaf006edb",
      "tree": "f37c6a144a2819e3d6094dfb9781e4898756960d",
      "parents": [
        "e6846cb1d747fd47e15d7713a1b5b7784c17000d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Feb 05 16:51:29 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 16:51:29 2026 +0100"
      },
      "message": "Update to Camel 4.14.3 (#662)\n\n* Update to Camel 4.14.3\n\n* Fix camel-as2 feature itest\n\n* Update Karaf version\n\n* Add slf4j simple provider to get log messages in integration test\n\n* Fix camel-consul-test\n\n* Skip camel-bean-validator itest for now\n\n* Fix camel-test-junit5 pom\n\n* Fix version in pom.xml\n\n* Add missing tinybundles bundle for the itest\n\n* Fix tinybundle use\n\n* Fix blueprint IgnoreDatatypesTest\n\n* Skip debezium features test for now\n\n* Fix camel-elasticsearch feature\n\n* Add io.opentelemetry.semconv bundle in camel-elasticsearch feature\n\n* Bypass camel-elasticsearch test for now as it runs forever (needs a specific fix)"
    },
    {
      "commit": "e6846cb1d747fd47e15d7713a1b5b7784c17000d",
      "tree": "fe41452b0fd6cf5c67e05b2e56149f845fcad93d",
      "parents": [
        "845c2fb9c25a860e99ebb4fc9d1ae1f7877daa92"
      ],
      "author": {
        "name": "jhattab",
        "email": "jhattab@hotmail.com",
        "time": "Mon Jan 19 09:19:17 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 19 09:19:17 2026 +0100"
      },
      "message": "Ref #596: adapt library \u0027camel-test-blueprint-junit5\u0027 to camel-karaf (#651)\n\n"
    },
    {
      "commit": "845c2fb9c25a860e99ebb4fc9d1ae1f7877daa92",
      "tree": "e3a65b712d4209ac720ee37daa983c48bd8c3f3e",
      "parents": [
        "327d1d8c74bc8a3ba011ee7c34ea65e6c7aad3b9"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Sun Dec 14 07:28:22 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 14 07:28:22 2025 +0100"
      },
      "message": "fix converter loading for cxf jaxrs (#658)\n\nadd missing imports"
    },
    {
      "commit": "327d1d8c74bc8a3ba011ee7c34ea65e6c7aad3b9",
      "tree": "eebebfc19415b0ca7ecce537030f1569a28aec15",
      "parents": [
        "1eae1745bd3f9fc1b063c3af9d36c68de505bf19"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Tue Dec 02 10:29:48 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 02 10:29:48 2025 +0100"
      },
      "message": "fix of camel-salesforce pub/sub (#655)\n\n"
    },
    {
      "commit": "1eae1745bd3f9fc1b063c3af9d36c68de505bf19",
      "tree": "83acc4d35efc66bd6762ba6a0fee3e0e536aba78",
      "parents": [
        "4952816558e4a7290a6f912d105c64ea88bfb977"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 15:24:01 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 15:24:01 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "4952816558e4a7290a6f912d105c64ea88bfb977",
      "tree": "599daa6bb9a0f7b03743f6bca624c9af44dd2b4e",
      "parents": [
        "de0f70353d5bbecb67afb068dfc808dc328eca0b"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 15:22:18 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 15:22:18 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.10.7\n"
    },
    {
      "commit": "de0f70353d5bbecb67afb068dfc808dc328eca0b",
      "tree": "a92472e8b88754671b9dd148e5fd1593db7d357f",
      "parents": [
        "8b8814384aca962324d96542f2efbdaa468fbe3c"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 09:46:16 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 21 09:46:16 2025 +0200"
      },
      "message": "Add open package imports to camel-cxf-blueprint bundle. This fixes #638. (#650)\n\n"
    },
    {
      "commit": "8b8814384aca962324d96542f2efbdaa468fbe3c",
      "tree": "99cc54f2385b16f97c7500efa36fbd698d0dc8fb",
      "parents": [
        "0f7d5aeb81b02093d846e097e973aff97013523a"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Oct 21 09:45:57 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 21 09:45:57 2025 +0200"
      },
      "message": "Adding spring-tx feature in the camel-jms feature. This fixes #645. (#649)\n\n"
    },
    {
      "commit": "0f7d5aeb81b02093d846e097e973aff97013523a",
      "tree": "a722b0bdbe0c8f51438c274526717700b8f119d1",
      "parents": [
        "8225eadddb33d21b5e4edcd8ac39dedf74500614"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Oct 20 14:57:42 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 20 14:57:42 2025 +0200"
      },
      "message": "Upgrade to Camel 4.10.7 (#646)\n\n* Upgrade to Camel 4.10.7\n\n* Fix camel-openapi-validator feature\n\n* Reset testcontainer version\n\n* Fix camel-undertow feature adding the missing smallrye bundles"
    },
    {
      "commit": "8225eadddb33d21b5e4edcd8ac39dedf74500614",
      "tree": "f0f6e836a81479cc3dac530c301bd4fd5809665a",
      "parents": [
        "033905a5b477601fdc9dae1f40b4c42b3b3a6f8a"
      ],
      "author": {
        "name": "Robin Vishwakarma",
        "email": "vishwakarma.robin2794@gmail.com",
        "time": "Fri Oct 17 13:02:47 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 12:02:47 2025 +0200"
      },
      "message": "Added missing runtime compression libraries bundles in camel-kafka feature (#648)\n\n"
    },
    {
      "commit": "033905a5b477601fdc9dae1f40b4c42b3b3a6f8a",
      "tree": "7a23727c504a631ac36fedc001eb363823fdfc8f",
      "parents": [
        "5f9e2604ad98a5da485e3ad3ba5e6c4882113c06"
      ],
      "author": {
        "name": "Robin Vishwakarma",
        "email": "vishwakarma.robin2794@gmail.com",
        "time": "Tue Aug 19 19:59:25 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 19 16:29:25 2025 +0200"
      },
      "message": "Added SAAJ implementation feature for camel-cxf (#641)\n\n"
    },
    {
      "commit": "5f9e2604ad98a5da485e3ad3ba5e6c4882113c06",
      "tree": "85571650afc73b3c6bed73d12126ea9e2ba6497a",
      "parents": [
        "6732da5f6a50754b4e62cee6f1a4ebebae3fea39"
      ],
      "author": {
        "name": "robinvish2794",
        "email": "109792804+robinvish2794@users.noreply.github.com",
        "time": "Mon Jul 28 20:33:54 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 28 17:03:54 2025 +0200"
      },
      "message": "Added JOLT json-utils bundle in camel-jolt feature (#640)\n\nCo-authored-by: Robin Vishwakarma \u003crobin.vishwakarma@digia.com\u003e"
    },
    {
      "commit": "6732da5f6a50754b4e62cee6f1a4ebebae3fea39",
      "tree": "08c0de7b59e5fd0a9e98a48f17bbc6ffee899cdc",
      "parents": [
        "01c14dd0642714a765431ce87a98e32e3d844d83"
      ],
      "author": {
        "name": "robinvish2794",
        "email": "109792804+robinvish2794@users.noreply.github.com",
        "time": "Wed Jul 02 13:18:57 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 02 09:48:57 2025 +0200"
      },
      "message": "camel-cxf with Jetty HTTP Transport (#634)\n\n"
    },
    {
      "commit": "01c14dd0642714a765431ce87a98e32e3d844d83",
      "tree": "04aa3d75ac38cd02986c6f3f3eeb4fafd454f042",
      "parents": [
        "0287ccc9328d7626d881a1f96f4431736ada0a90"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jun 22 10:10:08 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jun 22 10:10:08 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "0287ccc9328d7626d881a1f96f4431736ada0a90",
      "tree": "a5f0f0f87f1efa8a51206d833bbaa7d17a257fe9",
      "parents": [
        "1d6a39ead0e9093fbd5c8b30b0814d0aae7a065e"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jun 22 10:09:59 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jun 22 10:09:59 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.10.5\n"
    },
    {
      "commit": "1d6a39ead0e9093fbd5c8b30b0814d0aae7a065e",
      "tree": "02a12a6d39ae38bc869e08545ebb5c314b58aacf",
      "parents": [
        "c54d34839314bcfa66d690915028f85e1fa44df5"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sat Jun 21 08:03:41 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 21 08:03:41 2025 +0200"
      },
      "message": "Add KarafCamelContextProvider as a template to easily create Karaf CamelContest and register routes definition (#633)\n\n"
    },
    {
      "commit": "c54d34839314bcfa66d690915028f85e1fa44df5",
      "tree": "b2c6a7c07b233d220623037cfb9f2d989d6ed34f",
      "parents": [
        "68ca5cc02dd949b975800ca5f86d37aa343bc896"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sat Jun 21 08:02:47 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 21 08:02:47 2025 +0200"
      },
      "message": "Uses OSGi bundle for Curator in the zookeeper features (#632)\n\n"
    },
    {
      "commit": "68ca5cc02dd949b975800ca5f86d37aa343bc896",
      "tree": "62a5cd0f76012734aead1c6c1d29a072a31ec58b",
      "parents": [
        "3b802b564aed628bbd89284f09791959dba1a633"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jun 17 14:13:48 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 14:13:48 2025 +0200"
      },
      "message": "Upgrade to Apache Karaf 4.4.7 (#624)\n\n"
    },
    {
      "commit": "3b802b564aed628bbd89284f09791959dba1a633",
      "tree": "f74a039c69658e75dc6e39dfe7617c6bdc57e28a",
      "parents": [
        "2d1489d958500d12d1fb3bbd9158466836ef0873"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jun 17 10:47:53 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 10:47:53 2025 +0200"
      },
      "message": "Upgrade to Camel 4.10.5 (#629)\n\n"
    },
    {
      "commit": "2d1489d958500d12d1fb3bbd9158466836ef0873",
      "tree": "b910bcfc09c63d96ed2fb5797d4560f67cb1fc3a",
      "parents": [
        "a6759154f4deaed3ecd321a47de3ca61e2c2775d"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Tue Jun 17 08:24:17 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 17 08:24:17 2025 +0200"
      },
      "message": "add camel-azure-eventhubs integration test (#630)\n\n"
    },
    {
      "commit": "a6759154f4deaed3ecd321a47de3ca61e2c2775d",
      "tree": "b22c18f25ac761db25df96902751c0a0e80f2af0",
      "parents": [
        "7672f3f78add93dae674cda27214e8249301f174"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Jun 02 11:08:47 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 02 11:08:47 2025 +0200"
      },
      "message": "Upgrade to maven-bundle-plugin 6.0.0 (#622)\n\n"
    },
    {
      "commit": "7672f3f78add93dae674cda27214e8249301f174",
      "tree": "3a38a188d6a0417d67811f3fdead18b17f9f1412",
      "parents": [
        "a30125b78d9db7e865acd7172f67c32972b2603e"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed May 28 17:42:28 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 28 17:42:28 2025 +0200"
      },
      "message": "Upgrade to Camel 4.10.4 (#620)\n\n"
    },
    {
      "commit": "a30125b78d9db7e865acd7172f67c32972b2603e",
      "tree": "e05ee9781e8869eb3891dd600477d2fa3640cf69",
      "parents": [
        "c84d8edc81b59c27b0d90c13c49c9e356e48035f"
      ],
      "author": {
        "name": "aenevala",
        "email": "aenevala@gmail.com",
        "time": "Fri Apr 25 13:16:08 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 25 12:16:08 2025 +0200"
      },
      "message": "Ref #619: Add missing TW2 dependency to jakarta jaxb runtime (#618)\n\n"
    },
    {
      "commit": "c84d8edc81b59c27b0d90c13c49c9e356e48035f",
      "tree": "07e3644cf0ab559d8c6fe108b3ff347e341640af",
      "parents": [
        "aedca6b8a6017e204270b1cde2ba1a1c7d8f22be"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Apr 14 12:20:09 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Apr 14 12:20:09 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "aedca6b8a6017e204270b1cde2ba1a1c7d8f22be",
      "tree": "dc32678e7f3c3eb1ad2f4c54876466c8814ab2bb",
      "parents": [
        "6beb3700fdd53703ffee0a5264819d99494261ba"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Apr 14 12:20:04 2025 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Apr 14 12:20:04 2025 +0200"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.10.3\n"
    },
    {
      "commit": "6beb3700fdd53703ffee0a5264819d99494261ba",
      "tree": "a5d7a1a51cb6421ac90112fb8d223d3ae0615635",
      "parents": [
        "265f521b8bcc68e3f514edd488e93a937acb409e"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sun Apr 13 21:03:35 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 13 21:03:35 2025 +0200"
      },
      "message": "Make camel context optional in most of camel:* shell commands (#615)\n\n"
    },
    {
      "commit": "265f521b8bcc68e3f514edd488e93a937acb409e",
      "tree": "351a2f23effef1d2862113c416c23f5bfe9b1c95",
      "parents": [
        "8337d78250ea9c8b18a6838a11af55f34ce7feee"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Apr 03 16:16:02 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 03 16:16:02 2025 +0200"
      },
      "message": "Upgrade to Camel 4.10.3 to prepare camel-karaf 4.10.3 (#613)\n\n"
    },
    {
      "commit": "8337d78250ea9c8b18a6838a11af55f34ce7feee",
      "tree": "f3861b4a14590f5f8d18b2d2d78ef847546f70e4",
      "parents": [
        "87a006456da70dd9c2a9411b5b657813bad40757"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Apr 02 15:31:14 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 02 15:31:14 2025 +0200"
      },
      "message": "Move camel-kserve, camel-neo4j, camel-tensorflow-serving components in the camel-ai module (#612)\n\n"
    },
    {
      "commit": "87a006456da70dd9c2a9411b5b657813bad40757",
      "tree": "f84a8ae62a5de332d6d6a511be04c461577f52a7",
      "parents": [
        "37c039f7cd4193baa2c09ffe08fec1f863fc75c7"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Apr 01 16:58:53 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 01 16:58:53 2025 +0200"
      },
      "message": "Simplify LICENSE/NOTICE provisioning (#609)\n\n"
    },
    {
      "commit": "37c039f7cd4193baa2c09ffe08fec1f863fc75c7",
      "tree": "579f0aa82013fe4260022b4c669e3515ec01dc2c",
      "parents": [
        "9a2c149314be478eedbdb5fa46924e52f5854132"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Mar 25 09:19:18 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 25 09:19:18 2025 +0100"
      },
      "message": "Upgrade to Apache POM 34 (#606)\n\n"
    },
    {
      "commit": "9a2c149314be478eedbdb5fa46924e52f5854132",
      "tree": "4d274a23e7bbe0582f6340ff2e06e4f11b84ddbb",
      "parents": [
        "afab8c8df546eb5adb9c2932cad83599642149d5"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Mar 24 17:15:33 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 24 17:15:33 2025 +0100"
      },
      "message": "Upgrade to camel 4.10.2 and prepare camel-karaf 4.10.2 release (#599)\n\n"
    },
    {
      "commit": "afab8c8df546eb5adb9c2932cad83599642149d5",
      "tree": "d73bde335d736e7236d8f24003a13a136d3d02a3",
      "parents": [
        "9fd0da413f55c6fffe15eece9f96189085782eb0"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Fri Mar 14 18:19:39 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 14 18:19:39 2025 +0100"
      },
      "message": "Ref #602 Repair camel-azure-storage-queue and add integration test (#604)\n\n"
    },
    {
      "commit": "9fd0da413f55c6fffe15eece9f96189085782eb0",
      "tree": "040fe20bf8c3a6e9ad5c0394a3c5dc24923d468b",
      "parents": [
        "051d8bd1b0eb8759d5a6fab86405f4828a4c42a7"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Thu Jan 30 14:32:52 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 30 14:32:52 2025 +0100"
      },
      "message": "Ref #590 Add Bundle-Name and Bundle-SymbolicName to wrapped bundles (#592)\n\nMotivation\r\nVery long names in karaf console when listing bundles by names or symbolic names\r\n\r\nModifications:\r\nAdd Bundle-Name\u003d and Bundle-SymbolicName\u003d to the wrapped bundles"
    },
    {
      "commit": "051d8bd1b0eb8759d5a6fab86405f4828a4c42a7",
      "tree": "e6911f51336e2454cba3bfb8d742610ef6509c3f",
      "parents": [
        "094cad3b7da9c3540aad059b5d31857f5dee7d16"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 26 18:50:32 2025 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 26 18:50:32 2025 +0100"
      },
      "message": "Upgrade to Camel 4.10.0-SNAPSHOT\n"
    },
    {
      "commit": "094cad3b7da9c3540aad059b5d31857f5dee7d16",
      "tree": "e55ec7d3f55e1a68830e16d1c21a76d79d7ab103",
      "parents": [
        "72c4af8b509f85bdb727226205fd73eb089b3fcb"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 26 18:35:26 2025 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 26 18:35:26 2025 +0100"
      },
      "message": "Set version to 4.10.0-SNAPSHOT\n"
    },
    {
      "commit": "72c4af8b509f85bdb727226205fd73eb089b3fcb",
      "tree": "415e51d018ffc9e512fe647cb95d2d00f3b67f73",
      "parents": [
        "cd91c3fdcb68f4d99f4506eb20f0d5d6c30c34c8"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Sun Jan 26 08:33:34 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jan 26 08:33:34 2025 +0100"
      },
      "message": "Add LICENSE and NOTICE in all distributed artifacts (#585)\n\n"
    },
    {
      "commit": "cd91c3fdcb68f4d99f4506eb20f0d5d6c30c34c8",
      "tree": "29612108cc42170a1c8a13c40ba17590a46faf42",
      "parents": [
        "2266ec34abb5b97815407676910647dffa0f5bb9"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Fri Jan 24 08:54:59 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 24 08:54:59 2025 +0100"
      },
      "message": "Add Nicolas Filotto\u0027s public key"
    },
    {
      "commit": "2266ec34abb5b97815407676910647dffa0f5bb9",
      "tree": "5f48a3c0e26c58d3339e49b674f9cf4e371a1ee5",
      "parents": [
        "136c01e3b9e3b2684371208fb26ddcf3bca19f31"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Tue Jan 21 16:42:25 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 21 16:42:25 2025 +0100"
      },
      "message": "Ref #581: camel-debezium-mysql - Use the tag corresponding to debezium (#583)\n\n## Motivation\r\n\r\nThe integration test of camel-debezium-mysql fails due to an access denied\r\n\r\n## Modifications\r\n\r\n* Align the version of the docker image with the version of debezium used for the test to prevent behavior changes"
    },
    {
      "commit": "136c01e3b9e3b2684371208fb26ddcf3bca19f31",
      "tree": "530ad696252b2cf2db655c32056cd9ae588357f9",
      "parents": [
        "517ae190f603a39552040ff9618d111fc7005324"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Tue Jan 21 16:41:04 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 21 16:41:04 2025 +0100"
      },
      "message": "Ref #579: camel-vm - Handover completions (#584)\n\n## Motivation\r\n\r\nIn case the producer of camel-vm is used in a middle of a route, the rest of the camel route is never called\r\n\r\n## Modifications:\r\n\r\n* Handover completions on prepare exchange"
    },
    {
      "commit": "517ae190f603a39552040ff9618d111fc7005324",
      "tree": "8d7784189459086e47889e9cd7626ceedce5c08b",
      "parents": [
        "d6a5117b7245607c3fa3599e7b1593fad4aae683"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Thu Jan 16 11:58:45 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 16 11:58:45 2025 +0100"
      },
      "message": "Ref #571: Add an integration test for Groovy (#573)\n\n## Motivation\r\n\r\nThere is no integration test for Groovy, we need one to ensure that it works as expected\r\n\r\n## Modifications:\r\n\r\n* Add an integration test"
    },
    {
      "commit": "d6a5117b7245607c3fa3599e7b1593fad4aae683",
      "tree": "f209554d454fcc7bbc3b6512949dbd9cca83953c",
      "parents": [
        "ea0653dc6ba68f47d3ec4b9a3273b4a139b4d203"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Mon Jan 13 22:25:58 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 13 22:25:58 2025 +0100"
      },
      "message": "Ref #568: Add an integration test for AWS Kinesis (#570)\n\n## Motivation\r\n\r\nAWS Kinesis feature doesn\u0027t seem to work so we need an integration test to ensure that it works as expected\r\n\r\n## Modifications:\r\n\r\n* Add missing dependencies to the feature `camel-aws2-kinesis`\r\n* Add an integration test"
    },
    {
      "commit": "ea0653dc6ba68f47d3ec4b9a3273b4a139b4d203",
      "tree": "ed587204838ca17c1d4921ba357f4f15f752930c",
      "parents": [
        "97bc73fa188a11556421fe3120b55b788f6b84fe"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 05 07:19:52 2025 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sun Jan 05 07:19:52 2025 +0100"
      },
      "message": "Simple components link in doc\n"
    },
    {
      "commit": "97bc73fa188a11556421fe3120b55b788f6b84fe",
      "tree": "d286e56d7d4638eb2a9338dd1c03c5265e511cc8",
      "parents": [
        "a43cb3670bde34c327eef4915e3fabd316314d3f"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sat Jan 04 16:20:26 2025 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sat Jan 04 16:20:26 2025 +0100"
      },
      "message": "Update version in antora\n"
    },
    {
      "commit": "a43cb3670bde34c327eef4915e3fabd316314d3f",
      "tree": "ea1eefc1b72ed9d4a88705f61a4acf2bee1a5a90",
      "parents": [
        "6b083b3834a32ab3431276ed3efff7da56170373"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sat Jan 04 15:46:44 2025 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jb.onofre@dremio.com",
        "time": "Sat Jan 04 15:46:44 2025 +0100"
      },
      "message": "Update nav\n"
    },
    {
      "commit": "6b083b3834a32ab3431276ed3efff7da56170373",
      "tree": "22883b171017717061705e3754ca43f543fb8217",
      "parents": [
        "b362d2e549e7863f43b5ce6943a1a1c56ca25d77"
      ],
      "author": {
        "name": "Francois de Parscau",
        "email": "francois.deparscau@qlik.com",
        "time": "Thu Dec 12 14:17:20 2024 +0100"
      },
      "committer": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Thu Dec 12 15:47:57 2024 +0100"
      },
      "message": "Ref #559: add missing cxf jars\n"
    },
    {
      "commit": "b362d2e549e7863f43b5ce6943a1a1c56ca25d77",
      "tree": "ef9347a43643ad7eb163913176ef624c45afde35",
      "parents": [
        "305f5fa81afb813461e8f77263e38ec9ddf86292"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Tue Dec 10 14:41:29 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 10 14:41:29 2024 +0100"
      },
      "message": "Ref #547: Remove common from Debezium sub-components (#556)\n\n## Motivation\r\n\r\nWe have a split package issue fixed in Camel so that we can remove the workaround.\r\n\r\n## Modifications:\r\n\r\n* Remove `camel-debezium-common` from all the wrappers\r\n* Re-add `camel-debezium-common` to the feature of the same name"
    },
    {
      "commit": "305f5fa81afb813461e8f77263e38ec9ddf86292",
      "tree": "09f936d1811d0ba4382a9b2d044f06ffb663d8a4",
      "parents": [
        "a55ec500a11207b453c466d4076364258b3cdf78"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Tue Dec 10 10:49:12 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 10 10:49:12 2024 +0100"
      },
      "message": "Ref #550: Upgrade to Camel 4.9.0 (#555)\n\n## Modifications:\r\n\r\n* Upgrade to Camel 4.9.0\r\n* Add the new components (camel-torchserve, camel-clickup, camel-flowable, camel-fury, camel-observability-services)\r\n* Adapt the features to this version\r\n* Re-add the spring features to support Spring 6.2"
    },
    {
      "commit": "a55ec500a11207b453c466d4076364258b3cdf78",
      "tree": "7822be27cd9b2805e4a8dd2e97e252fc57a5a4b2",
      "parents": [
        "ce8e1a8f769ef7bfad7b899137b202666bfed41f"
      ],
      "author": {
        "name": "François de Parscau",
        "email": "116000379+f2par0@users.noreply.github.com",
        "time": "Mon Dec 09 19:03:39 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 09 19:03:39 2024 +0100"
      },
      "message": "Ref #553: fix usage of routeBuilder in blueprint (#554)\n\n"
    },
    {
      "commit": "ce8e1a8f769ef7bfad7b899137b202666bfed41f",
      "tree": "3c4fec94d326fecbb5bf4d2fdd88003c9efcf2ee",
      "parents": [
        "8b186945ec24e4c17b25ac58bea7f9cda093b641"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Thu Dec 05 17:22:00 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 05 17:22:00 2024 +0100"
      },
      "message": "Ref #548: Allow to create a cxfrs endpoint in blueprint (#549)\n\n## Motivation\r\n\r\nFor now, it is not possible to create a cxfrs endpoint using blueprint as we end up with a `ClassNotFoundException`\r\n\r\n## Modifications:\r\n\r\n* Add an integration test that reproduces the issue\r\n* Add a class for removal corresponding to what [`camel-cxf-rest` expects](https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-rest/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsComponent.java#L124-L126) until it is fixed in Camel\r\n* Move all blueprint-related classes of CXF into `camel-cxf-blueprint` to prevent split packages\r\n* Add all  blueprint-related schemas of CXF to `camel-cxf-blueprint`\r\n* Add the maven property `camel.karaf.test.additional.imports` to add import packages to the test bundle\r\n* Add the maven property `camel.karaf.test.fragment.host` to set the fragment host of the test bundle"
    },
    {
      "commit": "8b186945ec24e4c17b25ac58bea7f9cda093b641",
      "tree": "9983a62c6d39a8c9ad14dace0d811192924151ce",
      "parents": [
        "6a7f9fc2812ccce2fbf655614f5d9849fba3515c"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Wed Oct 30 16:37:51 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 30 16:37:51 2024 +0100"
      },
      "message": "chore(build): Re-add a Jenkins Job (#544)\n\n"
    },
    {
      "commit": "6a7f9fc2812ccce2fbf655614f5d9849fba3515c",
      "tree": "6144d795c8dc60f1472f53e574318a2eeabf8a1c",
      "parents": [
        "3235929e07194f52bf9845667bec8303ab856a49"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 16:06:25 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 30 16:06:25 2024 +0100"
      },
      "message": "Add build, update, and release instructions in the README.md (#545)\n\n"
    },
    {
      "commit": "3235929e07194f52bf9845667bec8303ab856a49",
      "tree": "9c48e67c86cfc0ccf8b1b226218300409ee0ae53",
      "parents": [
        "6335df8f5cd709bc9e5c5b30cc3caf0f34499039"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 11:53:35 2024 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 11:53:35 2024 +0100"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "6335df8f5cd709bc9e5c5b30cc3caf0f34499039",
      "tree": "b64fe28d4c4ee250d152957025e385200703d3fc",
      "parents": [
        "442160c72d3c84e9bb197b519a332f96abbbef46"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 11:53:29 2024 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 11:53:29 2024 +0100"
      },
      "message": "[maven-release-plugin] prepare release camel-karaf-4.8.1\n"
    },
    {
      "commit": "442160c72d3c84e9bb197b519a332f96abbbef46",
      "tree": "66a3d899200a3952e95a827915fe326ce4b43a07",
      "parents": [
        "176fefc853e97d81921d2e75cca4570580ce95c1"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Wed Oct 30 10:33:28 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 30 10:33:28 2024 +0100"
      },
      "message": "Ref #542: Restore camel-vm old behavior (#543)\n\n"
    },
    {
      "commit": "176fefc853e97d81921d2e75cca4570580ce95c1",
      "tree": "2b85382237fa044b870831d090a52e0d27011231",
      "parents": [
        "ee9f0c3debd276e4018fd43176c7c082aaf31134"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed Oct 30 07:23:02 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 30 07:23:02 2024 +0100"
      },
      "message": "Ref #539: Upgrade to Camel 4.8.1 (#540)\n\n"
    },
    {
      "commit": "ee9f0c3debd276e4018fd43176c7c082aaf31134",
      "tree": "993660fdae0a5b151a485643c5d498931692f1aa",
      "parents": [
        "11fb1805be9b9cd774961332eaceade7724563b5"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Mon Oct 28 12:17:59 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 28 12:17:59 2024 +0100"
      },
      "message": "Ref #501: Fix slip packages issues in debezium wrappers (#538)\n\n## Motivation\r\n\r\nDebezium features don\u0027t work due to a split packages issue in Camel\r\n\r\n## Modifications:\r\n\r\n* Add missing dependencies to the feature `camel-debezium-db2`, `camel-debezium-oracle`, and `camel-debezium-sqlserver`\r\n* Add a workaround for the split packages issue in Camel"
    },
    {
      "commit": "11fb1805be9b9cd774961332eaceade7724563b5",
      "tree": "0f1d3131c2efa8fe714dbdd3f24a434ed515d5ee",
      "parents": [
        "18290d5eb48f107afb3214e447805ccf9b1ac9b6"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Mon Oct 28 08:46:17 2024 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 28 08:46:17 2024 +0100"
      },
      "message": "Ref #532: Add camel-debezium-mongodb integration test (#537)\n\n## Motivation\r\n\r\nDebezium features don\u0027t work so we need an integration test to ensure that they work as expected\r\n\r\n## Modifications:\r\n\r\n* Add missing dependencies to the feature `camel-debezium-common` and `camel-debezium-mongodb`\r\n* Add a workaround for the split package issue in Camel\r\n* Add an integration test\r\n* Add to use a dedicated external resource to manage the lifecycle of the MongoDB container because, with test containers, the database is not accessible for an unknown reason"
    },
    {
      "commit": "18290d5eb48f107afb3214e447805ccf9b1ac9b6",
      "tree": "0f7e01f5aad0aa008fed272d8bf2244ef05a2a03",
      "parents": [
        "81f0ef323fe8962ce7233216e2306383a5c9d8ab"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Fri Oct 25 19:28:17 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 25 19:28:17 2024 +0200"
      },
      "message": "Ref #531: Add camel-debezium-mysql integration test (#535)\n\n## Motivation\r\n\r\nDebezium features don\u0027t work so we need an integration test to ensure that they work as expected\r\n\r\n## Modifications:\r\n\r\n* Add missing dependencies to the feature `camel-debezium-common` and `camel-debezium-mysql`\r\n* Add a workaround for the split package issue in Camel\r\n* Add an integration test"
    },
    {
      "commit": "81f0ef323fe8962ce7233216e2306383a5c9d8ab",
      "tree": "bc95247730d125947e8435c4027be30d6ea7b50d",
      "parents": [
        "a308c557e0f41c7d4f524227719c57228ed41c66"
      ],
      "author": {
        "name": "Nicolas Filotto",
        "email": "essobedo@users.noreply.github.com",
        "time": "Wed Oct 23 15:05:41 2024 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 23 15:05:41 2024 +0200"
      },
      "message": "Ref #530: Add camel-debezium-postgres integration test (#533)\n\n## Motivation\r\n\r\nDebezium features don\u0027t work so we need an integration test to ensure that they work as expected\r\n\r\n## Modifications:\r\n\r\n* Add missing dependencies to the feature `camel-debezium-common` and `camel-debezium-postgres`\r\n* Add a workaround for the split package issue in Camel\r\n* Add an integration test"
    }
  ],
  "next": "a308c557e0f41c7d4f524227719c57228ed41c66"
}
