Guidelines for AI agents working on this codebase.
Apache Camel is an integration framework supporting routing rules in Java, XML and YAML DSLs.
- Version: 4.19.0-SNAPSHOT
- Java: 21+
- Build: Maven 3.9.12+
camel/
├── core/ # Core modules (camel-api, camel-core, camel-support, etc.)
├── components/ # 300+ components (kafka, aws, http, etc.)
├── dsl/ # DSLs (jbang, yaml-dsl, endpointdsl)
├── test-infra/ # Testcontainers-based test services
├── catalog/ # Component metadata
├── tooling/ # Maven plugins
├── archetypes/ # Maven archetypes
├── tests/ # Integration tests
└── docs/ # AsciiDoc docs
mvn clean install -Dquickly # fast build, no tests
mvn clean install # full build
mvn clean install -pl components/camel-kafka -am # single module
mvn formatter:format && mvn impsort:sort # format code
mvn clean install -Psourcecheck # verify stylemvn test # unit tests
mvn verify -Pit # integration testsTest infra usage:
@RegisterExtension
static KafkaService service = KafkaServiceFactory.createService();camel-<name>/
├── pom.xml
└── src/
├── main/java/org/apache/camel/component/<name>/
│ ├── <Name>Component.java
│ ├── <Name>Endpoint.java
│ ├── <Name>Producer.java
│ └── <Name>Consumer.java
├── main/docs/
├── generated/
└── test/java/
Classes:
<Name>Component extends DefaultComponent<Name>Endpoint extends DefaultEndpoint<Name>Producer extends DefaultProducer<Name>Consumer extends DefaultConsumer- Tests:
*Test.java(JUnit 5)
Packages:
- Components:
org.apache.camel.component.<name> - Core:
org.apache.camel.<module>
Deprecation:
- Add
(deprecated)suffix to<name>inpom.xml:<name>Camel :: MyComponent (deprecated)</name> - Add
(deprecated)suffix to the doc page title insrc/main/docs/*.adoc - Add
@Deprecatedto Java classes - Document in the upgrade guide (
docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_XX.adoc)
Annotations:
@UriPathfor path params@UriParamfor query params- Always add
descriptionfor docs
No extra config needed.
You must register the component in MojoHelper:
File: tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/MojoHelper.java
Add to the getComponentPath() switch:
case "camel-aws":
return Arrays.asList(dir.resolve("camel-aws2-athena"),
// ...
dir.resolve("camel-your-new-component"));Parent folders needing registration:
camel-ai(langchain4j, vector dbs)camel-awscamel-azurecamel-googlecamel-ibmcamel-huaweicamel-debeziumcamel-vertxcamel-microprofilecamel-infinispancamel-cxfcamel-spring-parentcamel-test
Without this, the build won't pick up your component for catalog/docs generation.
CAMEL-XXXX: Brief description
Reference JIRA when applicable.