---
apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      funktion.fabric8.io/kind: Connector
      provider: fabric8
      project: connector-string-template
      version: 1.1.9
      group: io.fabric8.funktion.connector
    name: string-template
  data:
    deployment.yml: |
      ---
      apiVersion: extensions/v1beta1
      kind: Deployment
      metadata:
        labels:
          funktion.fabric8.io/kind: Subscription
          connector: string-template
      spec:
        replicas: 1
        template:
          metadata:
            labels:
              funktion.fabric8.io/kind: Subscription
              connector: string-template
          spec:
            containers:
            - image: fabric8/connector-string-template:1.1.9
              name: connector
    schema.yml: |
      ---
      component:
        kind: component
        scheme: string-template
        syntax: string-template:resourceUri
        title: String Template
        description: Transforms the message using a String template.
        label: transformation
        deprecated: false
        async: false
        producerOnly: true
        javaType: org.apache.camel.component.stringtemplate.StringTemplateComponent
        groupId: org.apache.camel
        artifactId: camel-stringtemplate
        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
        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
        delimiterStart:
          kind: parameter
          group: producer
          type: string
          javaType: char
          deprecated: false
          secret: false
          defaultValue: <
          description: The variable start delimiter
        delimiterStop:
          kind: parameter
          group: producer
          type: string
          javaType: char
          deprecated: false
          secret: false
          defaultValue: '>'
          description: The variable end delimiter
        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).
    documentation.adoc: |+
      [[StringTemplate-StringTemplate]]
      String Template
      ~~~~~~~~~~~~~~~

      The *string-template:* component allows you to process a message using a
      http://www.stringtemplate.org/[String 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-stringtemplate</artifactId>
          <version>x.x.x</version>
          <!-- use the same version as your Camel core version -->
      </dependency>
      ------------------------------------------------------------

      [[StringTemplate-URIformat]]
      URI format
      ^^^^^^^^^^

      [source,java]
      --------------------------------------
      string-template:templateName[?options]
      --------------------------------------

      Where *templateName* is the classpath-local URI of the template to
      invoke; or the complete URL of the remote template.

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

      [[StringTemplate-Options]]
      Options
      ^^^^^^^


      // component options: START
      The String Template component has no options.
      // component options: END



      // endpoint options: START
      The String Template component supports 5 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
      | delimiterStart | producer | < | char | The variable start delimiter
      | delimiterStop | producer | > | char | The variable end delimiter
      | 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


      [[StringTemplate-Headers]]
      Headers
      ^^^^^^^

      Camel will store a reference to the resource in the message header with
      key, `org.apache.camel.stringtemplate.resource`. The Resource is an
      `org.springframework.core.io.Resource` object.

      [[StringTemplate-Hotreloading]]
      Hot reloading
      ^^^^^^^^^^^^^

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

      [[StringTemplate-StringTemplateAttributes]]
      StringTemplate Attributes
      ^^^^^^^^^^^^^^^^^^^^^^^^^

      Since Camel 2.14, you can define the custom context map by setting the
      message header "*CamelStringTemplateVariableMap*" just like the below
      code.

      [source,java]
      --------------------------------------------------------------------------
      Map<String, Object> variableMap = new HashMap<String, Object>();
      Map<String, Object> headersMap = new HashMap<String, Object>();
      headersMap.put("name", "Willem");
      variableMap.put("headers", headersMap);
      variableMap.put("body", "Monday");
      variableMap.put("exchange", exchange);
      exchange.getIn().setHeader("CamelStringTemplateVariableMap", variableMap);
      --------------------------------------------------------------------------

      [[StringTemplate-Samples]]
      Samples
      ^^^^^^^

      For example you could use a string template as follows in order to
      formulate a response to a message:

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

      [[StringTemplate-TheEmailSample]]
      The Email Sample
      ^^^^^^^^^^^^^^^^

      In this sample we want to use a string template to send an order
      confirmation email. The email template is laid out in `StringTemplate`
      as: This example works for *camel 2.11.0*. If your camel version is less
      than 2.11.0, the variables should be started and ended with $.

      [source,java]
      --------------------------------------------
      Dear <headers.lastName>, <headers.firstName>

      Thanks for the order of <headers.item>.

      Regards Camel Riders Bookstore
      <body>
      --------------------------------------------

      And the java code is as follows:

      [[StringTemplate-SeeAlso]]
      See Also
      ^^^^^^^^

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

