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

<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">
    <!--
        Configuration below demonstrates how to setup caches within grid nodes.
    -->
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="deploymentMode" value="SHARED"/>

        <!--
            For better performance set this property to false in case
            peer deployment is not used.
            Default value is false.
        -->
        <property name="peerClassLoadingEnabled" value="true"/>

        <!--
            Configure binary marshaller.
        -->
        <property name="marshaller">
            <bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
        </property>

        <!-- Set to local host address just for examples. -->
        <property name="localHost" value="127.0.0.1"/>

        <!-- Configure REST TCP server address. -->
        <property name="connectorConfiguration">
            <bean class="org.apache.ignite.configuration.ConnectorConfiguration">
                <property name="host" value="127.0.0.1"/>
            </bean>
        </property>

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

        <property name="cacheConfiguration">
            <!--
                Specify list of cache configurations here. Any property from
                CacheConfiguration interface can be configured here.
                Note that absolutely all configuration properties are optional.
            -->
            <list>
                <!--
                    Partitioned cache example configuration (Atomic mode).
                -->
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="partitioned"/>

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

                    <!-- Only atomic updates will be supported. -->
                    <property name="atomicityMode" value="ATOMIC"/>

                    <!-- Enable primary sync write mode. -->
                    <property name="writeSynchronizationMode" value="PRIMARY_SYNC"/>

                    <!--
                        This shows how to configure number of backups. The below configuration
                        sets the number of backups to 1 (which is default).
                    -->
                    <property name="backups" value="1"/>

                    <!-- Set synchronous rebalancing (default is asynchronous). -->
                    <property name="rebalanceMode" value="SYNC"/>
                </bean>

                <!--
                    Partitioned cache example configuration (Transactional mode).
                -->
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="partitioned_tx"/>

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

                    <!-- Transactional updates supported. -->
                    <property name="atomicityMode" value="TRANSACTIONAL"/>

                    <!-- Enable near cache to cache recently accessed data. -->
                    <property name="nearConfiguration">
                        <bean class="org.apache.ignite.configuration.NearCacheConfiguration"/>
                    </property>

                    <!--
                        Setting this value will cause local node to wait for remote commits.
                        However, it's important to set it this way in the examples as we assert on
                        conditions that usually assume full completion of transactions on all nodes.
                    -->
                    <property name="writeSynchronizationMode" value="FULL_SYNC"/>

                    <!--
                        This shows how to configure number of backups. The below configuration
                        sets the number of backups to 1 (which is default).
                    -->
                    <property name="backups" value="1"/>

                    <!-- Set synchronous rebalancing (default is asynchronous). -->
                    <property name="rebalanceMode" value="SYNC"/>
                </bean>

                <!--
                    Replicated cache example configuration.
                -->
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="replicated"/>

                    <!--
                        Setting this value will cause local node to wait for remote commits.
                        However, it's important to set it this way in the examples as we assert on
                        conditions that usually assume full completion of transactions on all nodes.
                    -->
                    <property name="writeSynchronizationMode" value="FULL_SYNC"/>

                    <!-- REPLICATED cache mode. -->
                    <property name="cacheMode" value="REPLICATED"/>

                    <!-- Set synchronous rebalancing (default is asynchronous). -->
                    <property name="rebalanceMode" value="SYNC"/>
                </bean>
            </list>
        </property>

        <!--
            Uncomment this to provide TCP discovery SPI (Amazon EC2).
        -->
        <!--
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder">
                        <property name="awsCredentials">
                            <bean class="com.amazonaws.auth.BasicAWSCredentials">
                                <constructor-arg value="YOUR_ACCESS_KEY_ID" />
                                <constructor-arg value="YOUR_SECRET_ACCESS_KEY" />
                            </bean>
                        </property>
                        <property name="bucketName" value="YOUR_BUCKET_NAME_IP_FINDER"/>
                    </bean>
                </property>
            </bean>
        </property>
        -->

        <!--
            Uncomment this to provide TCP discovery SPI (Local network).

            If path to shared file system is not explicitly provided,
            then only local nodes will be able to discover each other.
        -->
        <!--
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder">
                        <property name="path" value="work/disco/tcp"/>
                    </bean>
                </property>
            </bean>
        </property>
        -->

        <!--
            TCP discovery SPI configuration with predefined addresses.
            Use the addresses list to provide IP addresses of initial nodes in the grid
            (at least one address must be provided).

            Note:
            =====
            If running in distributed environment, you should change IP addresses to the actual IP addresses
            of the servers on your network. Not all addresses need to be specified, only the addresses
            of one or more servers which will always be started first.
        -->
        <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>
                                <!--
                                    List all IP/port configurations that potentially
                                    can be started first in examples. We are assuming
                                    grid of size 10 or less.
                                -->
                                <value>127.0.0.1:47500</value>
                                <value>127.0.0.1:47501</value>
                                <value>127.0.0.1:47502</value>
                                <value>127.0.0.1:47503</value>
                                <value>127.0.0.1:47504</value>
                                <value>127.0.0.1:47505</value>
                                <value>127.0.0.1:47506</value>
                                <value>127.0.0.1:47507</value>
                                <value>127.0.0.1:47508</value>
                                <value>127.0.0.1:47509</value>
                            </list>
                        </property>
                    </bean>
                    <!--
                    Uncomment this to provide IP finder using multicast for nodes discovery.
                    In addition to addresses received via multicast this finder can work with pre-configured
                    list of addresses.
                    -->
                    <!--
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
                        <property name="addresses">
                            <list>
                                <value>host1:port1</value>
                                <value>host2:port2</value>
                            </list>
                        </property>
                    </bean>
                    -->
                </property>
            </bean>
        </property>
    </bean>
</beans>
