---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: jolt
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: jolt
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: jolt
        spec:
          containers:
          - image: funktion/connector-jolt:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: jolt
      syntax: jolt:resourceUri
      title: JOLT
      description: The jolt component allows you to process a JSON messages using an JOLT specification (such as JSON-JSON transformation).
      label: transformation
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.jolt.JoltComponent
      groupId: org.apache.camel
      artifactId: camel-jolt
      version: 2.18.3
    componentProperties:
      transform:
        kind: property
        type: object
        javaType: com.bazaarvoice.jolt.Transform
        deprecated: false
        secret: false
        description: Explicitly sets the Transform to use. If not set a Transform specified by the transformDsl will be created
        order: 0
    properties:
      resourceUri:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Path to the resource or a reference to lookup a bean in the Registry to use as the resource
        order: 0
      contentCache:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether to use resource content cache or not
        order: 1
      inputType:
        kind: parameter
        group: producer
        type: string
        javaType: org.apache.camel.component.jolt.JoltInputOutputType
        enum:
        - Hydrated
        - JsonString
        deprecated: false
        secret: false
        defaultValue: Hydrated
        description: Specifies if the input is hydrated JSON or a JSON String.
        order: 2
      outputType:
        kind: parameter
        group: producer
        type: string
        javaType: org.apache.camel.component.jolt.JoltInputOutputType
        enum:
        - Hydrated
        - JsonString
        deprecated: false
        secret: false
        defaultValue: Hydrated
        description: Specifies if the output should be hydrated JSON or a JSON String.
        order: 3
      transformDsl:
        kind: parameter
        group: producer
        type: string
        javaType: org.apache.camel.component.jolt.JoltTransformType
        enum:
        - Chainr
        - Shiftr
        - Defaultr
        - Removr
        - Sortr
        deprecated: false
        secret: false
        defaultValue: Chainr
        description: Specifies the Transform DSL of the endpoint resource. If none is specified Chainr will be used.
        order: 4
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 5
  documentation.adoc: |+
    [[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]

