<?xml version="1.0" encoding="utf-8" ?>
<!--
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.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- Define the Query Manager's schema. -->
  <xs:element name="queryManagerConfig">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="queryChangeLogSource">
          <xs:complexType>
            <xs:choice>
              <xs:element name="kafka" type="kafka"/>
            </xs:choice>
          </xs:complexType>
        </xs:element>
        <xs:element name="performanceTunning">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="queryChanngeLogDiscoveryPeriod">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="value" type="xs:positiveInteger"/>
                    <xs:element name="units" type="timeUnits"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <!-- Defines the time units that may be specified. -->
  <xs:simpleType name="timeUnits" final="restriction">
    <xs:restriction base="xs:string">
      <xs:enumeration value="MILLISECONDS"/>
      <xs:enumeration value="SECONDS"/>
      <xs:enumeration value="MINUTES"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- Define what kafka connection information looks like. -->  
  <xs:complexType name="kafka">
    <xs:sequence>
      <xs:element name="hostname" type="xs:string"/>
      <xs:element name="port" type="tcpPort" />
    </xs:sequence>
  </xs:complexType>
  
  <!-- Define the legal range for a TCP port. -->
  <xs:simpleType name="tcpPort">
    <xs:restriction base="xs:int">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="65535"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>