---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: stax
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: stax
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: stax
        spec:
          containers:
          - image: funktion/connector-stax:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: stax
      syntax: stax:contentHandlerClass
      title: StAX
      description: The stax component allows messages to be process through a SAX ContentHandler.
      label: transformation
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.stax.StAXComponent
      groupId: org.apache.camel
      artifactId: camel-stax
      version: 2.18.3
    componentProperties: {}
    properties:
      contentHandlerClass:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The FQN class name for the ContentHandler implementation to use.
        order: 0
      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: 1
  documentation.adoc: "[[StAX-StAXComponent]]\nStAX Component\n~~~~~~~~~~~~~~\n\n\
    *Available as of Camel 2.9*\n\nThe StAX component allows messages to be process\
    \ through a SAX\nhttp://download.oracle.com/javase/6/docs/api/org/xml/sax/ContentHandler.html[ContentHandler].\
    \ +\nAnother feature of this component is to allow to iterate over JAXB\nrecords\
    \ using StAX, for example using the link:splitter.html[Splitter]\nEIP.\n\nMaven\
    \ users will need to add the following dependency to their `pom.xml`\nfor this\
    \ component:\n\n[source,xml]\n------------------------------------------------------------\n\
    <dependency>\n    <groupId>org.apache.camel</groupId>\n    <artifactId>camel-stax</artifactId>\n\
    \    <version>x.x.x</version>\n    <!-- use the same version as your Camel core\
    \ version -->\n</dependency>\n------------------------------------------------------------\n\
    \n[[StAX-URIformat]]\nURI format\n^^^^^^^^^^\n\n[source,java]\n--------------------------\n\
    stax:content-handler-class\n--------------------------\n\nexample:\n\n[source,java]\n\
    -----------------------------------\nstax:org.superbiz.FooContentHandler\n-----------------------------------\n\
    \nFrom *Camel 2.11.1* onwards you can lookup a\n`org.xml.sax.ContentHandler` bean\
    \ from the link:registry.html[Registry]\nusing the # syntax as shown:\n\n[source,java]\n\
    ---------------\nstax:#myHandler\n---------------\n\n[[Stax-Options]]\nOptions\n\
    ~~~~~~~\n\n\n// component options: START\nThe StAX component has no options.\n\
    // component options: END\n\n\n\n// endpoint options: START\nThe StAX component\
    \ supports 2 endpoint options which are listed below:\n\n{% raw %}\n[width=\"\
    100%\",cols=\"2,1,1m,1m,5\",options=\"header\"]\n|=======================================================================\n\
    | Name | Group | Default | Java Type | Description\n| contentHandlerClass | producer\
    \ |  | String | *Required* The FQN class name for the ContentHandler implementation\
    \ to use.\n| synchronous | advanced | false | boolean | Sets whether synchronous\
    \ processing should be strictly used or Camel is allowed to use asynchronous processing\
    \ (if supported).\n|=======================================================================\n\
    {% endraw %}\n// endpoint options: END\n\n\n[[StAX-UsageofacontenthandlerasStAXparser]]\n\
    Usage of a content handler as StAX parser\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\
    \nThe message body after the handling is the handler itself.\n\nHere an example:\n\
    \n[source,java]\n--------------------------------------------------------------------------------------------------------\n\
    from(\"file:target/in\")\n  .to(\"stax:org.superbiz.handler.CountingHandler\"\
    ) \n  // CountingHandler implements org.xml.sax.ContentHandler or extends org.xml.sax.helpers.DefaultHandler\n\
    \  .process(new Processor() {\n    @Override\n    public void process(Exchange\
    \ exchange) throws Exception {\n        CountingHandler handler = exchange.getIn().getBody(CountingHandler.class);\n\
    \        // do some great work with the handler\n    }\n  });\n--------------------------------------------------------------------------------------------------------\n\
    \n[[StAX-IterateoveracollectionusingJAXBandStAX]]\nIterate over a collection using\
    \ JAXB and StAX\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFirst we suppose\
    \ you have JAXB objects.\n\nFor instance a list of records in a wrapper object:\n\
    \n[source,java]\n-------------------------------------------------\nimport java.util.ArrayList;\n\
    import java.util.List;\nimport javax.xml.bind.annotation.XmlAccessType;\nimport\
    \ javax.xml.bind.annotation.XmlAccessorType;\nimport javax.xml.bind.annotation.XmlElement;\n\
    import javax.xml.bind.annotation.XmlRootElement;\n\n@XmlAccessorType(XmlAccessType.FIELD)\n\
    @XmlRootElement(name = \"records\")\npublic class Records {\n    @XmlElement(required\
    \ = true)\n    protected List<Record> record;\n\n    public List<Record> getRecord()\
    \ {\n        if (record == null) {\n            record = new ArrayList<Record>();\n\
    \        }\n        return record;\n    }\n}\n-------------------------------------------------\n\
    \nand\n\n[source,java]\n---------------------------------------------------------\n\
    import javax.xml.bind.annotation.XmlAccessType;\nimport javax.xml.bind.annotation.XmlAccessorType;\n\
    import javax.xml.bind.annotation.XmlAttribute;\nimport javax.xml.bind.annotation.XmlType;\n\
    \n@XmlAccessorType(XmlAccessType.FIELD)\n@XmlType(name = \"record\", propOrder\
    \ = { \"key\", \"value\" })\npublic class Record {\n    @XmlAttribute(required\
    \ = true)\n    protected String key;\n\n    @XmlAttribute(required = true)\n \
    \   protected String value;\n\n    public String getKey() {\n        return key;\n\
    \    }\n\n    public void setKey(String key) {\n        this.key = key;\n    }\n\
    \n    public String getValue() {\n        return value;\n    }\n\n    public void\
    \ setValue(String value) {\n        this.value = value;\n    }\n}\n---------------------------------------------------------\n\
    \nThen you get a XML file to process:\n\n[source,xml]\n-------------------------------------------------------\n\
    <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<records>\n  <record\
    \ value=\"v0\" key=\"0\"/>\n  <record value=\"v1\" key=\"1\"/>\n  <record value=\"\
    v2\" key=\"2\"/>\n  <record value=\"v3\" key=\"3\"/>\n  <record value=\"v4\" key=\"\
    4\"/>\n  <record value=\"v5\" key=\"5\"/>\n</record>\n-------------------------------------------------------\n\
    \nThe StAX component provides an `StAXBuilder` which can be used when\niterating\
    \ XML elements with the Camel link:splitter.html[Splitter]\n\n[source,java]\n\
    ------------------------------------------\nfrom(\"file:target/in\")\n    .split(stax(Record.class)).streaming()\n\
    \        .to(\"mock:records\");\n------------------------------------------\n\n\
    Where `stax` is a static method on\n`org.apache.camel.component.stax.StAXBuilder`\
    \ which you can static\nimport in the Java code. The stax builder is by default\
    \ namespace aware\non the XMLReader it uses. From *Camel 2.11.1* onwards you can\
    \ turn this\noff by setting the boolean parameter to false, as shown below:\n\n\
    [source,java]\n-------------------------------------------------\nfrom(\"file:target/in\"\
    )\n    .split(stax(Record.class, false)).streaming()\n        .to(\"mock:records\"\
    );\n-------------------------------------------------\n\n[[StAX-ThepreviousexamplewithXMLDSL]]\n\
    The previous example with XML DSL\n+++++++++++++++++++++++++++++++++\n\nThe example\
    \ above could be implemented as follows in XML DSL\n\n[[StAX-SeeAlso]]\nSee Also\n\
    ^^^^^^^^\n\n* link:configuring-camel.html[Configuring Camel]\n* link:component.html[Component]\n\
    * link:endpoint.html[Endpoint]\n* link:getting-started.html[Getting Started]\n\
    \n"
