Freemarker
JVM since1.1.0 Native since1.8.0
Transform messages using FreeMarker templates.
What’s inside
-
Freemarker component, URI syntax:
freemarker:resourceUri
Please refer to the above link for usage and configuration details.
Maven coordinates
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-freemarker</artifactId>
</dependency>
Check the User guide for more information about writing Camel Quarkus applications.
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.
Quarkiverse Freemarker and its configuration
Camel Quarkus Freemarker uses dev/index.html[Quarkiverse Freemarker] under the hood. This means in particular, that the freemarker.template.Configuration
bean produced by Quarkiverse Freemarker is used by Camel Quarkus. The bean can be configured via quarkus.freemarker.*
properties - check Freemarker Configuration Reference for more details.
If you wish to use your custom Configuration
bean instead of the default provided by Quarkiverse Freemarker, you can let CDI to do the required wiring:
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Produces;
import jakarta.inject.Named;
import freemarker.template.Configuration;
import io.quarkus.arc.Unremovable;
import org.apache.camel.builder.RouteBuilder;
@ApplicationScoped
public class MyRoutes extends RouteBuilder {
@Produces
@ApplicationScoped
@Unremovable
@Named("myFreemarkerConfig")
Configuration produceFreemarkerConfig() {
Configuration result = new Configuration();
...
return result;
}
@Override
public void configure() {
from("direct:example")
.to("freemarker:templates/email.ftl?configuration=myFreemarkerConfig")
}
}