<?xml version="1.0"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.

-->
<configuration>

  <property>
    <name>apex.operator.kafkaInput.prop.initialPartitionCount</name>
    <value>1</value>
  </property>
  <property>
    <name>apex.operator.kafkaInput.prop.topics</name>
    <value>exactly-once-example</value>
  </property>
  <property>
    <name>apex.operator.kafkaInput.prop.clusters</name>
    <value>localhost:9092</value>
  </property>
  
  <property>
    <name>apex.application.ExactlyOnceJbdcOutput.operator.store.prop.store.databaseDriver</name>
    <value>org.hsqldb.jdbcDriver</value>
  </property>
  <property>
    <name>apex.application.ExactlyOnceJbdcOutput.operator.store.prop.store.databaseUrl</name>
    <value>jdbc:hsqldb:mem:test;sql.syntax_mys=true</value>
  </property>

  <property>
    <name>apex.application.ExactlyOnceFileOutput.operator.fileWriter.prop.filePath</name>
    <value>target/atomicFileOutput</value>
  </property>

</configuration>

