<?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 cache.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd">
    <bean abstract="true" id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="localHost" value="127.0.0.1"/>
        <property name="connectorConfiguration"><null/></property>

        <property name="includeEventTypes">
            <util:constant static-field="org.apache.ignite.events.EventType.EVTS_CACHE"/>
        </property>

        <property name="cacheConfiguration">
            <list>
                <bean parent="cache-template">
                    <property name="name" value="partitioned"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                    <property name="onheapCacheEnabled" value="true"/>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="partitioned2"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="partitioned3"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                    <property name="backups" value="1"/>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="partitioned_atomic"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="ATOMIC"/>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="partitioned_near"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                    <property name="nearConfiguration">
                        <bean class="org.apache.ignite.configuration.NearCacheConfiguration" />
                    </property>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="partitioned_atomic_near"/>
                    <property name="cacheMode" value="PARTITIONED"/>
                    <property name="atomicityMode" value="ATOMIC"/>
                    <property name="nearConfiguration">
                        <bean class="org.apache.ignite.configuration.NearCacheConfiguration" />
                    </property>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="replicated"/>
                    <property name="cacheMode" value="REPLICATED"/>
                    <property name="atomicityMode" value="TRANSACTIONAL"/>
                </bean>

                <bean parent="cache-template">
                    <property name="name" value="replicated_atomic"/>
                    <property name="cacheMode" value="REPLICATED"/>
                    <property name="atomicityMode" value="ATOMIC"/>
                </bean>
            </list>
        </property>

        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                        <property name="addresses">
                            <list>
                                <!-- In distributed environment, replace with actual host IP address. -->
                                <value>127.0.0.1:47500..47501</value>
                            </list>
                        </property>
                    </bean>
                </property>
                <property name="socketTimeout" value="300" />
            </bean>
        </property>

        <property name="transactionConfiguration">
            <bean class="org.apache.ignite.configuration.TransactionConfiguration">
                <property name="txSerializableEnabled" value="true"/>
            </bean>
        </property>

        <!-- User attributes to allow to manipulate nodes in the cluster. -->
        <property name="userAttributes">
            <map>
                <entry key="TestAttribute" value="Value"/>
            </map>
        </property>
    </bean>

    <bean id="cache-template" abstract="true" class="org.apache.ignite.configuration.CacheConfiguration">
        <property name="rebalanceMode" value="SYNC"/>
        <property name="writeSynchronizationMode" value="FULL_SYNC"/>
        <property name="backups" value="1"/>
        <property name="eagerTtl" value="true"/>
    </bean>
</beans>
