| // Do not edit directly! |
| // This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page |
| = JSLT |
| :linkattrs: |
| :cq-artifact-id: camel-quarkus-jslt |
| :cq-native-supported: true |
| :cq-status: Stable |
| :cq-status-deprecation: Stable |
| :cq-description: Query or transform JSON payloads using an JSLT. |
| :cq-deprecated: false |
| :cq-jvm-since: 1.1.0 |
| :cq-native-since: 1.4.0 |
| |
| [.badges] |
| [.badge-key]##JVM since##[.badge-supported]##1.1.0## [.badge-key]##Native since##[.badge-supported]##1.4.0## |
| |
| Query or transform JSON payloads using an JSLT. |
| |
| == What's inside |
| |
| * xref:{cq-camel-components}::jslt-component.adoc[JSLT component], URI syntax: `jslt:resourceUri` |
| |
| Please refer to the above link for usage and configuration details. |
| |
| == Maven coordinates |
| |
| https://code.quarkus.io/?extension-search=camel-quarkus-jslt[Create a new project with this extension on code.quarkus.io, window="_blank"] |
| |
| Or add the coordinates to your existing project: |
| |
| [source,xml] |
| ---- |
| <dependency> |
| <groupId>org.apache.camel.quarkus</groupId> |
| <artifactId>camel-quarkus-jslt</artifactId> |
| </dependency> |
| ---- |
| |
| Check the xref:user-guide/index.adoc[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. |
| |
| == Additional Camel Quarkus configuration |
| |
| === 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. |
| ---- |
| @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: |
| ---- |
| @Named |
| JsltComponent jsltWithFunction() throws ClassNotFoundException { |
| JsltComponent component = new JsltComponent(); |
| component.setFunctions(singleton(wrapStaticMethod("power", "org.apache.cq.example.MathFunctionStub", "pow"))); |
| return component; |
| } |
| ---- |
| |