[[JOLT-JOLTComponent]]
JOLT Component
~~~~~~~~~~~~~~

*Available as of Camel 2.16*

The *jolt:* component allows you to process a JSON messages using an
http://bazaarvoice.github.io/jolt/[JOLT] specification. This can be
ideal when doing JSON to JSON transformation.

Maven users will need to add the following dependency to
their `pom.xml` for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-jolt</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

 

[[JOLT-URIformat]]
URI format
^^^^^^^^^^

[source,java]
-----------------------
jolt:specName[?options]
-----------------------

Where *specName* is the classpath-local URI of the specification to
invoke; or the complete URL of the remote specification
(eg: file://folder/myfile.vm[file://folder/myfile.json]).

You can append query options to the URI in the following
format, `?option=value&option=value&...`

[[JOLT-Options]]
Options
^^^^^^^




// component options: START
The JOLT component supports 1 options which are listed below.



{% raw %}
[width="100%",cols="2,1m,7",options="header"]
|=======================================================================
| Name | Java Type | Description
| transform | Transform | Explicitly sets the Transform to use. If not set a Transform specified by the transformDsl will be created
|=======================================================================
{% endraw %}
// component options: END






// endpoint options: START
The JOLT component supports 6 endpoint options which are listed below:

{% raw %}
[width="100%",cols="2,1,1m,1m,5",options="header"]
|=======================================================================
| Name | Group | Default | Java Type | Description
| resourceUri | producer |  | String | *Required* Path to the resource or a reference to lookup a bean in the Registry to use as the resource
| contentCache | producer | false | boolean | Sets whether to use resource content cache or not
| inputType | producer | Hydrated | JoltInputOutputType | Specifies if the input is hydrated JSON or a JSON String.
| outputType | producer | Hydrated | JoltInputOutputType | Specifies if the output should be hydrated JSON or a JSON String.
| transformDsl | producer | Chainr | JoltTransformType | Specifies the Transform DSL of the endpoint resource. If none is specified Chainr will be used.
| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
|=======================================================================
{% endraw %}
// endpoint options: END



[[JOLT-Samples]]
Samples
^^^^^^^

For example you could use something like

[source,java]
--------------------------------------
from("activemq:My.Queue").
  to("jolt:com/acme/MyResponse.json");
--------------------------------------

And a file based resource:

[source,java]
---------------------------------------------------------------
from("activemq:My.Queue").
  to("jolt:file://myfolder/MyResponse.json?contentCache=true").
  to("activemq:Another.Queue");
---------------------------------------------------------------

You can also specify what specification the component should use
dynamically via a header, so for example:

[source,java]
---------------------------------------------------------------------
from("direct:in").
  setHeader("CamelJoltResourceUri").constant("path/to/my/spec.json").
  to("jolt:dummy");
---------------------------------------------------------------------

 

[[JOLT-SeeAlso]]
See Also
^^^^^^^^

* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]

