<?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.
-->

<!--
    Ignite Spring configuration file to startup grid.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <context:property-placeholder />

    <bean id="base-ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" abstract="true">
        <property name="peerClassLoadingEnabled" value="false"/>

        <property name="metricsLogFrequency" value="5000"/>

        <property name="cacheConfiguration">
            <list>
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="atomic"/>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="ATOMIC"/>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />
                </bean>

                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="tx"/>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="TRANSACTIONAL"/>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />

                </bean>

                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="atomic-index"/>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="ATOMIC"/>

                    <property name="indexedTypes">
                        <list>
                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person1</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person2</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person8</value>
                        </list>
                    </property>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />
                </bean>

                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="atomic-index-with-eviction"/>

                    <property name="onheapCacheEnabled" value="true"/>

                    <property name="evictionPolicy">
                        <bean class="org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy">
                            <!-- default range (1000000) x (1 + default backups number (1)) / default nodes number (4) -->
                            <constructor-arg value="500000"/>
                        </bean>
                    </property>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="ATOMIC"/>

                    <property name="indexedTypes">
                        <list>
                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person1</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person2</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person8</value>
                        </list>
                    </property>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />
                </bean>

                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="query"/>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="ATOMIC"/>

                    <property name="indexedTypes">
                        <list>
                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Organization</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.Person</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.PersonNoIndex</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.SampleValue</value>

                            <value>java.lang.Integer</value>
                            <value>org.apache.ignite.yardstick.cache.model.PersonTextIndex</value>

                            <value>java.lang.Integer</value>
                            <value>java.lang.Integer</value>
                        </list>
                    </property>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />
                </bean>

                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="compute"/>

                    <property name="cacheMode" value="PARTITIONED"/>

                    <property name="atomicityMode" value="TRANSACTIONAL"/>

                    <property name="encryptionEnabled" value="${ENCRYPTION_ENABLED:false}" />
                </bean>
            </list>
        </property>

        <property name="includeEventTypes">
            <list/>
        </property>

        <property name="loadBalancingSpi">
            <bean class="org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi">
                <property name="perTask" value="false"/>
            </bean>
        </property>
    </bean>
</beans>
