= [=name]
[#if pageAliases?? ]:page-aliases: [=pageAliases]
[/#if]
:linkattrs:
:cq-artifact-id: camel-quarkus-[=artifactIdBase]
:cq-native-supported: [=nativeSupported?then('true', 'false')]
:cq-status: [=status]
:cq-status-deprecation: [=statusDeprecation]
:cq-description: [=description]
:cq-deprecated: [=deprecated?then('true', 'false')]
:cq-jvm-since: [=jvmSince]
:cq-native-since: [=nativeSince]

[.badges]
[.badge-key]##JVM since##[.badge-supported]##[=jvmSince]## [.badge-key]##Native[=nativeSupported?then(' since', '')]##[.badge-[=nativeSupported?then('', 'un')]supported]##[=nativeSupported?then(nativeSince, 'unsupported')]##[#if deprecated ] [.badge-key]##⚠️##[.badge-unsupported]##Deprecated##[/#if]

[=intro]
[#if models?size > 0]

== What's inside

[#list models as model]
* [=camelBitLink(model, models)][[=model.title][#if model.kind != "other" ] [=humanReadableKind(model.kind)][/#if]][#if model.kind == "component" ], URI syntax: `[=model.syntax]`[/#if]
[/#list]

Please refer to the above link[#if models?size != 1]s[/#if] for usage and configuration details.
[/#if]

== Maven coordinates

[#if !unlisted]https://code.quarkus.io/?extension-search=camel-quarkus-[=artifactIdBase][Create a new project with this extension on code.quarkus.io, window="_blank"]

Or add the coordinates to your existing project:

[/#if][source,xml]
----
<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-[=artifactIdBase]</artifactId>
</dependency>
----

Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications.
[#if usage?? ]

== Usage

[=usage]
[/#if]
[#if limitations?? ]

== Camel Quarkus limitations

[=limitations]
[/#if]
[#if activatesNativeSsl ]

== SSL in native mode

This extension auto-enables SSL support in native mode. Hence you do not need to add
`quarkus.ssl.native=true` to your `application.properties` yourself. See also
https://quarkus.io/guides/native-and-ssl[Quarkus SSL guide].
[/#if]
[#if activatesContextMapAll ]

== allowContextMapAll option in native mode

The `allowContextMapAll` option is not supported in native mode as it requires reflective access to security sensitive camel core classes such as
`CamelContext` & `Exchange`. This is considered a security risk and thus access to the feature is not provided by default.
[/#if]
[#if activatesTransferException ]

== transferException option in native mode

To use the `transferException` option in native mode, you must enable support for object serialization. Refer to the xref:user-guide/native-mode.adoc#serialization[native mode user guide]
for more information.

You will also need to enable serialization for the exception classes that you intend to serialize. For example.
[source,java]
----
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
----
[/#if]
[#if configuration?? || quarkusAwsClient?? || configOptions?size != 0 ]

== Additional Camel Quarkus configuration
[#if configuration??]

[=configuration]
[/#if]
[#if quarkusAwsClient??]

=== Optional integration with [=quarkusAwsClient.extensionName]

If desired, it is possible to use the [=quarkusAwsClient.extensionName] extension in conjunction with Camel Quarkus [=name].
Note that this is fully optional and not mandatory at all.
Please follow the [=quarkusAwsClient.configurationUrl][Quarkus documentation] but beware of the following caveats:

1. The client type `apache` has to be selected by configuring the following property:
+
[source,properties]
----
[=quarkusAwsClient.configBase].sync-client.type=apache
----

2. The `[=quarkusAwsClient.clientClassSimpleName]` has to be made "unremovable" in the sense of https://quarkus.io/guides/cdi-reference#remove_unused_beans[Quarkus CDI reference] so that Camel Quarkus is able to look it up at runtime.
You can reach that e.g. by adding a dummy bean injecting `[=quarkusAwsClient.clientClassSimpleName]`:
+
[source,java]
----
import javax.enterprise.context.ApplicationScoped;
import io.quarkus.arc.Unremovable;
import [=quarkusAwsClient.clientClassFqName];

@ApplicationScoped
@Unremovable
class Unremovable[=quarkusAwsClient.clientClassSimpleName] {
    @Inject
    [=quarkusAwsClient.clientClassSimpleName] [=quarkusAwsClient.clientFieldName];
}
----
[/#if]
[#if configOptions?size != 0 ]

[width="100%",cols="80,5,15",options="header"]
|===
| Configuration property | Type | Default

[#list configOptions as configDocItem][#assign anchor = toAnchor(configDocItem.key)]

|[=configDocItem.illustration] [[[=anchor]]]`link:#[=anchor][[=configDocItem.key]]`

[=configDocItem.configDoc]
| `[=configDocItem.type]`
| [#if configDocItem.defaultValue?has_content]`[=configDocItem.defaultValue]`[#elseif ! configDocItem.optional]required icon:exclamation-circle[title=Configuration property is required][/#if]
[/#list]
|===

[.configuration-legend]
icon:lock[title=Fixed at build time] Configuration property fixed at build time. All other configuration properties are overridable at runtime.

[/#if]
[/#if]
