=== Loading JSLT templates from classpath in native mode

This component typically loads the templates from classpath.
To make it work also in native mode, you need to explicitly embed the templates files in the native executable
by using the `quarkus.native.resources.includes` property.

For instance, the route below would load the JSLT schema from a classpath resource named `transformation.json`:

[source,java]
----
from("direct:start").to("jslt:transformation.json");
----

To include this (an possibly other templates stored in `.json` files) in the native image, you would have to add something like the following to your `application.properties` file:

[source,properties]
----
quarkus.native.resources.includes = *.json
----

More information about selecting resources for inclusion in the native executable can be found at xref:user-guide/native-mode.adoc#embedding-resource-in-native-executable[Embedding resource in native executable].

=== Using JSLT functions in native mode

When using JSLT functions from camel-quarkus in native mode, the classes hosting the functions would need to be link:https://quarkus.io/guides/writing-native-applications-tips#registering-for-reflection[registered for reflection]. When registering the target function is not possible, one may end up writing a stub as below.

[source,java]
----
@RegisterForReflection
public class MathFunctionStub {
    public static double pow(double a, double b) {
        return java.lang.Math.pow(a, b);
    }
}
----

The target function `Math.pow(...)` is now accessible through the `MathFunctionStub` class that could be registered in the component as below:

[source,java]
----
@Named
JsltComponent jsltWithFunction() throws ClassNotFoundException {
    JsltComponent component = new JsltComponent();
    component.setFunctions(singleton(wrapStaticMethod("power", "org.apache.cq.example.MathFunctionStub", "pow")));
    return component;
}
----
