davsclaus opened a new pull request, #26508: URL: https://github.com/apache/camel/pull/26508
Resolves [CAMEL-24770](https://issues.apache.org/jira/browse/CAMEL-24770). Follow-up to CAMEL-24710 (the YAML route examples): the other example kinds, measured on 2026-09-16 over the catalog pages and the user manual — 4,053 Java blocks, 2,717 XML blocks, 339 properties blocks. Checked mechanically: the literal endpoint URIs (6,189 in Java, 4,317 in XML) and Simple expressions (453) against the catalog, every XML `<route>` fragment (1,838) with the `camel-xml-io` parser, the `camel.*` property keys, and a list of Camel 2/3 API leftovers. Each finding below was verified against the component or model code before changing the page; the examples that are right for the runtime but fail a checker are listed at the end for the guard work. ## Java: API that no longer exists in Camel 4 - **jms** — `.inOut().to(…)` ×6: `inOut()` is gone from `ProcessorDefinition`; now `.to(ExchangePattern.InOut, …)` (the page's own recommended form elsewhere) - **cxf** — `from(…).setFaultBody(constant(SOAP_FAULT))`: gone; the fault is set as the message body, as `CxfCustomizedExceptionTest` does - **lucene** — `new DefaultCamelContext(createRegistry())`: test-support API that no longer exists - **spring-ws** — `exchange.getOut()` (deprecated) and `getIn().addAttachment(…)` (gone): `getMessage()` and `getMessage(AttachmentMessage.class).addAttachment(…)` - **jt400** — curly quotes `“ ”` in the Java and XML examples ## XML the XML DSL parser rejects - **claimCheck-eip** `<removeHeader headerName>` → `name`; **datasonnet-language** `resultTypeName` ×3 → `resultType`; **failoverLoadBalancer-eip** `stickyMode` → `sticky`; **threading-model** (manual) `executorServiceRef` → `executorService` - **bindy-dataformat**, **crypto-dataformat** — `<marshal ref="…">`: data formats are referenced as `<marshal><custom ref="…"/></marshal>` - **validate-eip** — `<to uri="bean:x" method="…">`: `method` is not an attribute of `<to>`, it is a bean option - **selective-consumer** — `<simple>…</xpath>` - **avro** — a `<from>` that is not self-closed, so the next element nests inside it - **virtual-threads** (manual) — `<threads>` as a block with a nested `<to>`; `threads` is not a block in Camel 4 - **infinispan**, **infinispan-embedded** — AsciiDoc callouts written as `<1>` inside XML, which is not XML; they are `<!--1-->` - unescaped `&` in `uri="…"`: **ftp**, **hivemq**, **mail** ×4, **avro** (the deliberately unescaped one on the endpoint page that demonstrates the SAX error is left alone) ## Endpoint URIs and options as the components read them - **xpath-language** — `timer:java?period=1000,repeatCount=1` (comma for `&`) - **keycloak-producer** — `operation=setUserPassword`: the operation is `resetUserPassword` (the page's own table says so) - **azure-storage-blob-operations** — `commitBlockBlobList` ×3: the operation is `commitBlobBlockList` - **ai-resource** — `to("aws2-s3://reports?fileName=latest.pdf&operation=getObject")`: the producer never reads `fileName` (a consumer option); `getObject` takes the key from the `CamelAwsS3Key` header or the `keyName` option - **jooq** — a consumer route with `?query=…`: `JooqConsumer` selects the whole table, the option is producer-only; the misleading route is removed (the page already shows the consumer form) - **rocketmq** — `producerGroup` on a `from()`; **virtual-threads** (manual) — `virtualThreadPerTask` on a `to("seda:…")` - **rss**, **http** ×2 — `httpClientConfigurer=myBean` / `httpContext=myBean`: bean references need `#` - **aws2-s3-producer-operations** — `region=region` placeholder replaced by a real region ## Properties - **graceful-shutdown** (manual) — `camel.main.logInflightExchangesOnTimeout` → `shutdownLogInflightExchangesOnTimeout` - **stream-caching** (manual) — a stray `;` after the value - **master** — the Spring Boot block used `camel.component.zookeeper.cluster.service.*`; the cluster services are configured as `camel.cluster.zookeeper.*` on both Camel Main and Spring Boot - **camel-report-maven-plugin** (manual) — a `...` line inside a YAML example, which YAML reads as a document-end marker The catalog docs mirror is regenerated; only `.adoc` files change. ## Right for the runtime, wrong for a checker (for the guards, not this PR) - ` contains '{name:XOrder}'` (validator page): the Simple **predicate** parser fails on a `}` inside a quoted literal (` contains '}'` fails, the expression parser accepts it) — `SimplePredicateParser.createNode` treats a `}` as a function end even outside a function; core fix in a separate PR - `kamelet:my-source?period=…` in a `from:`: the catalog turns leniency off for consumers of components that do both, so the Kamelet's own parameters are reported unknown - `RAW(se+re?t&23)`: the catalog's URI parsing splits on the `&` inside `RAW(…)`; the runtime's `URIScanner` does not - `log:foo?param1=…` (custom `ExchangeFormatter` properties by design), olingo2/olingo4 (already known), `throttle`'s `timePeriodMillis` and `Registry.bind` (still valid), and "missing required option" for credentials the examples leave out on purpose - the azure-storage-blob `operation` enum is missing `listBlobVersions`, `setBlobLegalHold`, `setBlobImmutabilityPolicy` and git's is missing `pushTag` (stale hardcoded `enums=`) — CAMEL-24748 _Claude Code on behalf of 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
