<?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"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:hz="http://www.hazelcast.com/schema/config" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<context:component-scan base-package="org.apache.usergrid.persistence" />
	<context:annotation-config />

    <aop:config proxy-target-class="true"/>



	<bean id="propertyPlaceholderConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="properties" ref="properties" />
        <property name="systemPropertiesModeName">
			<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
		</property>
	</bean>

	<!-- The Time Resolution used for the cluster -->
	<bean id="microsecondsTimeResolution" class="me.prettyprint.cassandra.service.clock.MicrosecondsClockResolution" />
    <bean id="traceTagManager" class="org.apache.usergrid.persistence.cassandra.util.TraceTagManager"/>
    <bean id="traceTagReporter" class="org.apache.usergrid.persistence.cassandra.util.Slf4jTraceTagReporter"/>

    <bean id="taggedOpTimer" class="org.apache.usergrid.persistence.cassandra.util.TaggedOpTimer">
      <constructor-arg ref="traceTagManager"/>
    </bean>

	<bean id="cassandraHostConfigurator" class="me.prettyprint.cassandra.service.CassandraHostConfigurator">
        <constructor-arg value="${cassandra.url}"/>
        <!-- set the pool size if it's available.  If not go with 50 -->
        <property name="maxActive" value="${cassandra.connections:15}"/>
        <property name="cassandraThriftSocketTimeout" value="${cassandra.thriftSocketTimeout:5000}" />
        <property name="useSocketKeepalive" value="${cassandra.useSocketKeepalive:false}" />
        <!-- Fails on Java 8: <property name="clockResolution" ref="microsecondsTimeResolution" />-->
        <property name="opTimer" ref="taggedOpTimer"/>
        <property name="loadBalancingPolicy" ref="loadBalancingPolicy"/>
	</bean>

    <util:map id="cassandraCredentials" map-class="java.util.HashMap">
        <entry key="username" value="${cassandra.username}" />
        <entry key="password" value="${cassandra.password}" />
    </util:map>

	<bean id="cassandraCluster" class="me.prettyprint.cassandra.service.ThriftCluster">
		<constructor-arg value="${cassandra.cluster}" />
		<constructor-arg ref="cassandraHostConfigurator" />
        <constructor-arg ref="cassandraCredentials" />
	</bean>

    <bean id="loadBalancingPolicy" class="me.prettyprint.cassandra.connection.DynamicLoadBalancingPolicy"/>

    <bean id="injector"
   		class="org.apache.usergrid.corepersistence.GuiceFactory">
    </bean>


	<bean id="cassandraService"
		class="org.apache.usergrid.persistence.cassandra.CassandraService" init-method="init" destroy-method="destroy">
		<constructor-arg ref="properties" />
		<constructor-arg ref="cassandraCluster" />
		<constructor-arg ref="cassandraHostConfigurator" />
        <constructor-arg ref="injector"/>
		<property name="consistencyLevelPolicy" ref="consistencyLevelPolicy"/>
	</bean>

	<bean name="consistencyLevelPolicy" class="me.prettyprint.cassandra.model.ConfigurableConsistencyLevel">
        <property name="defaultReadConsistencyLevel" value="${cassandra.readcl}"/>
        <property name="defaultWriteConsistencyLevel" value="${cassandra.writecl}"/>
    </bean>

    <bean id="entityManagerFactory"
		class="org.apache.usergrid.corepersistence.CpEntityManagerFactory" scope="singleton">
		<constructor-arg ref="cassandraService" />
        <constructor-arg ref="counterUtils"/>
        <constructor-arg ref="injector"/>
    </bean>

    <bean id="queueManagerFactory"
          class="org.apache.usergrid.mq.cassandra.QueueManagerFactoryImpl">
        <constructor-arg ref="cassandraService" />
        <constructor-arg ref="counterUtils"/>
        <constructor-arg ref="injector"/>
        <constructor-arg value="${usergrid.queue.lock.timeout}"/>
    </bean>

    <bean id="simpleBatcher" class="org.apache.usergrid.count.SimpleBatcher">
        <property name="batchSubmitter" ref="batchSubmitter"/>
        <property name="batchInterval" value="${usergrid.counter.batch.interval}"/>
        <property name="batchSize" value="${usergrid.counter.batch.size}"/>
    </bean>

    <bean id="batchSubmitter" class="org.apache.usergrid.count.CassandraSubmitter">
        <constructor-arg ref="cassandraCounterStore"/>
    </bean>

    <bean id="cassandraCounterStore" class="org.apache.usergrid.count.CassandraCounterStore">
        <constructor-arg>
            <bean id="keyspace"
                  factory-bean="cassandraService"
                  factory-method="getUsergridApplicationKeyspace"/>
        </constructor-arg>
    </bean>

    <bean id="counterUtils" class="org.apache.usergrid.persistence.cassandra.CounterUtils">
        <property name="batcher" ref="simpleBatcher"/>
        <property name="counterType" value="n"/>
    </bean>

    <bean id="usergridSystemMonitor" class="org.apache.usergrid.system.UsergridSystemMonitor">
        <constructor-arg value="${usergrid.version.build}"/>
        <constructor-arg ref="cassandraCluster"/>
        <constructor-arg ref="properties"/>
    </bean>

    <bean id="mailUtils" class="org.apache.usergrid.utils.MailUtils" />

    <!-- ============================================================== -->
    <!-- Scheduler Settings from removed Scheduler Module's app context -->
    <!-- ============================================================== -->

    <bean id="jobSchedulerBackgroundService" class="org.apache.usergrid.batch.service.JobSchedulerService">
      <property name="jobFactory" ref="jobFactory" />
      <property name="jobAccessor" ref="schedulerService" />
      <property name="workerSize" value="${usergrid.scheduler.job.workers}" />
      <property name="interval" value="${usergrid.scheduler.job.interval}" />
      <property name="maxFailCount" value="${usergrid.scheduler.job.maxfail}" />
      <property name="injector" ref="injector" />
    </bean>

    <bean id="schedulerService" class="org.apache.usergrid.batch.service.SchedulerServiceImpl">
      <property name="jobTimeout" value="${usergrid.scheduler.job.timeout}" />
      <property name="jobQueueName" value="${usergrid.scheduler.job.queueName}" />
    </bean>

    <bean id="jobFactory" class="org.apache.usergrid.batch.UsergridJobFactory" />


    <context:component-scan base-package="org.apache.usergrid.batch.job" />
    <context:annotation-config />

</beans>
