---
apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      funktion.fabric8.io/kind: Connector
      provider: fabric8
      project: connector-mvel
      version: 1.1.39
      group: io.fabric8.funktion.connector
    name: mvel
  data:
    deployment.yml: |
      ---
      apiVersion: extensions/v1beta1
      kind: Deployment
      metadata:
        labels:
          funktion.fabric8.io/kind: Subscription
          connector: mvel
      spec:
        replicas: 1
        template:
          metadata:
            labels:
              funktion.fabric8.io/kind: Subscription
              connector: mvel
          spec:
            containers:
            - image: funktion/connector-mvel:1.1.39
              name: connector
    schema.yml: |
      ---
      component:
        kind: component
        scheme: mvel
        syntax: mvel:resourceUri
        title: MVEL
        description: Transforms the message using a MVEL template.
        label: transformation,script
        deprecated: false
        async: false
        producerOnly: true
        javaType: org.apache.camel.component.mvel.MvelComponent
        groupId: org.apache.camel
        artifactId: camel-mvel
        version: 2.18.1
      componentProperties: {}
      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
        encoding:
          kind: parameter
          group: producer
          type: string
          javaType: java.lang.String
          deprecated: false
          secret: false
          description: Character encoding of the resource content.
          order: 2
        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: 3
    documentation.adoc: |+
      [[MVELComponent-MVELComponent]]
      MVEL Component
      ~~~~~~~~~~~~~~

      *Available as of Camel 2.12*

      The *mvel:* component allows you to process a message using an
      http://mvel.codehaus.org/[MVEL] template. This can be ideal when using
      link:templating.html[Templating] to generate responses for requests.

      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-mvel</artifactId>
          <version>x.x.x</version>
          <!-- use the same version as your Camel core version -->
      </dependency>
      ------------------------------------------------------------

      [[MVELComponent-URIformat]]
      URI format
      ^^^^^^^^^^

      [source,java]
      ---------------------------
      mvel:templateName[?options]
      ---------------------------

      Where *templateName* is the classpath-local URI of the template to
      invoke; or the complete URL of the remote template (eg:
      file://folder/myfile.mvel[file://folder/myfile.mvel]).

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

      [[MVELComponent-Options]]
      Options
      ^^^^^^^


      // component options: START
      The MVEL component has no options.
      // component options: END




      // endpoint options: START
      The MVEL component supports 4 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
      | encoding | producer |  | String | Character encoding of the resource content.
      | 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



      [[MVELComponent-MessageHeaders]]
      Message Headers
      ^^^^^^^^^^^^^^^

      The mvel component sets a couple headers on the message.

      [width="100%",cols="10%,90%",options="header",]
      |=======================================================================
      |Header |Description

      |`CamelMvelResourceUri` |The *templateName* as a `String` object.
      |=======================================================================

      [[MVELComponent-MVELContext]]
      MVEL Context
      ^^^^^^^^^^^^

      Camel will provide exchange information in the MVEL context (just a
      `Map`). The `Exchange` is transfered as:

      [width="100%",cols="10%,90%",options="header",]
      |=======================================================================
      |key |value

      |`exchange` |The `Exchange` itself.

      |`exchange.properties` |The `Exchange` properties.

      |`headers` |The headers of the In message.

      |`camelContext` |The Camel Context intance.

      |`request` |The In message.

      |`in` |The In message.

      |`body` |The In message body.

      |`out` |The Out message (only for InOut message exchange pattern).

      |`response` |The Out message (only for InOut message exchange pattern).
      |=======================================================================

      [[MVELComponent-Hotreloading]]
      Hot reloading
      ^^^^^^^^^^^^^

      The mvel template resource is, by default, hot reloadable for both file
      and classpath resources (expanded jar). If you set `contentCache=true`,
      Camel will only load the resource once, and thus hot reloading is not
      possible. This scenario can be used in production, when the resource
      never changes.

      [[MVELComponent-Dynamictemplates]]
      Dynamic templates
      ^^^^^^^^^^^^^^^^^

      Camel provides two headers by which you can define a different resource
      location for a template or the template content itself. If any of these
      headers is set then Camel uses this over the endpoint configured
      resource. This allows you to provide a dynamic template at runtime.

      [width="100%",cols="10%,10%,80%",options="header",]
      |=======================================================================
      |Header |Type |Description

      |CamelMvelResourceUri |String |A URI for the template resource to use instead of the endpoint
      configured.

      |CamelMvelTemplate |String |The template to use instead of the endpoint configured.
      |=======================================================================

      [[MVELComponent-Samples]]
      Samples
      ^^^^^^^

      For example you could use something like

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

      To use a MVEL template to formulate a response to a message for InOut
      message exchanges (where there is a `JMSReplyTo` header).

      To specify what template the component should use dynamically via a
      header, so for example:

      [source,java]
      -------------------------------------------------------------------------
      from("direct:in").
        setHeader("CamelMvelResourceUri").constant("path/to/my/template.mvel").
        to("mvel:dummy");
      -------------------------------------------------------------------------

      To specify a template directly as a header the component should use
      dynamically via a header, so for example:

      [source,java]
      ------------------------------------------------------------------------------------------
      from("direct:in").
        setHeader("CamelMvelTemplate").constant("@{\"The result is \" + request.body * 3}\" }").
        to("velocity:dummy");
      ------------------------------------------------------------------------------------------

      [[MVELComponent-SeeAlso]]
      See Also
      ^^^^^^^^

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

