<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2008-2013, Hazelcast, Inc. All Rights Reserved.
~
~ 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.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:complexType name="cluster-group">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" default="dev"/>
<xs:element name="password" type="xs:string" minOccurs="0" maxOccurs="1" default="dev-pass"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="listeners">
<xs:sequence>
<xs:element name="listener" type="listener-base" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="listener-base">
<xs:annotation>
<xs:documentation>One of membership-listener, instance-listener or migration-listener
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="non-space-string"/>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="near-cache">
<xs:sequence>
<xs:element name="max-size" type="xs:unsignedInt" minOccurs="0" maxOccurs="1" default="0"/>
<xs:element name="time-to-live-seconds" type="xs:unsignedInt" minOccurs="0" maxOccurs="1" default="0"/>
<xs:element name="max-idle-seconds" type="xs:unsignedInt" minOccurs="0" maxOccurs="1" default="0"/>
<xs:element name="eviction-policy" type="eviction-policy" minOccurs="0" maxOccurs="1" default="LRU"/>
<xs:element name="invalidate-on-change" type="xs:boolean" minOccurs="0" maxOccurs="1" default="true"/>
<xs:element name="in-memory-format" type="in-memory-format" minOccurs="0" maxOccurs="1" default="BINARY"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="eviction-policy">
<xs:restriction base="xs:string">
<xs:enumeration value="NONE"/>
<xs:enumeration value="LRU"/>
<xs:enumeration value="LFU"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="in-memory-format">
<xs:restriction base="non-space-string">
<xs:enumeration value="BINARY"/>
<xs:enumeration value="OBJECT"/>
<xs:enumeration value="CACHED"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="non-space-string">
<xs:restriction base="xs:string">
<xs:pattern value="\S.*"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="serialization">
<xs:sequence>
<xs:element name="portable-version" type="xs:unsignedInt" minOccurs="0" maxOccurs="1"/>
<xs:element name="use-native-byte-order" type="xs:boolean" minOccurs="0" maxOccurs="1" default="false"/>
<xs:element name="byte-order" minOccurs="0" maxOccurs="1" default="BIG_ENDIAN">
<xs:simpleType>
<xs:restriction base="non-space-string">
<xs:enumeration value="BIG_ENDIAN"/>
<xs:enumeration value="LITTLE_ENDIAN"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="enable-compression" type="xs:boolean" minOccurs="0" maxOccurs="1" default="false"/>
<xs:element name="enable-shared-object" type="xs:boolean" minOccurs="0" maxOccurs="1" default="false"/>
<xs:element name="allow-unsafe" type="xs:boolean" minOccurs="0" maxOccurs="1" default="false"/>
<xs:element name="data-serializable-factories" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="data-serializable-factory" type="serialization-factory" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="portable-factories" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="portable-factory" type="serialization-factory" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="serializers" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="global-serializer" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="serializer" type="serializer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="check-class-def-errors" type="xs:boolean" minOccurs="0" maxOccurs="1" default="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="serialization-factory">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="factory-id" use="required" type="xs:unsignedInt"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="serializer">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type-class" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="socket-interceptor">
<xs:sequence>
<xs:element name="class-name" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="properties" type="properties" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="enabled" default="false" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="property">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" use="required" type="non-space-string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="properties">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="property" type="property"/>
</xs:sequence>
</xs:complexType>
</xs:schema>