<?xml version="1.0" encoding="ISO-8859-1" ?>

<!--
 ! 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"
    xmlns:mg="asterixconf"
    targetNamespace="asterixconf"
    elementFormDefault="qualified">

    <!-- definition of simple types -->
    <xs:element
        name="instanceName"
        type="xs:string" />
    <xs:element
        name="version"
        type="xs:string" />
    <xs:element
        name="metadataNode"
        type="xs:string" />
    <xs:element
        name="coredumpPath"
        type="xs:string" />
    <xs:element
        name="storeDirs"
        type="xs:string" />
    <xs:element
        name="ncId"
        type="xs:string" />
    <xs:element
        name="name"
        type="xs:string" />
    <xs:element
        name="value"
        type="xs:string" />
    <xs:element
        name="description"
        type="xs:string" />
    <xs:element
        name="txnLogDirPath"
        type="xs:string" />

    <!-- definition of complex elements -->
    <xs:element name="store">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="mg:ncId" />
                <xs:element ref="mg:storeDirs" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="coredump">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="mg:ncId" />
                <xs:element ref="mg:coredumpPath" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="transactionLogDir">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="mg:ncId" />
                <xs:element ref="mg:txnLogDirPath" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="property">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="mg:name" />
                <xs:element ref="mg:value" />
                <xs:element ref="mg:description" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:element name="asterixConfiguration">
        <xs:complexType>
            <xs:sequence>
                <xs:element
                    ref="mg:instanceName"
                    minOccurs="0" />
                <xs:element
                    ref="mg:version"
                    minOccurs="0" />
                <xs:element
                    ref="mg:metadataNode"
                    minOccurs="0" />
                <xs:element
                    ref="mg:store"
                    maxOccurs="unbounded" />
                <xs:element
                    ref="mg:coredump"
                    maxOccurs="unbounded" />
                <xs:element
                    ref="mg:transactionLogDir"
                    maxOccurs="unbounded" />
                <xs:element
                    ref="mg:property"
                    minOccurs="0"
                    maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
