---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: msv
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: msv
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: msv
        spec:
          containers:
          - image: funktion/connector-msv:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: msv
      syntax: msv:resourceUri
      title: MSV
      description: Validates the payload of a message using the MSV Library.
      label: validation
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.validator.msv.MsvComponent
      groupId: org.apache.camel
      artifactId: camel-msv
      version: 2.18.3
    componentProperties:
      schemaFactory:
        kind: property
        type: object
        javaType: javax.xml.validation.SchemaFactory
        deprecated: false
        secret: false
        description: To use the javax.xml.validation.SchemaFactory.
        order: 0
      resourceResolverFactory:
        kind: property
        label: advanced
        required: false
        type: object
        javaType: org.apache.camel.component.validator.ValidatorResourceResolverFactory
        deprecated: false
        secret: false
        description: To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI
        order: 1
    properties:
      resourceUri:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: URL to a local resource on the classpath or a reference to lookup a bean in the Registry or a full URL to a remote resource or resource on the file system which contains the XSD to validate against.
        order: 0
      failOnNullBody:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Whether to fail if no body exists.
        order: 1
      failOnNullHeader:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Whether to fail if no header exists when validating against a header.
        order: 2
      headerName:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: To validate against a header instead of the message body.
        order: 3
      errorHandler:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: org.apache.camel.processor.validation.ValidatorErrorHandler
        deprecated: false
        secret: false
        description: To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception.
        order: 4
      resourceResolver:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: org.w3c.dom.ls.LSResourceResolver
        deprecated: false
        secret: false
        description: To use a custom LSResourceResolver. Do not use together with resourceResolverFactory
        order: 5
      resourceResolverFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: org.apache.camel.component.validator.ValidatorResourceResolverFactory
        deprecated: false
        secret: false
        description: To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver.
        order: 6
      schemaFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.xml.validation.SchemaFactory
        deprecated: false
        secret: false
        description: To use a custom javax.xml.validation.SchemaFactory
        order: 7
      schemaLanguage:
        kind: parameter
        group: advanced
        label: advanced
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: http://www.w3.org/2001/XMLSchema
        description: Configures the W3C XML Schema Namespace URI.
        order: 8
      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: 9
      useDom:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator.
        order: 10
      useSharedSchema:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue.
        order: 11
  documentation.adoc: |+
    [[MSV-MSVComponent]]
    MSV Component
    ~~~~~~~~~~~~~

    The MSV component performs XML validation of the message body using the
    https://msv.dev.java.net/[MSV Library] and any of the supported XML
    schema languages, such as http://www.w3.org/XML/Schema[XML Schema] or
    http://relaxng.org/[RelaxNG XML Syntax].

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

    Note that the link:jing.html[Jing] component also supports
    http://relaxng.org/compact-tutorial-20030326.html[RelaxNG Compact
    Syntax]

    [[MSV-URIformat]]
    URI format
    ^^^^^^^^^^

    [source,java]
    ---------------------------------------
    msv:someLocalOrRemoteResource[?options]
    ---------------------------------------

    Where *someLocalOrRemoteResource* is some URL to a local resource on the
    classpath or a full URL to a remote resource or resource on the file
    system. For example

    [source,java]
    ------------------------------
    msv:org/foo/bar.rng
    msv:file:../foo/bar.rng
    msv:http://acme.com/cheese.rng
    ------------------------------

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

    [[MSV-Options]]
    Options
    ^^^^^^^




    // component options: START
    The MSV component supports 2 options which are listed below.



    {% raw %}
    [width="100%",cols="2,1m,7",options="header"]
    |=======================================================================
    | Name | Java Type | Description
    | schemaFactory | SchemaFactory | To use the javax.xml.validation.SchemaFactory.
    | resourceResolverFactory | ValidatorResourceResolverFactory | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI
    |=======================================================================
    {% endraw %}
    // component options: END






    // endpoint options: START
    The MSV component supports 12 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* URL to a local resource on the classpath or a reference to lookup a bean in the Registry or a full URL to a remote resource or resource on the file system which contains the XSD to validate against.
    | failOnNullBody | producer | true | boolean | Whether to fail if no body exists.
    | failOnNullHeader | producer | true | boolean | Whether to fail if no header exists when validating against a header.
    | headerName | producer |  | String | To validate against a header instead of the message body.
    | errorHandler | advanced |  | ValidatorErrorHandler | To use a custom org.apache.camel.processor.validation.ValidatorErrorHandler. The default error handler captures the errors and throws an exception.
    | resourceResolver | advanced |  | LSResourceResolver | To use a custom LSResourceResolver. Do not use together with resourceResolverFactory
    | resourceResolverFactory | advanced |  | ValidatorResourceResolverFactory | To use a custom LSResourceResolver which depends on a dynamic endpoint resource URI. The default resource resolver factory resturns a resource resolver which can read files from the class path and file system. Do not use together with resourceResolver.
    | schemaFactory | advanced |  | SchemaFactory | To use a custom javax.xml.validation.SchemaFactory
    | schemaLanguage | advanced | http://www.w3.org/2001/XMLSchema | String | Configures the W3C XML Schema Namespace URI.
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    | useDom | advanced | false | boolean | Whether DOMSource/DOMResult or SaxSource/SaxResult should be used by the validator.
    | useSharedSchema | advanced | true | boolean | Whether the Schema instance should be shared or not. This option is introduced to work around a JDK 1.6.x bug. Xerces should not have this issue.
    |=======================================================================
    {% endraw %}
    // endpoint options: END



    [[MSV-Example]]
    Example
    ^^^^^^^

    The following
    http://svn.apache.org/repos/asf/camel/trunk/components/camel-msv/src/test/resources/org/apache/camel/component/validator/msv/camelContext.xml[example]
    shows how to configure a route from endpoint *direct:start* which then
    goes to one of two endpoints, either *mock:valid* or *mock:invalid*
    based on whether or not the XML matches the given
    http://relaxng.org/[RelaxNG XML Schema] (which is supplied on the
    classpath).

    [[MSV-SeeAlso]]
    See Also
    ^^^^^^^^

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

