<?xml version="1.0" encoding="UTF-8"?>
<!--
  See the NOTICE file distributed with this work for additional information
  regarding copyright ownership. Licensed under the Apache License,
  Version 2.0 (the "License"); you may not use this file except in compliance
  with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<job id="jsefa-csv-reader" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
    <step id="step1">
        <chunk>
            <reader ref="org.apache.batchee.jsefa.JSefaCsvWriterConverterTest$RecordReader" />
            <writer ref="jsefaCsvWriter">
                <properties>
                    <property name="file" value="#{jobParameters['output']}"/>
                    <property name="objectTypes" value="org.apache.batchee.jsefa.bean.RecordWithConverter"/>
                </properties>
            </writer>
        </chunk>
    </step>
</job>
