Components
^^^^^^^^^^





// components: START
Number of Components: 25 in 1 JAR artifacts (1 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Component | Available From | Description

| link:src/main/docs/bean-component.adoc[Bean] (camel-core) +
`bean:beanName` | 1.0 | The bean component is for invoking Java beans from Camel.

| link:src/main/docs/binding-component.adoc[Binding] (camel-core) +
`binding:bindingName:delegateUri` | 2.11 | *deprecated* The binding component is used for as a of wrapping an Endpoint in a contract with a data format.

| link:src/main/docs/browse-component.adoc[Browse] (camel-core) +
`browse:name` | 1.3 | The browse component is used for viewing the messages received on endpoints that supports BrowsableEndpoint.

| link:src/main/docs/class-component.adoc[Class] (camel-core) +
`class:beanName` | 2.4 | The Class Component is for invoking Java Classes (Java beans) from Camel.

| link:src/main/docs/controlbus-component.adoc[Control Bus] (camel-core) +
`controlbus:command:language` | 2.11 | The controlbus component provides easy management of Camel applications based on the Control Bus EIP pattern.

| link:src/main/docs/dataformat-component.adoc[Data Format] (camel-core) +
`dataformat:name:operation` | 2.12 | The dataformat component is used for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.

| link:src/main/docs/dataset-component.adoc[Dataset] (camel-core) +
`dataset:name` | 1.3 | The dataset component provides a mechanism to easily perform load & soak testing of your system.

| link:src/main/docs/direct-component.adoc[Direct] (camel-core) +
`direct:name` | 1.0 | The direct component provides direct synchronous call to another endpoint from the same CamelContext.

| link:src/main/docs/direct-vm-component.adoc[Direct VM] (camel-core) +
`direct-vm:name` | 2.10 | The direct-vm component provides direct synchronous call to another endpoint from any CamelContext in the same JVM.

| link:src/main/docs/file-component.adoc[File] (camel-core) +
`file:directoryName` | 1.0 | The file component is used for reading or writing files.

| link:src/main/docs/language-component.adoc[Language] (camel-core) +
`language:languageName:resourceUri` | 2.5 | The language component allows you to send a message to an endpoint which executes a script by any of the supported Languages in Camel.

| link:src/main/docs/log-component.adoc[Log] (camel-core) +
`log:loggerName` | 1.1 | The log component logs message exchanges to the underlying logging mechanism.

| link:src/main/docs/mock-component.adoc[Mock] (camel-core) +
`mock:name` | 1.0 | The mock component is used for testing routes and mediation rules using mocks.

| link:src/main/docs/properties-component.adoc[Properties] (camel-core) +
`properties:key` | 2.3 | The properties component is used for using property placeholders in endpoint uris.

| link:src/main/docs/ref-component.adoc[Ref] (camel-core) +
`ref:name` | 1.2 | The ref component is used for lookup of existing endpoints bound in the Registry.

| link:src/main/docs/rest-component.adoc[REST] (camel-core) +
`rest:method:path:uriTemplate` | 2.14 | The rest component is used for either hosting REST services (consumer) or calling external REST services (producer).

| link:src/main/docs/rest-api-component.adoc[REST API] (camel-core) +
`rest-api:path/contextIdPattern` | 2.16 | The rest-api component is used for providing Swagger API of the REST services which has been defined using the rest-dsl in Camel.

| link:src/main/docs/scheduler-component.adoc[Scheduler] (camel-core) +
`scheduler:name` | 2.15 | The scheduler component is used for generating message exchanges when a scheduler fires.

| link:src/main/docs/seda-component.adoc[SEDA] (camel-core) +
`seda:name` | 1.1 | The seda component provides asynchronous call to another endpoint from any CamelContext in the same JVM.

| link:src/main/docs/stub-component.adoc[Stub] (camel-core) +
`stub:name` | 2.10 | The stub component provides a simple way to stub out any physical endpoints while in development or testing.

| link:src/main/docs/test-component.adoc[Test] (camel-core) +
`test:name` | 1.3 | The test component extends the mock component by on startup to pull messages from another endpoint to set the expected message bodies.

| link:src/main/docs/timer-component.adoc[Timer] (camel-core) +
`timer:timerName` | 1.0 | The timer component is used for generating message exchanges when a timer fires.

| link:src/main/docs/validator-component.adoc[Validator] (camel-core) +
`validator:resourceUri` | 1.1 | Validates the payload of a message using XML Schema and JAXP Validation.

| link:src/main/docs/vm-component.adoc[VM] (camel-core) +
`vm:name` | 1.1 | The vm component provides asynchronous call to another endpoint from the same CamelContext.

| link:src/main/docs/xslt-component.adoc[XSLT] (camel-core) +
`xslt:resourceUri` | 1.3 | Transforms the message using a XSLT template.

|===
// components: END






Data Formats
^^^^^^^^^^^^





// dataformats: START
Number of Data Formats: 4 in 39 JAR artifacts (3 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Data Format | Available From | Description

| link:src/main/docs/gzip-dataformat.adoc[GZip] (camel-core) | 2.0 | The GZip data format is a message compression and de-compression format (which works with the popular gzip/gunzip tools).

| link:src/main/docs/serialization-dataformat.adoc[Java Object Serialization] (camel-core) | 2.12 | Serialization is a data format which uses the standard Java Serialization mechanism to unmarshal a binary payload into Java objects or to marshal Java objects into a binary blob.

| link:src/main/docs/string-dataformat.adoc[String Encoding] (camel-core) | 2.12 | String data format is a textual based format that supports character encoding.

| link:src/main/docs/zip-dataformat.adoc[Zip Deflate Compression] (camel-core) | 2.12 | Zip Deflate Compression data format is a message compression and de-compression format (not zip files).
|===
// dataformats: END







Expression Languages
^^^^^^^^^^^^^^^^^^^^





// languages: START
Number of Languages: 10 in 1 JAR artifacts (0 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Language | Available From | Description

| link:src/main/docs/bean-language.adoc[Bean method] (camel-core) | 1.3 | To use a Java bean (aka method call) in Camel expressions or predicates.

| link:src/main/docs/constant-language.adoc[Constant] (camel-core) | 1.5 | To use a constant value in Camel expressions or predicates.

| link:src/main/docs/exchangeProperty-language.adoc[ExchangeProperty] (camel-core) | 2.0 | To use a Camel Exchange property in expressions or predicates.

| link:src/main/docs/file-language.adoc[File] (camel-core) | 1.1 | For expressions and predicates using the file/simple language

| link:src/main/docs/header-language.adoc[Header] (camel-core) | 1.5 | To use a Camel Message header in expressions or predicates.

| link:src/main/docs/ref-language.adoc[Ref] (camel-core) | 2.8 | Reference to an existing Camel expression or predicate which is looked up from the Camel registry.

| link:src/main/docs/simple-language.adoc[Simple] (camel-core) | 1.1 | To use Camels built-in Simple language in Camel expressions or predicates.

| link:src/main/docs/tokenize-language.adoc[Tokenize] (camel-core) | 2.0 | To use Camel message body or header with a tokenizer in Camel expressions or predicates.

| link:src/main/docs/xtokenize-language.adoc[XML Tokenize] (camel-core) | 2.14 | To use Camel message body or header with a XML tokenizer in Camel expressions or predicates.

| link:src/main/docs/xpath-language.adoc[XPath] (camel-core) | 1.1 | To use XPath (XML) in Camel expressions or predicates.
|===
// languages: END





